☠ Nie ogarniam tej kuwety - Zigbee i HA w AIS

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 :frowning:
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 :frowning:

Akurat ten czujnik odpowiada za automatyzację oświetlenia nocnego i bez niego wszystko szlag trafia :frowning:
Ż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?

Zna ktoś jakiś sposób aby temu zapobiec albo prosto naprawić, poza reinstalką?

ź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

1 polubienie

Nie wywali mi to dotychczasowych konfiguracji encji w kosmos?

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 mogę namierzyć bazy mosquitto.

przeszukaj cała bramkę, u mnie w dockerze nazywa się: mosquitto.db

/ $ su -c "find . -name mosquitto.db"

brak wyników…

/ $ su -c "find . -name *.db" | grep ".db"
./data/system/watchlist_report.db
./data/system/notification_log.db
./data/system/locksettings.db
./data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db
./data/data/com.google.android.googlequicksearchbox/databases/-1_threads.notifications.db
./data/data/com.google.android.googlequicksearchbox/databases/accounts.notifications.db
./data/data/com.google.android.googlequicksearchbox/databases/icing-mdh.db
./data/data/com.android.providers.contacts/databases/profile.db
./data/data/com.android.providers.contacts/databases/contacts2.db
./data/data/com.android.providers.contacts/databases/calllog.db
./data/data/com.spotify.music/databases/event-sender.db
./data/data/com.spotify.music/databases/google_app_measurement.db
./data/data/com.android.chrome/app_chrome/Default/page_load_capping_opt_out.db
./data/data/com.android.chrome/app_chrome/Default/previews_opt_out.db
./data/data/pl.sviete.dom/files/home/zigbee2mqtt/data/database.db
./data/data/com.android.providers.media/databases/internal.db
./data/data/com.android.providers.media/databases/external.db
./data/data/pl.sviete.dom.client/app_webview/databases/Databases.db
./data/data/pl.sviete.dom.client/files/google_app_measurement.db
./data/data/pl.sviete.dom.client/databases/google_app_measurement.db
./data/data/pl.sviete.dom.client/databases/google_app_measurement_local.db
./data/data/com.google.android.gsf/databases/googlesettings.db
./data/data/com.google.android.gsf/databases/gservices.db
./data/data/com.google.android.gsf/databases/subscribedfeeds.db
./data/data/com.android.providers.downloads/databases/downloads.db
./data/data/pl.sviete.dom.anexplorer.pro/databases/internal.db
./data/data/pl.sviete.dom.anexplorer.pro/databases/recents.db
./data/data/com.android.keychain/databases/grants.db
./data/data/com.android.providers.calendar/databases/calendar.db
./data/user_de/0/com.android.providers.contacts/databases/calllog_shadow.db
./data/system_de/0/accounts_de.db
./data/system_ce/0/accounts_ce.db
./mnt/vendor/param/pq/pq.db
./vendor/etc/tvconfig/pq/pq.db

Czyżby nie było w ogóle bazy dla mqtt na AIS? aż nie chce mi się wierzyć.
No nie mam jak sprawdzić, w dockerze normalnie mam baze
To spróbuj samo z2m.

Nie pomogło nic :frowning: Lista urządzeń zrobiła się pusta i nie było żadnego kontaktu w urządzeniami zigbee :frowning:

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 :frowning:

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 :frowning:
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.

1 polubienie

Czy ktoś, ktokolwiek, jest mi w stanie powiedzieć dlaczego do cholery jasnej urządzenia zigbee mają nieznany status!!! Wystarczy zrestartować bramkę i szlag trafia odświeżanie statusów czujników zigbee :frowning:
Nadchodzi okres grzewczy a ja guzik widzę w AIS. W MQTT wszystko widać i można sterować, w Zigbee2MQTT to samo, ale w lovelace AIS status urządzeń jest nieznany. Integracja zwalona :frowning:

Postawiłem bramkę od nowa przechodząc na Thermux, wczytałem konfigurację i pojawiły się odczyty czujników i sterowanie, nawet climate, na którym mi najbardziej zależy.

Ale bramka zaczęła mulić. interfejs WWW wczytywał się wieki albo wcale więc zrestartowałem bramkę. Interfejs WWW wczytuje się dalej raz lepiej, raz gorzej, znaczy częściej gorzej, ale współpracę z zigbee szlag trafił :frowning:

Nie mam już siły do tego badziewia, potrzebuję tego, idzie sezon grzewczy, a ja jestem w czarnej d… :frowning:

Mimo dobrych chęci nie wiem jak pomóc, bo jeśli objawy powtarzają się na czystej instalacji to oznacza, że winna jest Twoja konfiguracja. Czy wykonałeś zalecenia @bartik22 dotyczące bazy danych? Czy nadal masz integrację z Supla? Dwa brokery MQTT?

1 polubienie

@Goral64 aby encje z Z2M automatycznie pojawiły się w HA muszą być spełnione warunki:

  1. w konfiguracji Z2M musi być włączona opcja (dokumentacja - Home Assistant | Zigbee2MQTT):
# Optional: Home Assistant integration (MQTT discovery) (default: false)
homeassistant: true
  1. HA i Z2M muszą być podłączone do tego samego brokera MQTT
  2. w integracji MQTT w HA musi być włączone autowykrywanie MQTT (MQTT discovery is enabled by default).
1 polubienie

