From f88109c3a69e2f455c042de909019ede3c16bcb7 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 26 Feb 2021 16:18:05 +0300 Subject: [PATCH] fix int(port) --- custom_components/mega/binary_sensor.py | 4 ++-- custom_components/mega/hub.py | 6 +++--- custom_components/mega/light.py | 3 ++- custom_components/mega/sensor.py | 4 +++- custom_components/mega/switch.py | 3 ++- custom_components/mega/tools.py | 9 ++++++++- 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/custom_components/mega/binary_sensor.py b/custom_components/mega/binary_sensor.py index 874af69..d7f81f5 100644 --- a/custom_components/mega/binary_sensor.py +++ b/custom_components/mega/binary_sensor.py @@ -20,7 +20,7 @@ from homeassistant.helpers.template import Template from .const import EVENT_BINARY_SENSOR, DOMAIN, CONF_CUSTOM, CONF_SKIP, CONF_INVERT, CONF_RESPONSE_TEMPLATE from .entities import MegaPushEntity from .hub import MegaD - +from .tools import int_ignore lg = logging.getLogger(__name__) @@ -51,7 +51,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn devices = [] customize = hass.data.get(DOMAIN, {}).get(CONF_CUSTOM, {}) for port, cfg in config_entry.data.get('binary_sensor', {}).items(): - port = int(port) + port = int_ignore(port) c = customize.get(mid, {}).get(port, {}) if c.get(CONF_SKIP, False): continue diff --git a/custom_components/mega/hub.py b/custom_components/mega/hub.py index 6dfc392..8124d44 100644 --- a/custom_components/mega/hub.py +++ b/custom_components/mega/hub.py @@ -24,7 +24,7 @@ from .const import ( ) from .entities import set_events_off, BaseMegaEntity, MegaOutPort from .exceptions import CannotConnect, NoPort -from .tools import make_ints +from .tools import make_ints, int_ignore TEMP_PATT = re.compile(r'temp:([01234567890\.]+)') HUM_PATT = re.compile(r'hum:([01234567890\.]+)') @@ -394,7 +394,7 @@ class MegaD: if port == 'cmd': return try: - port = int(port) + port = int_ignore(port) except: self.lg.warning('can not process %s', msg) return @@ -423,7 +423,7 @@ class MegaD: asyncio.run_coroutine_threadsafe(self._notify(port, value), self.loop) def subscribe(self, port, callback): - port = int(port) + port = int_ignore(port) self.lg.debug( f'subscribe %s %s', port, callback ) diff --git a/custom_components/mega/light.py b/custom_components/mega/light.py index 3a4d7c9..d4f45ab 100644 --- a/custom_components/mega/light.py +++ b/custom_components/mega/light.py @@ -26,6 +26,7 @@ from .const import ( CONF_CUSTOM, CONF_SKIP, ) +from .tools import int_ignore lg = logging.getLogger(__name__) @@ -61,7 +62,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn devices = [] customize = hass.data.get(DOMAIN, {}).get(CONF_CUSTOM, {}) for port, cfg in config_entry.data.get('light', {}).items(): - port = int(port) + port = int_ignore(port) c = customize.get(mid, {}).get(port, {}) if c.get(CONF_SKIP, False) or c.get(CONF_DOMAIN, 'light') != 'light': continue diff --git a/custom_components/mega/sensor.py b/custom_components/mega/sensor.py index a6417a8..a25e9df 100644 --- a/custom_components/mega/sensor.py +++ b/custom_components/mega/sensor.py @@ -22,6 +22,8 @@ from .const import CONF_KEY, TEMP, HUM, W1, W1BUS, CONF_CONV_TEMPLATE from .hub import MegaD import re +from .tools import int_ignore + lg = logging.getLogger(__name__) TEMP_PATT = re.compile(r'temp:([01234567890\.]+)') HUM_PATT = re.compile(r'hum:([01234567890\.]+)') @@ -81,7 +83,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn hub: MegaD = hass.data['mega'][mid] devices = [] for port, cfg in config_entry.data.get('sensor', {}).items(): - port = int(port) + port = int_ignore(port) for data in cfg: hub.lg.debug(f'add sensor on port %s with data %s', port, data) sensor = Mega1WSensor( diff --git a/custom_components/mega/switch.py b/custom_components/mega/switch.py index 1178874..36f0884 100644 --- a/custom_components/mega/switch.py +++ b/custom_components/mega/switch.py @@ -18,6 +18,7 @@ from homeassistant.core import HomeAssistant from . import hub as h from .entities import MegaOutPort from .const import CONF_DIMMER, CONF_SWITCH, DOMAIN, CONF_CUSTOM, CONF_SKIP +from .tools import int_ignore _LOGGER = lg = logging.getLogger(__name__) @@ -50,7 +51,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn customize = hass.data.get(DOMAIN, {}).get(CONF_CUSTOM, {}) for port, cfg in config_entry.data.get('light', {}).items(): - port = int(port) + port = int_ignore(port) c = customize.get(mid, {}).get(port, {}) if c.get(CONF_SKIP, False) or c.get(CONF_DOMAIN, 'light') != 'switch': continue diff --git a/custom_components/mega/tools.py b/custom_components/mega/tools.py index 9294179..43973ea 100644 --- a/custom_components/mega/tools.py +++ b/custom_components/mega/tools.py @@ -10,4 +10,11 @@ def make_ints(d: dict): if 'm' not in d: d['m'] = 0 if 'click' not in d: - d['click'] = 0 \ No newline at end of file + d['click'] = 0 + + +def int_ignore(x): + try: + return int(x) + except (TypeError, ValueError): + return x \ No newline at end of file