Closed almazikv closed 1 year ago
Может быть связано: # 497 (комментарий)
У меня похожая проблема - после перезагрузки роутера интеграция 1.6.2 не подхватывает шлюз (и соответственно все подключенные к нему устройства). С сетью проблем не вижу (всё зафиксировано и на статике, шлюз с сервера HA пингуется - да и в MiHome всё работает, т.е. по сети подцепляется), шлюз прошит на рекомендованную прошивку 1.5.0_0102, HA на текущий момент 2021.11.5. Все остальные устройства к HA цепляются (wifi светильники, пылесос и т.п.). Если перезагрузить интеграцию либо хост целиком - всё сразу работает без проблем и отвалов.... С анализом логов туго )
Fixed in v1.6.3
@AlexxIT на версии 1.6.3 также отваливается но ошибка теперь такая:
Logger: custom_components.xiaomi_gateway3.core.mini_mqtt
Source: custom_components/xiaomi_gateway3/core/mini_mqtt.py:213
Integration: Xiaomi Gateway 3 (documentation, issues)
First occurred: 14:01:02 (3 occurrences)
Last logged: 14:10:38
Can't disconnect from gateway
Can't close connection
Can't publish b'{"cmd":"write","did":"lumi.158d0003019ef6","params":[{"res_name":"4.1.85","value":0}]}' to zigbee/recv
Traceback (most recent call last):
File "/config/custom_components/xiaomi_gateway3/core/mini_mqtt.py", line 185, in disconnect
await self.writer.drain()
File "/usr/local/lib/python3.9/asyncio/streams.py", line 375, in drain
raise exc
File "/config/custom_components/xiaomi_gateway3/core/gateway3.py", line 584, in run_forever
async for msg in self.mqtt:
File "/config/custom_components/xiaomi_gateway3/core/mini_mqtt.py", line 285, in __anext__
raise e
File "/config/custom_components/xiaomi_gateway3/core/mini_mqtt.py", line 262, in __anext__
msg: MQTTMessage = await asyncio.wait_for(
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 481, in wait_for
return fut.result()
File "/config/custom_components/xiaomi_gateway3/core/mini_mqtt.py", line 213, in read
raw = await self.reader.read(1)
File "/usr/local/lib/python3.9/asyncio/streams.py", line 684, in read
await self._wait_for_data('read')
File "/usr/local/lib/python3.9/asyncio/streams.py", line 517, in _wait_for_data
await self._waiter
File "/usr/local/lib/python3.9/asyncio/selector_events.py", line 856, in _read_ready__data_received
data = self._sock.recv(self.max_size)
ConnectionResetError: [Errno 104] Connection reset by peer
У меня ночная автоматизация по перезапуску интеграции при недоступности устройств тоже сработала. Значит в течении пяти минут не восстановилось соединение автоматом.
Да, 1.6.3 ситуацию не изменила....
almazikv, а можете пример автоматизации написать?
Да, 1.6.3 ситуацию не изменила....
almazikv, а можете пример автоматизации написать?
trigger: - platform: state entity_id: sensor.veranda_temperature (замените на ваш сенсор - любой который подключен через xg3) for: hours: 0 minutes: 5 seconds: 0 milliseconds: 0 to: unavailable condition: [] action: - service: homeassistant.reload_config_entry data: entry_id: xxxxxx (возьмите из файла /config/.storage/core.config_entries, переменная entry_id где ваша интеграция xg3 - где именно ip адрес шлюза )
@rauko27 это нормально перехваченная ошибка. То есть компонент должен продолжить работу в обычном режиме.
@AlexxIT к сожалению этого не происходит - в журнале просто повторяется эта ошибка при любом действии с зигби устройством подключенным к гв3
@rauko27 вы можете зайти на свой шлюз через Telnet, выполнить команду top
и выложить сюда первые три строчки.
@AlexxIT Я не очень знаком с консольными командами. Это нужно было?
Mem: 55408K used, 2992K free, 0K shrd, 5088K buff, 24256K cached CPU: 2.5% usr 6.9% sys 0.0% nic 90.2% idle 0.0% io 0.0% irq 0.1% sirq Load average: 2.67 2.68 2.67 2/95 3346
@rauko27 это. Приложения на шлюзе работают в обычном режиме. У меня было предположение, что сам шлюз глючит
the problem persist on 1.6.4
@maury77 can you try master version?
У меня после обновления на 1.6.4 от шлюза отвалились все датчики, как ZigBee, так и BlueTooth. Перезагрузка не помогала. После отката на 1.6.3 датчики вернулись. Шлюз в режиме HA (без z2m). Логи не смотрел, нужно было быстро вернуть в рабочее состояние.
@maury77 can you try master version?
Yes i use 1.6.4
now i build an automatiobto Reload Integration After 10 minutes of unavaibility
@maury77 master version not same as 1.6.4
Ok now I have installed the master ..
and starting monitoring the issue
Got this in the logs after network failure/restore:
2022-01-25 23:20:50 DEBUG xiaomi_cloud MiCloud step1
2022-01-25 23:20:50 DEBUG xiaomi_cloud MiCloud step2
2022-01-25 23:20:51 DEBUG xiaomi_cloud MiCloud step3
2022-01-25 23:20:51 DEBUG main Loaded from MiCloud 6 devices
2022-01-25 23:20:51 DEBUG gateway3 192.168.31.83 | Main loop step 0
2022-01-25 23:21:06 WARNING mini_miio 192.168.31.83 | Device offline
2022-01-25 23:21:06 DEBUG gateway3 192.168.31.83 | Can't enable telnet
Hub connected to the network:
PING 192.168.31.83 (192.168.31.83): 56 data bytes
64 bytes from 192.168.31.83: icmp_seq=0 ttl=64 time=18.478 ms
64 bytes from 192.168.31.83: icmp_seq=1 ttl=64 time=12.217 ms
64 bytes from 192.168.31.83: icmp_seq=2 ttl=64 time=12.944 ms
64 bytes from 192.168.31.83: icmp_seq=3 ttl=64 time=12.914 ms
64 bytes from 192.168.31.83: icmp_seq=4 ttl=64 time=6.837 ms
Hello @AlexxIT , when I changed "gateway3.py: async def run_forever(self)" from this
# if not telnet - enable it
if not await self.check_port(23) and \
not await self.enable_telnet():
await asyncio.sleep(30)
continue
to this:
port_is_open = await self.check_port(23)
# if not telnet - enable it
if not port_is_open and \
not await self.enable_telnet():
await asyncio.sleep(30)
continue
it solved the issue, could you confirm it?
It seems python does parallel computation in the if statement.
I can't confirm it. Your changes make no sense
Yes, you are right. (my bad, sorry)
Please reopen the issue if it is still relevant
In my summer house I have a script that restarts my mikrotik router every night. So during restart my HA loses connection to Xiaomi gateway 3. After upgrade to 1.6.2 I see following problem: my devices remain with state "unavailable" in HA after network is restored. I wrote an automain that reloads an integration if devices are unavailable for more than 5 minutes. It works as workaround. I see no logs from integration in HA for this period (standard log level)