diff --git a/custom_components/mega/hub.py b/custom_components/mega/hub.py index 78efea4..d53ff25 100644 --- a/custom_components/mega/hub.py +++ b/custom_components/mega/hub.py @@ -530,10 +530,16 @@ class MegaD: :return: """ _params = tuple(params.items()) + delay = None + if 'delay' in params: + delay = params.pop('delay') ret = { _params: await self.request(**params) } self.lg.debug('i2c response: %s', ret) + if delay: + self.lg.debug('delay %s', delay) + await asyncio.sleep(delay) return ret async def get_config(self, nports=37): diff --git a/custom_components/mega/i2c.py b/custom_components/mega/i2c.py index b2af431..e066a48 100644 --- a/custom_components/mega/i2c.py +++ b/custom_components/mega/i2c.py @@ -1,3 +1,4 @@ +from dataclasses import dataclass, field from urllib.parse import parse_qsl, urlparse from bs4 import BeautifulSoup from homeassistant.const import ( @@ -27,6 +28,12 @@ def parse_scan_page(page: str): elif c is Request: req.append(params) continue + elif isinstance(c, Request): + if c.delay: + params = params.copy() + params['delay'] = c.delay + req.append(params) + continue elif isinstance(c, tuple): suffix, c = c elif isinstance(c, str): @@ -55,8 +62,9 @@ class Skip: pass +@dataclass class Request: - pass + delay: float = None i2c_classes = { @@ -92,7 +100,7 @@ i2c_classes = { ('object', DEVICE_CLASS_TEMPERATURE), ], 'ptsensor': [ - Request, # запрос на измерение + Request(delay=1), # запрос на измерение DEVICE_CLASS_PRESSURE, DEVICE_CLASS_TEMPERATURE, ],