Dzięki. U mnie to wszystko działa. Mam to wszystko poustawiane “jak w książkach piszą” :wink:
Problemem jest to, że po dodaniu urządzenia jest ono niedostępne i w HA nie widać ich stanów, a przełączniki zamiast mieć przesuwany button, to mają dwie osobne ikonki, włącz i wyłącz. Ale ich naciskanie nie działa i nie widać aktualnego stanu przełącznika.
Tak wyglądają encje gniazdek zigbee
obraz
a powinny wyglądać tak
obraz

Tak wyglądają czujniki otwarcia drzwi i okien z integracji zigbee
obraz
a tak wyglądają encje stworzone prosto z MQTT dla tych samych czujników
obraz

Najpierw jednak muszę ogarnąć dlaczego mi tak bramka muli i ciężko dostać się do niej przez apkę/www. Ale muszę znaleźć czas na odfiltrowanie logów, bo MQTT pisze jak szalone…

no dobra, a w momencie zamknięcia, otwarcia stan się zmienia na chwilę?
W logach z2m w momencie zamknięcia widzisz, że dostajesz wiadomość od czujnika?

Nie, ani drgnie.

Tak, widać. Ale w logach ais widać, że stan trafia do jakiejś kolejki (chyba) i w tej kolejce umiera ze starości, a ais sądzi, że urządzenie jest offline, skoro nic mu nie wysyła…

5|zigbee  | Zigbee2MQTT:info  2022-10-19 16:14:23: MQTT publish: topic 'zigbee2mqtt/ZBK30', payload '{"battery":72,"battery_low":false,"contact":false,"linkquality":255,"tamper":false,"voltage":2900}'
5|zigbee  | Zigbee2MQTT:info  2022-10-19 16:16:45: MQTT publish: topic 'zigbee2mqtt/ZBK30', payload '{"battery":72,"battery_low":false,"contact":true,"linkquality":255,"tamper":false,"voltage":2900}'

a w ais nie widzę już nic o aktualizacji czegokolwiek z encji zigbee…

I często próba połączenia z lovelace :frowning:

A tak wyglądają logi po restarcie zigbee

3|ais  | 2022-10-19 16:37:29.236 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b002342e1b3 contact, queuing update
3|ais  | 2022-10-19 16:37:29.239 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: binary_sensor 0x00124b002342e1b3 battery_low, queuing update
3|ais  | 2022-10-19 16:37:29.243 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor 0x00124b002342e1b3 battery, queuing update
3|ais  | 2022-10-19 16:37:29.245 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b002342e1b3 voltage
3|ais  | 2022-10-19 16:37:29.245 INFO (MainThread) [homeassistant.components.mqtt.discovery] Found new component: sensor 0x00124b002342e1b3 linkquality

jest queuing update i chyba ta kolejka trzyma update statusów i ich nie puszcza dalej… a urządzenia są niedostępne…

W momencie restartu na lovelace wszystkie sensory otwarcia zmieniają status na niedostępny a po restarcie zmieniają status na nieznany.

Dla porównania aktualizacja encji z Supli kończy się sending update a nie jak zigbeee queuing update i pewnie tu tkwi problem, ale nie wiem jaki…

3|ais  | 2022-10-19 17:23:24.443 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor supla c049ef80d290_0_1, sending update
3|ais  | 2022-10-19 17:23:24.443 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor supla c049ef80d290_0_0, sending update
3|ais  | 2022-10-19 17:23:24.444 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor supla c049ef80d290_1_0, sending update
3|ais  | 2022-10-19 17:23:24.445 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor supla c049ef80d290_2_0, sending update
3|ais  | 2022-10-19 17:23:24.446 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor supla c049ef80d290_3_0, sending update
3|ais  | 2022-10-19 17:23:24.446 INFO (MainThread) [homeassistant.components.mqtt.discovery] Component has already been discovered: sensor supla c049ef80d290_4_0, sending update

Pokaż cały plik konfigu z2m

No to sprawdźmy po kolei:

Po pierwsze włacz logi z2m
otwieraj okno czy co tam masz i patrz czy wysyła, czy z2m odbiera,

Tak samo otwórz mqtt explorer odnajdź urządzenie i patrz w momencie zmiany stanu czy w mqtt się zmienia, i czy stan zostaje
w z2m koncigu masz urządzenia z dopiskiem retain?

Jak powyższe działają to:

masz NR? to zrób tak:
jak nie masz to zainstaluj: node-red-contrib-zigbee2mqtt (node) - Node-RED
i wtedy podłącz jakies urządzenia pod debuga i zobacz czy się coś zmienia,

yjtjytj

omijamy tym całkowicie HA,

Na końcu odłącz serwer supli z konfiga i zobacz czy reszta działa, potem znowu podłącz

no musisz po kolei eliminować,
najlepszy byłby od nowa konfig całości bo ewidentnie coś tam Ci się namieszało
ale może uda się bez tego


I jeszcze raz wróce do bazy mosquito
gdzies ta baza musi być, usunięcie jej może całkowicie naprawić
jeżeli faktycznie nie można nigdzie jej znaleźć, to może usunąć całe mqtt i zainstalować ponownie,
Zrób kopie zapasową i w razie czego przywrócisz z portalu integratora

Tutaj padło kluczowe pytanie:

Pamiętam że miałeś jakieś własne rozwiązanie na duplikowanie encji między Suplą a AIS.