From d0769b5b02757e97b7133f82de60ec94a101793f Mon Sep 17 00:00:00 2001 From: Andrey Date: Sat, 27 Feb 2021 17:39:54 +0300 Subject: [PATCH] fix errors --- custom_components/mega/config_flow.py | 2 +- custom_components/mega/http.py | 7 ++++++- custom_components/mega/hub.py | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/custom_components/mega/config_flow.py b/custom_components/mega/config_flow.py index f254117..48834e0 100644 --- a/custom_components/mega/config_flow.py +++ b/custom_components/mega/config_flow.py @@ -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 = 12 + VERSION = 13 CONNECTION_CLASS = config_entries.CONN_CLASS_ASSUMED async def async_step_user(self, user_input=None): diff --git a/custom_components/mega/http.py b/custom_components/mega/http.py index c6da5e3..fb7033f 100644 --- a/custom_components/mega/http.py +++ b/custom_components/mega/http.py @@ -97,10 +97,15 @@ class MegaView(HomeAssistantView): if port is not None: if set(data).issubset(ext): ret = '' # пока ответ всегда пустой, неясно какая будет реакция на непустой ответ + pt_orig = hub.ext_in.get(port) + if pt_orig is None: + hub.lg.warning(f'can not find extender for int port {port}') + return Response(status=200) for e in ext: if e in data: idx = e[-1] - pt = f'{port}e{idx}' + pt = f'{pt_orig}e{idx}' + data['pt'] = pt_orig data['value'] = 'ON' if data[e] == '1' else 'OFF' data['m'] = 1 if data[e] == '0' else 0 # имитация поведения обычного входа, чтобы события обрабатывались аналогично hub.values[pt] = data diff --git a/custom_components/mega/hub.py b/custom_components/mega/hub.py index 8124d44..1527b54 100644 --- a/custom_components/mega/hub.py +++ b/custom_components/mega/hub.py @@ -81,6 +81,7 @@ class MegaD: protected=True, restore_on_restart=False, extenders=None, + ext_in=None, **kwargs, ): """Initialize.""" @@ -96,6 +97,7 @@ class MegaD: else: self.http = None self.extenders = extenders or [] + self.ext_in = ext_in or {} self.poll_outs = poll_outs self.update_all = update_all if update_all is not None else True self.nports = nports @@ -514,6 +516,7 @@ class MegaD: ret = defaultdict(lambda: defaultdict(list)) ret['mqtt_id'] = await self.get_mqtt_id() ret['extenders'] = extenders = [] + ret['ext_in'] = ext_int = {} async for port, cfg in self.scan_ports(nports): if cfg.pty == "0": ret['binary_sensor'][port].append({}) @@ -533,6 +536,7 @@ class MegaD: ]) elif cfg == MCP230: extenders.append(port) + ext_int[cfg.inta] = port values = await self.request(pt=port, cmd='get') values = values.split(';') for n in range(len(values)):