add hex_to_float option

add auto config reload on megad restart
fix reloading issues
This commit is contained in:
Andrey
2021-03-05 11:45:41 +03:00
parent 84f677656a
commit 149d30e921
3 changed files with 15 additions and 20 deletions

View File

@@ -174,10 +174,9 @@ async def updater(hass: HomeAssistant, entry: ConfigEntry):
:param entry:
:return:
"""
hub: MegaD = hass.data[DOMAIN][entry.data[CONF_ID]]
hub.poll_interval = entry.options[CONF_SCAN_INTERVAL]
hub.port_to_scan = entry.options.get(CONF_PORT_TO_SCAN, 0)
entry.data = entry.options
# hub: MegaD = hass.data[DOMAIN][entry.data[CONF_ID]]
# hub.poll_interval = entry.options[CONF_SCAN_INTERVAL]
# hub.port_to_scan = entry.options.get(CONF_PORT_TO_SCAN, 0)
await hass.config_entries.async_reload(entry.entry_id)
return True

View File

@@ -117,24 +117,19 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
async def async_step_init(self, user_input=None):
"""Manage the options."""
new_naming = self.config_entry.data.get('new_naming', False)
hub = await get_hub(self.hass, self.config_entry.data)
if user_input is not None:
reload = user_input.pop(CONF_RELOAD)
cfg = dict(self.config_entry.data)
cfg.update(user_input)
hub = await get_hub(self.hass, cfg)
if reload:
await hub.start()
new = await hub.get_config(nports=user_input.get(CONF_NPORTS, 37))
await hub.stop()
_LOGGER.debug(f'new config: %s', new)
cfg = dict(self.config_entry.data)
for x in REMOVE_CONFIG:
cfg.pop(x, None)
cfg.update(new)
cfg['new_naming'] = new_naming
self.config_entry.data = cfg
await get_hub(self.hass, cfg)
if reload:
id = self.config_entry.data.get('id', self.config_entry.entry_id)
hub: MegaD = self.hass.data[DOMAIN].get(id)
await hub.reload(reload_entry=False)
return self.async_create_entry(
title='',
data=cfg,

View File

@@ -65,13 +65,13 @@ class MegaD:
def __init__(
self,
hass: HomeAssistant,
config: ConfigEntry,
loop: asyncio.AbstractEventLoop,
host: str,
password: str,
mqtt: mqtt.MQTT,
lg: logging.Logger,
id: str,
config: ConfigEntry = None,
mqtt_inputs: bool = True,
mqtt_id: str = None,
scan_interval=60,
@@ -625,7 +625,7 @@ class MegaD:
stime=datetime.now().strftime('%H:%M:%S')
)
async def reload(self):
async def reload(self, reload_entry=True):
new = await self.get_config(nports=self.nports)
self.lg.debug(f'new config: %s', new)
cfg = dict(self.config.data)
@@ -633,4 +633,5 @@ class MegaD:
cfg.pop(x, None)
cfg.update(new)
self.config.data = cfg
await self.hass.config_entries.async_reload(self.config.entry_id)
if reload_entry:
await self.hass.config_entries.async_reload(self.config.entry_id)