Dlaczego HA nie uaktualnia encji z zigbee2mqtt?
Czasem uda mi się wyczarować jakąś sekwencję restartów, zmian nazw i jeszcze innych zaklęć i niektóre encje mi wracają a czasem po restarcie AIS po prostu żadna siła nie jest wstanie zmienić stanu encji z nieznany na taki, który krąży po MQTT
Mało tego, na podglądzie stanu urządzenia atrybut ma wartość, ale encja ma wartość nieznany. I konia z rzędem temu kto podpowie ki diabeł tu miesza
Akurat ten czujnik odpowiada za automatyzację oświetlenia nocnego i bez niego wszystko szlag trafia
Że nie wspomnę o czujnikach otwarcia okien i drzwi. W MQTT są prawidłowe stany, w podglądzie atrybutów też, ale encja ma wartość nieznany i co zrobisz jak nic nie zrobisz?
źle tam napisałem, chodzi o baze mqtt żebyś usunął
w zasadzie dobrze wtedy też napisałem,
usuń dwie bazy mqtt i z2m
wszystko co zostaje retain żeby skasowało
Powinny być gdzieś tu: (ja nie mam mqtt i z2m na bramce więc nie widzę)
/data/data/pl.sviete.dom/files/usr/etc/mosquitto/
/data/data/pl.sviete.dom/files/home/zigbee2mqtt
końcówka plików *.DB
Nie usuwaj żadnych plików z konfiguracją (tych gdzie masz urządzenia wypisane)
tylko bazy danych, mozesz je sobie skopiować, w razie czego podmienisz,
po usunięciu i restarcie tworzy się sama nowa baza.
Robiłem tak parę razy jak mieszałem bo były właśnie problemy z błędnymi stanami itp.
Nie pomogło nic Lista urządzeń zrobiła się pusta i nie było żadnego kontaktu w urządzeniami zigbee
Niestety, ogarnęła mnie bezsilność i przeogromna deprecha na myśl o tym, że muszę postawić bramkę od nowa i ustawić od nowa pierdyliard encji, lovelace, automatyzacje i wiele innych rzeczy, nie mając żadnej pewności, że po wszystkim kolejny restart/aktualizacja bramki wywali mi wszystko ponownie w kosmos
Sprawdzałem na jednym kontaktronie. Usunąłem go z zigbee2mqtt. Ładnie się wyczyściły informacje o urządzeniu i encjach z MQTT. W AIS urządzenie zostało. Usunąłem je ręcznie.
Następnie znów dodałem urządzenie w zigbee2mqtt. AIS wypluł w logach:
2|ais | 2022-07-03 12:50:51 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 contact, queuing update
2|ais | 2022-07-03 12:50:52 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 battery_low, queuing update
2|ais | 2022-07-03 12:50:52 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor 0x00124b0022ea2033 battery, queuing update
2|ais | 2022-07-03 12:50:52 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b0022ea2033 voltage
2|ais | 2022-07-03 12:50:52 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b0022ea2033 linkquality
2|ais | 2022-07-03 12:50:52 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new sensor.mqtt entity: sensor.0x00124b0022ea2033_voltage
2|ais | 2022-07-03 12:50:52 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new sensor.mqtt entity: sensor.0x00124b0022ea2033_linkquality
Encje binary_sensor i sensor się nie zarejestrowały w HA
Następnie w zigbee2mqtt zmieniłem nazwę urządzenia z domyślnego 0x00124b0022ea2033 na ZBK30_0x00124b0022ea2033 włącznie z opcją zmiany nazw encji w HA. Logi wypluły:
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 contact, queuing update
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 battery_low, queuing update
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor 0x00124b0022ea2033 battery, queuing update
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 contact, queuing update
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 battery_low, queuing update
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor 0x00124b0022ea2033 battery, queuing update
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b0022ea2033 voltage
2|ais | 2022-07-03 12:53:14 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b0022ea2033 linkquality
Nazwa się zmieniła, w encjach nic się nie dodało…
Ponownie zmieniłem nazwę urządzenia w zigbee2mqtt na ZBK30 (docelowa) ale bez zmiany nazw encji w HA. Logi wypluły coś takiego:
2|ais | 2022-07-03 12:54:48 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 contact, queuing update
2|ais | 2022-07-03 12:54:48 ERROR (MainThread) [homeassistant.util.logging] Exception in attributes_message_received when handling msg on 'zigbee2mqtt/ZBK30': '{"battery":64.5,"battery_low":false,"contact":false,"linkquality":167,"tamper":false,"voltage":2900}'
2|ais | Traceback (most recent call last):
2|ais | File "/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/mqtt/debug_info.py", line 46, in wrapper
2|ais | _log_message(msg)
2|ais | File "/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/mqtt/debug_info.py", line 36, in _log_message
2|ais | messages = debug_info["entities"][entity_id]["subscriptions"][
2|ais | KeyError: 'sensor.zbk30_battery'
2|ais | 2022-07-03 12:54:48 ERROR (MainThread) [homeassistant.util.logging] Exception in attributes_message_received when handling msg on 'zigbee2mqtt/ZBK30': '{"battery":64.5,"battery_low":false,"contact":false,"linkquality":167,"tamper":false,"voltage":2900}'
2|ais | Traceback (most recent call last):
2|ais | File "/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/mqtt/debug_info.py", line 46, in wrapper
2|ais | _log_message(msg)
2|ais | File "/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/mqtt/debug_info.py", line 36, in _log_message
2|ais | messages = debug_info["entities"][entity_id]["subscriptions"][
2|ais | KeyError: 'binary_sensor.zbk30_contact'
2|ais | 2022-07-03 12:54:48 ERROR (MainThread) [homeassistant.util.logging] Exception in attributes_message_received when handling msg on 'zigbee2mqtt/ZBK30': '{"battery":64.5,"battery_low":false,"contact":false,"linkquality":167,"tamper":false,"voltage":2900}'
2|ais | Traceback (most recent call last):
2|ais | File "/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/mqtt/debug_info.py", line 46, in wrapper
2|ais | _log_message(msg)
2|ais | File "/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/mqtt/debug_info.py", line 36, in _log_message
2|ais | messages = debug_info["entities"][entity_id]["subscriptions"][
2|ais | KeyError: 'binary_sensor.zbk30_battery_low'
2|ais | 2022-07-03 12:54:48 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b0022ea2033 battery_low, queuing update
2|ais | 2022-07-03 12:54:48 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor 0x00124b0022ea2033 battery, queuing update
2|ais | 2022-07-03 12:54:48 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b0022ea2033 voltage
2|ais | 2022-07-03 12:54:48 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b0022ea2033 linkquality
Tym razem coś dodatkowego się pojawiło. Ale jeśli chodzi o kartę urządzenia w HA żadnej encji dodatkowej nie dodało…
Czy może HA trzyma coś w jakiejś swojej magicznej kolejce, która się gdzieś przypchała i nie aktualizuje tego co dostaje z MQTT?
Na razie z automatyzacją poradziłem sobie dorabiając własną encję sensora bazującą na danych z MQTT czujnika zmierzchu zigbee z zigbee2mqtt, skoro HA uważa, że czujnik jest nieaktywny…
Może z czasem przyjdzie jakaś informacja dlaczego u mnie HA uważa, że wszystkie urządzenia zigbee są nieaktywne na podstawie danych z integracji zigbee2mqtt.