Wyjaśnienie jak działa komunikacja urządzeń z bramką. MQTT Explorer - Fajne narzędzie do MQTT

Broker MQTT

Na bramce AIS dom działa broker MQTT Mosquitto

Klient MQTT

MQTT Explorer

MQTT Explorer to klient MQTT, który pozwala na przegląd tematów MQTT i pozwala na wysyłanie komunikatów do brokera MQTT

Połączenie z bramką AIS dom z klienta MQTT

Tak możemy połączyć się z brokerem MQTT z programu MQTT Explorer :
(jeżeli nasz system nie obsługuje mDNS to zamiast nazwy hosta ais-dom.local podajemy IP bramki w lokalnej sieci)

Wysłanie widomości do bramki z kleinta MQTT

W MQTT wiadomość nie kierujemy do klienta, ale publikujemy na jakimś temacie, w ten sposób mamy pewność, że trafia ona do wszystkich klientów, którzy są podłączeni do brokera MQTT i nasłuchują (subskrybują) dany temat. Klientem jest każde urządzenie podłączone do brokera (gniazdko, przełącznik, żarówka, nasze esp8266, zigbee2mqtt podłączony do USB, itd…). Każdy klient nasłuchuje wiadomości o określonych tematach i może publikować wiadomości o dowolnym temacie.

Klientem MQTT jest też Asystent domowy, urządzenia po automatycznym wykryciu (MQTT auto discovery) “mówią/prezentują” Asystentowi, na jakich tematach nasłuchują komendy sterującej a na jakich publikują swój status. Dzięki temu Asystent domowy wie jak “rozmawiać” (komunikować się) z danym urządzeniem, tzn. wie jak wysłać mu komendę sterującą oraz jak odczytać jego aktualny status.

Jeśli na bramce zaczniemy nasłuchiwać tematu /jolka/test a innym klientem (MQTT Explorer) nadamy wiadomość na ten temat, to efekt będzie taki:

Wysłanie widomości MQTT z bramki do innego klienta

MQTT Explorer domyślnie nasłuchuje wszystkich tematów można to sprawdzić w zaawansowanych ustawieniach połączenia z brokerem MQTT / bramką AIS dom:

Dlatego jeżeli wyślemy wiadomość MQTT z Asystenta domowego o dowolnym temacie to możemy ją odebrać w MQTT Explorer

Publikowanie wiadomości MQTT za pomocą usługi

Usługa mqtt.publish publikuje wiadomość MQTT dzięki temu możemy publikować wiadomość na przykład w naszej automatyzacji (po wystąpieniu określonego zdarzenia) - wysyłaś wiadomości do innych urządzeń:

Odbierania wiadomości w automatyzacji

Zdefiniujmy nową automatyzację która po otrzymaniu wiadomości MQTT o temacie /hej/jolka odpowie “Część” za pomocą usługi czytania tekstu:

Po opublikowaniu wiadomości (nawet pustej) o temacie /hej/jolka otrzymamy stosowny komunikat:

Tak działa komunikacja MQTT, w ten sposób urządzenia wysyłają do bramki swój status (czy są włączone, jaką mają temperaturę, wersje oprogramowania, adres IP…), w ten sam sposób bramka wysyła do nich komendy (włącz, wyłącz, prześlij status…).

Ograniczenia

Protokół MQTT jest ekstremalnie prosty i lekki. Metoda przesyłania wiadomości za pomocą publikowania / subskrybowania została zaprojektowana do transmisji dla urządzeń niewymagających dużej przepustowości. Dzięki temu jest to idealne rozwiązanie do przesyłania wiadomości pomiędzy urządzeniami (w IoT). Do tego został stworzony przez firmę IBM.

Za pomocą MQTT komunikują się urządzenia produkowane przez np. firmę Tuya (oczywiście tu broker MQTT jest w chmurze producenta). Niektóre brokery MQTT łączą jednocześnie 10 000 000 klientów:

Na bramce nie ma limitu klientów MQTT połączonych do brokera. Broker Mosquitto który działa na bramce oczywiście nie jest brokerem EMQX, ale poradzi sobie bez problemu z większą ilością urządzeń niż nasza doowa sieć WiFi :wink:

