Compare commits

...

3 Commits

Author SHA1 Message Date
Andrey
137eb8b6ba fix errors 2021-02-28 21:15:48 +03:00
Andrey
a2f412b89e fix errors 2021-02-28 20:16:04 +03:00
Andrey
8fa14cdbc5 fix errors 2021-02-28 20:15:47 +03:00
5 changed files with 21 additions and 12 deletions

View File

@@ -67,6 +67,10 @@ class MegaBinarySensor(BinarySensorEntity, MegaPushEntity):
super().__init__(*args, **kwargs)
self._is_on = None
self._attrs = None
self._click_task = None
async def _click(self):
await self.customize.get
@property
def state_attributes(self):

View File

@@ -63,7 +63,7 @@ async def validate_input(hass: core.HomeAssistant, data):
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle a config flow for mega."""
VERSION = 15
VERSION = 16
CONNECTION_CLASS = config_entries.CONN_CLASS_ASSUMED
async def async_step_user(self, user_input=None):
@@ -118,7 +118,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
reload = user_input.pop(CONF_RELOAD)
cfg = dict(self.config_entry.data)
cfg.update(user_input)
hub = await get_hub(self.hass, self.config_entry.data)
hub = await get_hub(self.hass, cfg)
if reload:
await hub.start()
new = await hub.get_config(nports=user_input.get(CONF_NPORTS, 37))

View File

@@ -32,6 +32,8 @@ CONF_POLL_OUTS = 'poll_outs'
CONF_FORCE_D = 'force_d'
CONF_DEF_RESPONSE = 'def_response'
CONF_RESTORE_ON_RESTART = 'restore_on_restart'
CONF_CLICK_TIME = 'click_time'
CONF_LONG_TIME = 'long_time'
PLATFORMS = [
"light",
"switch",

View File

@@ -106,23 +106,25 @@ class MegaView(HomeAssistantView):
else:
pt_orig = hub.ext_in.get(port)
if pt_orig is None:
hub.lg.warning(f'can not find extender for int port {port}')
hub.lg.warning(f'can not find extender for int port {port}, '
f'have ext_int: {hub.ext_in}, ext: {hub.extenders}')
return Response(status=200)
for e, v in data.items():
_data = data.copy()
if e.startswith('ext'):
idx = e[3:]
pt = f'{pt_orig}e{idx}'
data['pt_orig'] = pt_orig
data['value'] = 'ON' if v == '1' else 'OFF'
data['m'] = 1 if data[e] == '0' else 0 # имитация поведения обычного входа, чтобы события обрабатывались аналогично
hub.values[pt] = data
_data['pt_orig'] = pt_orig
_data['value'] = 'ON' if v == '1' else 'OFF'
_data['m'] = 1 if _data[e] == '0' else 0 # имитация поведения обычного входа, чтобы события обрабатывались аналогично
hub.values[pt] = _data
for cb in self.callbacks[hub.id][pt]:
cb(data)
cb(_data)
act = hub.ext_act.get(pt)
template: Template = self.templates.get(hub.id, {}).get(port, hub.def_response)
if template is not None:
template.hass = hass
ret = template.async_render(data)
ret = template.async_render(_data)
if ret == 'd' and act:
await hub.request(cmd=act)
ret = 'd' if hub.force_d else ''

View File

@@ -82,7 +82,7 @@ class MegaD:
restore_on_restart=False,
extenders=None,
ext_in=None,
ext_act=None,
ext_acts=None,
**kwargs,
):
"""Initialize."""
@@ -99,7 +99,7 @@ class MegaD:
self.http = None
self.extenders = extenders or []
self.ext_in = ext_in or {}
self.ext_act = ext_act or {}
self.ext_act = ext_acts or {}
self.poll_outs = poll_outs
self.update_all = update_all if update_all is not None else True
self.nports = nports
@@ -539,7 +539,8 @@ class MegaD:
])
elif cfg == MCP230:
extenders.append(port)
ext_int[int(cfg.inta)] = port
if cfg.inta:
ext_int[int_ignore(cfg.inta)] = port
values = await self.request(pt=port, cmd='get')
values = values.split(';')
for n in range(len(values)):