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
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.
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"
}
Odebranie komunikatu konfiguracja
System Asystent domowy subskrybuje temat homeassistant/# i otrzymuje z brokera MQTT wiadomość przesłaną przez urządzenie
Dodanie urządzenia do systemu Asystent domowy
System Asystent domowy dodaje urządzenia do panelu aplikacji po otrzymaniu wiadomości konfiguracyjnej
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ę.
Subskrybcja tematów przez urządzenie
Urządzenie subskrybuje 3 tematy:
cmnd/dom_%06X/#
cmnd/DOM_%06X/#
cmnd/dom/#
Subskrybcja tematów przez Asystenta domowego
System Asystent domowy subskrybuje temat stat/dom_%06X/+
Komunikacja Asystenta z urządzeniem
Komunikacja z urządzeniem przebiega wg następującego schematu:
Publikacja komendy z bramki do urządzenia
Otrzymanie komendy ma urządzeniu
Potwierdzenie wykonania
Urządzenie po wykonaniu komendy publikuje wiadomość o swoim statusie.
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: