W dzisiejszym świecie, gdzie urządzenia połączone stały się wszechobecne, termin Internet Rzeczy (IoT) stał się faktycznym opisem dla "urządzenia połączonego z internetem". Chociaż ten uwielbiany, zapisywany wielkimi literami akronim jest piękny sam w sobie, to "urządzenia połączone z internetem" mają o wiele więcej do zaoferowania, niż ludzie zdają sobie sprawę. W tym artykule chciałbym głębiej zagłębić się w jeden z najbardziej rozpowszechnionych protokołów używanych w urządzeniach IoT: protokół MQ Telemetry Transport (MQTT). Krótko omówimy, czym jest, jak działa i co wyróżnia go na tle innych technologii. Przejdziemy również przez kompleksowy przykład z użyciem urządzenia Arduino.
W typowej konfiguracji klient-serwer mamy dostawcę (czyli same urządzenia), który przesyła dane z czujników do serwera oraz konsumenta, który żąda wyświetlenia tych danych z serwera. MQTT nie różni się w tym zakresie. Jest to lekki protokół używany do komunikacji między urządzeniami. Urządzenia zazwyczaj „publikują” (czyli wysyłają) dane do „brokera” MQTT (lub serwera), które są następnie przechowywane, aby mogły być udostępniane innym urządzeniom lub aplikacjom internetowym. Inne urządzenie lub aplikacja internetowa „subskrybuje” ten zestaw danych (czyli żąda danych) od brokera MQTT, a następnie broker MQTT dostarcza im te dane. Można to postrzegać jako po prostu uszlachetniony serwer internetowy z dwoma głównymi wyjątkami:
Z powyższych dwóch powodów MQTT stał się bardzo popularnym protokołem w urządzeniach IoT. Historycznie ludzie używali żądań HTTP POST/GET, aby osiągnąć tę formę komunikacji urządzenie-serwer, ale ograniczało to ich zdolność do korzystania z innych urządzeń komunikacyjnych, takich jak Bluetooth czy ZigBee. Ponieważ MQTT jest w tym względzie agnostyczny, możemy teraz mieć możliwości przesyłania wiadomości w sieci opartej na meshu używając MQTT bez konieczności łączenia się z internetem
Istnieje wiele sposobów na rozpoczęcie pracy z MQTT, w tym projektowanie kompleksowego rozwiązania od początku do końca. Aby uprościć sprawę, będziemy korzystać z darmowej usługi brokera MQTT dostarczanej przez Adafruit w tym przykładzie. Pozwoli nam to skupić się tylko na stronie klienta procesu rozwoju. Aby rozpocząć, potrzebować będziesz następujących rzeczy:
Musimy najpierw wykonać kilka czynności, aby przygotować nasze środowisko. Zacznijmy od skonfigurowania naszego sprzętu. Zamierzam użyć Arduino Uno i Arduino Ethernet Shield podłączonego do mojej lokalnej sieci.
Musimy umieścić Ethernet Shield na Arduino i podłączyć go do sieci w ten sposób:
Po skonfigurowaniu sprzętu otwórzmy Arduino IDE i zainstalujmy potrzebne biblioteki. Otwórz Arduino IDE i przejdź do Narzędzia > Zarządzaj bibliotekami…
Wyszukaj bibliotekę Adafruit MQTT i kliknij zainstaluj:
Zostaniesz również poproszony o zainstalowanie zależności biblioteki. Kliknij „Zainstaluj wszystko”.
Po zainstalowaniu bibliotek wsparcia możesz otworzyć przykład, przechodząc do Plik > Przykłady > Adafruit MQTT Library > mqtt_ethernet.
W tym momencie musimy zrobić przerwę i pobrać nasze dane uwierzytelniające z konta Adafruit IO. Zaloguj się do Adafruit IO i kliknij na „My Key” na górze:
Teraz wróć do swojego przykładu szkicu Arduino mqtt_ethernet i wypełnij pola AIO_USERNAME oraz AIO_KEY, wpisując „Username” i „Active Key” znajdujące się na Twoim koncie Adafruit IO. Upewnij się, że urządzenie jest podłączone, a następnie kliknij na Prześlij:
Aby zobaczyć status urządzenia (i upewnić się, że jest ono połączone z brokerem MQTT) przejdź do Narzędzia > Monitor szeregowy. Powinieneś zobaczyć wynik, który wygląda tak:
W tym momencie potwierdziliśmy, że dane są pomyślnie wysyłane do brokera MQTT. Aby przyjrzeć się faktycznym danym na serwerze, wróćmy do naszego konta Adafruit IO i kliknij na „Feeds”, a następnie kliknij na „photocell”
Teraz otrzymujemy na żywo przechwycone dane, które nasz Arduino wysyła do brokera MQTT. Możemy również pobrać dane historyczne.
Gratulacje! Udało Ci się skonfigurować urządzenie z obsługą MQTT i opublikować swoje dane na brokera MQTT. Teraz wykonaj kolejny krok, tworząc własne niestandardowe czujniki i publikując dane na swojego brokera MQTT.
W tym artykule dowiedzieliśmy się, czym jest MQTT, dlaczego jest używane i jak zaimplementować je na mikrokontrolerze. Pokazaliśmy również, jak rozpocząć pracę z darmową usługą brokera MQTT i jak oglądać dane na ich serwerze. Teraz powinieneś czuć się komfortowo, rozpoczynając własny szkic Arduino na podstawie przykładu, który użyliśmy do publikowania własnych danych czujnikowych na brokera MQTT i ich przeglądania w chmurze.