mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-11 17:14:28 +05:00
fix 1-wire updating while busy
This commit is contained in:
@@ -161,6 +161,7 @@ async def async_remove_entry(hass, entry) -> None:
|
|||||||
return
|
return
|
||||||
_LOGGER.debug(f'remove {id}')
|
_LOGGER.debug(f'remove {id}')
|
||||||
_hubs.pop(id, None)
|
_hubs.pop(id, None)
|
||||||
|
hass.data[DOMAIN].pop(id, None)
|
||||||
task: asyncio.Task = _POLL_TASKS.pop(id, None)
|
task: asyncio.Task = _POLL_TASKS.pop(id, None)
|
||||||
if task is not None:
|
if task is not None:
|
||||||
task.cancel()
|
task.cancel()
|
||||||
|
|||||||
@@ -209,6 +209,8 @@ class MegaD:
|
|||||||
def parse_response(self, ret):
|
def parse_response(self, ret):
|
||||||
if ret is None:
|
if ret is None:
|
||||||
raise NoPort()
|
raise NoPort()
|
||||||
|
if 'busy' in ret:
|
||||||
|
return None
|
||||||
if ':' in ret:
|
if ':' in ret:
|
||||||
ret = PATT_SPLIT.split(ret)
|
ret = PATT_SPLIT.split(ret)
|
||||||
ret = {'value': dict([
|
ret = {'value': dict([
|
||||||
@@ -229,13 +231,16 @@ class MegaD:
|
|||||||
"""
|
"""
|
||||||
self.lg.debug(f'get port %s', port)
|
self.lg.debug(f'get port %s', port)
|
||||||
if self.mqtt is None or force_http:
|
if self.mqtt is None or force_http:
|
||||||
ret = await self.request(pt=port, cmd=http_cmd)
|
if http_cmd == 'list':
|
||||||
ret = self.parse_response(ret)
|
await self.request(pt=port, cmd='conv')
|
||||||
self.lg.debug('parsed: %s', ret)
|
|
||||||
if http_cmd == 'list' and isinstance(ret, dict) and 'value' in ret:
|
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
ret = await self.request(pt=port, cmd=http_cmd)
|
ret = self.parse_response(await self.request(pt=port, cmd=http_cmd))
|
||||||
ret = self.parse_response(ret)
|
ntry = 0
|
||||||
|
while http_cmd == 'list' and ret is None and ntry < 3:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
ret = self.parse_response(await self.request(pt=port, cmd=http_cmd))
|
||||||
|
ntry += 1
|
||||||
|
self.lg.debug('parsed: %s', ret)
|
||||||
self.values[port] = ret
|
self.values[port] = ret
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user