Broker MQTT działający na bramce

Asystent domowy ma wbudowany broker MQTT. Używamy najbardziej popularny obecnie broker Mosquitto, który na bramce działa jako proces nadzorowany przez menedżera procesów PM2. Mosquitto obsługuje wszystkie wersje protokołu MQTT (unormowane przez OASIS i ratyfikowane przez ISO) w tym najnowszą wersję. Protokół MQTT idealnie sprawdza się przy połączeniach maszyna-maszyna, w internecie rzeczy (IoT), w urządzeniach mobilnych, oraz tam, gdzie wymagana jest oszczędność przepustowości, oraz energii dlatego zostało on wybrany jako podstawowy protokół do komunikacji urządzeń z naszą bramką IoT.

Adres brokera MQTT

Broker MQTT działa na standardowym porcie 1883 (zarezerwowany w IANA). Ponieważ działamy w lokalnej sieci nie wymagamy autentykacji urządzeń.

Wykrywanie urządzenia MQTT w systemie Asystent domowy

W poniższym opisie zakładamy, że urządzenie działa na naszym darmowym oprogramowaniu, oczywiście tego typu działanie można skonfigurować/zaprogramować na każdym urządzeniu, które potrafi komunikować się protokołem MQTT.

Bramka po uruchomieniu publikuje do urządzeń (zapisanych w brokerze MQTT do grupy dom) komendę dom/cmnd/SetOption19 1 która oznacza, że chcemy by urządzenie było automatycznie wykrywane przez Asystenta domowego.

Następnie dochodzi do dodania urządzenia do systemu wg następujących trzech kroków.

komunikacja MQTT

Wysłanie komunikatu konfiguracja

Urządzenie publikuje wiadomość o temacie homeassistant/# do brokera MQTT, treścią wiadomości jest komunikat z opisaniem konfiguracji urządzenia

{
"name":"Gniazdo",
"command_topic":"cmnd/dom_4BA155/POWER",
"state_topic":"stat/dom_4BA155/RESULT",
"payload_off":"OFF",
"payload_on":"ON"
}

komunikacja MQTT

Odebranie komunikatu konfiguracja

System Asystent domowy subskrybuje temat homeassistant/# i otrzymuje z brokera MQTT wiadomość przesłaną przez urządzenie

komunikacja MQTT

Dodanie urządzenia do systemu Asystent domowy

System Asystent domowy dodaje urządzenia do panelu aplikacji po otrzymaniu wiadomości konfiguracyjnej

komunikacja MQTT

Komunikacja bramki z urządzeniem

Komunikacja bramki z urządzeniem polega na wysyłaniu odpowiednich wiadomości na odpowiednie kanały subskrybowane przez urządzenie i bramkę.

komunikacja MQTT

Subskrybcja tematów przez urządzenie

Urządzenie subskrybuje 3 tematy:

cmnd/dom_%06X/#
cmnd/DOM_%06X/#
cmnd/dom/#

komunikacja MQTT

Subskrybcja tematów przez Asystenta domowego

System Asystent domowy subskrybuje temat stat/dom_%06X/+

komunikacja MQTT

Komunikacja Asystenta z urządzeniem

Komunikacja z urządzeniem przebiega wg następującego schematu:

komunikacja MQTT

Publikacja komendy z bramki do urządzenia

komunikacja MQTT

Otrzymanie komendy ma urządzeniu

komunikacja MQTT

Potwierdzenie wykonania

Urządzenie po wykonaniu komendy publikuje wiadomość o swoim statusie.

komunikacja MQTT

Zmiana stanu urządzenia w systemie Asystent domowy

System otrzymuje wiadomość o statusie z urządzenia i zmienia jego stan co natychmiast ma odzwierciedlenie w aplikacji:

komunikacja MQTT