5 polubień

Wielkie dzięki za wyczerpującą odpowiedź :slight_smile: Rozjaśniło mi to jak odbierać komunikaty przez urządzenia np. Arduino i sterować nim. Na was zawsze można liczyć :slight_smile: Wkrótce w moim projekcie: Integracja Arduino Mega + Ethernet Shield z HA przez MQTT pojawi się obsługa przekaźników :slight_smile:

instalacja MQTT Explorera rozjaśniła mi sposób komunikowania się via MQTT.
Mogę też rozbudować oprogramowanie aby wysyłało więcej informacji o sobie np. adres IP, mac itd, itp… tak jak to robią sonoffy :slight_smile:

4 polubienia

jeszcze małe nakreślenie na “diagramie” działania naszego systemu i komunikacji bramki z urządzeniami

Mam pytanie, co może być nie tak że po restarcie AI-speker wszystkie urządzenia są offline. Urządzenia mają wgraną Tasmotę 9.1 i w Konsoli jest napisane że się podłanczają do Brokera MQTT. Po restarcie Tasmoty wszystko zaczyna działać ale jak mam 30 urządzeń resetować to coś jest nie tak. Dziwne na openhab i domoticz urządzenia się logowały się jak tylko Broker wstawał i też był na mosqtto.

Pełny temat w konfiguracji mqtt to?: %topic%/%prefix%/

Sprawdź czy masz:
GroupTopic dom
Setoption19 1

Ustaw temat tak jak napisałem a zacznie działać.

@Stravi - kolejność %topic%/%prefix%/ %prefix%/%topic%/ nie ma znaczenia.

Pewnie ma znaczenie Temat dom_ %06X

Ciekawe, bo u mnie właśnie ta zmiana pomagała na tego typu zachowanie.

Już to przerabialiśmy @Stravi:

Stanęło na tym, że:

Podsumowując:
Obowiązkowe dwie komendy, jeśli ktoś nie wgrywa Tasmota od AIS:
Setoption19 1
GroupTopic dom

Dobrze było by przeczytać dokumentację i poznać różnice jakie wprowadza AIS, tak jak zasugerował @Michal.S. Nie wszystko w Asystencie domowym jest przenoszone 1:1 z innych systemów.

Dzięki za pomoc faktycznie po dokonaniu zmian wszystko już działa.
Ale znalazłem jeszcze jeden problem. Na próbę wgrałem AIS Tasmotę i jest spora różnica w działaniu na korzyść AIS. Oryginalna tasmota się gubi jak naciska się przycisk np: 2razy na sekundę, nie wie jaki stan jest obecny. Wgrałbym AIS Tasmotę ale nie mogę przyciskać ESP przy dodawaniu do systemu. Czy jest jakaś wersja już *.bin która dodawała by się do brokera w ten sam sposób co oryginalna Tasmota.

AIS-Tasmota możesz dodać ręcznie konfigurując ustawienia zakładki MQTT. Nie musisz parować przez bramkę z procedurą przyciskania. Zrób tak samo jak byś miał oryginalną Tasmota.

Jak wgrałem firmware i zresetowałem ustawienia to sonoff nie generował swojej sieci, dopiero pojawiła się po przytrzymaniu przycisku.

Możesz po kablu połączyć się z sonoff i ustawić konfigurację sieci przez komendy.

Nie potrafię się dobić do ESP jak skanuję WIFI to nie wykrywa żadnej sieci nawet ukrytej. Szkoda że nie ma żadnej binarki z automatycznym generowaniem otwartej sieci (może spróbuje samemu skompilować).

Chyba po kablu wgrywasz, więc wpisz po TTL jeden wiersz i masz swoje WI-FI.
Możesz użyć Tasmotizer, programu który pozwala na dokładanie ustawień do wgrywanej binarki.

Dobra teraz wiem co miałeś na myśli Ja używam Tasmota-PyFlasher-1.0 i nie mam tej opcji

Chcesz pisać własne binarki, więc pewnie masz jakiś minitor portu szeregowego. Cokolwiek z konsolą do wysłania komend, choćby Ardiuno IDE, Putty…