Pora zacząć szykować nasz system pod przyjęcie komunikacji z różnych urządzeń. Na początek zajmiemy się protokołem komunikacji o nazwie MQ Telemetry Transport w skrócie MQTT (MQ pochodzi od linii produktów firmy IBM).
Jaka jest jego charakterystyka? Protokół ten został stworzony z myślą aby był prosty i lekki, a co za tym idzie świetnie pasuje wszędzie tam gdzie ważna jest przepustowość i mały pobór energii. To natomiast sprawia, że świetnie nadaje się między innymi do urządzeń Internetu Rzeczy gdzie jego prostota i lekkość zapewniają dużą niezawodność i oszczędność energii oraz pasma.
Jak działa protokół? Cały protokół oparty jest o wzorzec publikacja/subskrypcja. W którym broker pełni rolę serwera z którym następnie łączą się klienci. Każdy podłączony klient za pośrednictwem brokera może publikować informacje. Każda z nich może natomiast składać się z tematu (jednego lub więcej) oraz wiadomości.
Kiedy dowolny klient opublikuje jakąś informację w danym temacie to każdy inny klient, który subskrybuje dany temat otrzyma ją. Co ważne tematy nie muszą być wcześniej tworzone i mogą powstać w momencie pierwszej publikacji/subskrypcji. Jako ciekawostkę mogę powiedzieć, że Facebook Messenger wykorzystuje protokół MQTT więc łatwo sobie można wyobrazić, że zamieniamy ludzi korzystających z Messengera na urządzenia, które rozmawiają ze sobą przy jego użyciu. Tak właśnie wygląda komunikacja po MQTT.
No dobrze ale to teoria. Jak wygląda to w praktyce w kontekście użytkowania systemu Home Assistant? Z powyższego opisu wynika, że zanim zaczniemy dodawać urządzenia do naszego systemu musimy posiadać brokera (serwer). Tu mamy wiele możliwości. Mianowicie jest wiele popularnych brokerów MQTT, które możemy zainstalować na większości systemach operacyjnych. Do jednych z najpopularniejszych należą Mosquitto, RabbitMQ (z odpowiednim pluginem), HiveMQ. Dowolny z nich możemy uruchomić w naszej sieci i używać. Istnieje też opcja brokerów w chmurze na przykład CloudMQTT.
My do naszego zadania wybierzemy najprostszy z możliwych sposobów uruchomienia brokera. Zainstalujemy odpowiedni plugin do Home Assistanta. Obsługa dodatków została opisana w tym artykule zatem tutaj powiem tylko, że należy znaleźć plugin o nazwie Mosquitto broker naciskamy Instaluj i czekamy chwilkę.
Gdy instalacja zakończy się sukcesem jedyne co robimy to prosta konfiguracja.
- username: podajemy nazwę użytkownika, która będzie wymagana do połączenia się klienta z brokerem
- password: podajemy hasło, które będzie wymagane do połączenia się klienta z brokerem
- anonymous: określamy czy zezwalamy na dostęp niezalogowanych klientów
- customize: jeżeli active jest na true umożliwia ustawianie dodatkowych parametrów. Na ten moment zalecam zostawić jak na ponższym rysunku.
- certfile i keyfile: umożliwiają podłączenie własnych certyfikatów
- require_certificate: jeżeli true to wymuszone jest połączenie szyfrowane z użyciem klucza i certyfikatu z opcji wcześniejszych
- Porty: zalecam pozostawić niezmienione chyba, że wiemy o jakiś konfliktach z innymi aplikacjami na serwerze

Po skończonej konfiguracji startujemy brokera i mamy uruchomiony serwer gotowy na przyjmowanie połączeń od klientów. Razem z instalacją serwera zainstalował się również klient więc możemy łatwo zweryfikować działanie naszego brokera.
Potrzebujemy do tego jednak jeszcze jednego dodatku - SSH & Web Terminal. Który oczywiście instalujemy jak każdy inny i konfigurujemy zgodnie z poniższym obrazkiem:

Pamiętamy jeszcze o włączeniu opcji Show in sidebar

i uruchomieniu dodatku.
Dzięki temu mamy dostęp do terminala naszego serwer który następnie otwieramy sobie w przeglądarce przez wybranie opcji Terminal z lewego paska menu.
W otwartym terminalu wpisujemy i zatwierdzamy następujące polecenie:
mosquitto_sub -d -t testTopic
To polecenie wykonało subskrypcję na temat testTopic i na tym temacie cały czas nasłuchuje. Teraz musimy prawym przyciskiem myszy wyświetlić menu terminala i wybrać opcję Horizontal lub Vertical Split. To nam otworzy kolejne okno konsoli w którym wpisujemy i zatwierdzamy kolejne polecenie:
mosquitto_pub -d -t testTopic -m "To działa!"
Jeżeli test wykonujemy nie bezpośrednio na serwerze może być konieczne podanie rozbudowanej wersji tego polecenia
mosquitto_pub -u "użytkownik" -P "hasło" -h nazwa_hosta/ip -d -t testTopic -m "To działa!"
Widzimy, że klient nawiązał połączenie, wysłał wiadomość i się rozłączył.

Natomiast w poprzednim oknie widzimy opublikowaną wiadomość.

Czyli nasz broker działa jak powinien.
To wszystko w tym artykule. W następnym, podłączymy nasze pierwsze urządzenie MQTT do Home Assistanta.
Pamiętajcie, że komentarze są Wasze.
Komentarze