MQTT – do czego służy ten protokół szeroko wykorzystywany w IoT?

Żyjemy w świecie Internetu rzeczy (IoT, czyli Internet of Things) – nasze urządzenia AGD, zegarki, lodówki, radia i wiele innych przedmiotów codziennego użytku, potrafią się ze sobą komunikować i synchronizować. Jest to możliwe głównie dzięki protokołowi MQTT. Protokół MQTT jest stosowany wszędzie tam, gdzie urządzenia podłączone do Internetu wchodzą ze sobą w interakcje. Czym jest MQTT? Jak należy rozumieć jego działanie?

 

 

MQTT – definicja

 

MQTT jest protokołem, dzięki któremu urządzenia mogą wymieniać się między sobą informacjami, zapewnia on transmisję danych. Protokół MQTT nie jest specjalnie szybki, ale za to cechuje się wielką użytecznością i zazwyczaj wystarcza do obsługi przedmiotów ze świata IoT. Ten standardowy dziś model wymiany danych został stworzony na przełomie wieków przez amerykańskich informatyków. Zadanie serwera przejmuje na siebie broker MQTT, zatem jego klienci mogą wymieniać się informacjami. Rzeczywiste działanie protokołu MQTT możemy zaobserwować na przykładzie popularnych komunikatorów, system Android również korzysta z MQTT – klientów MQTT (MQTT client) może być bardzo wielu, wszyscy klienci nadają i odbierają strumienie danych, włącznie z naszymi radiami w samochodach, smartwatchami, telewizorami mającymi łączność z siecią, itd. Serwery MQTT, brokery typu Misquitto i inne podobne korzystają z prostoty i wysokiej operacyjności tego protokołu. Dzięki niemu właśnie możemy żyć w inteligentnych domach i korzystać z całego dobrodziejstwa komunikacji pomiędzy naszym sprzętem elektronicznym.

 

 

Jak działa protokół MQTT?

 

Opiszmy teraz przejrzyście najważniejsze zasady działania MQTT. W samym środku całego systemu znajduje się broker MQTT, który służy jako serwer. Dzięki temu istnieje możliwość nadawania i otrzymywania różnego rodzaju wiadomości, przesyłanie danych. Nadawca wysyła sygnał, broker stosuje filtry dla wysyłanych informacji, klient na końcu tego ciągu otrzymuje więc pożądaną daną, informację. Obieg informacji rozpoczyna się więc od tzw. wydawcy wiadomości, a kończy na subskrybencie wiadomości. Obie strony są przy tym połączone z brokerem (serwerem) MQTT. Protokół uwierzytelnia klientów. W momencie nadania wiadomości użytkownik i urządzenie początkowe nic nie wie o urządzeniu i kliencie docelowym – ten ostatni otrzymuje informacje po dokonaniu subskrypcji odpowiednich tzw. tematów. Znane są systemy, gdzie do MQTT jest podłączonych 1000 lub więcej urządzeń. Przepustowość protokołu radzi sobie dobrze z taką ilością danych. Ważne jest to, że subskrybenci otrzymują przefiltrowane dane i zgodnie z ich życzeniem przychodzą do nich wyłącznie wiadomości, których oczekują. Oczywiście można “obserwować” wiele tematów, subskrybować różnego rodzaju informacje, ale zawsze będą one dostarczane celowo, zgodnie z życzeniem subskrybenta. Całość jest pomyślana tak, że dowolny przedmiot IoT może być zarówno nadawcą jak i odbiorcą. Do działania systemu jest potrzebny pakiet TCP/IP.

 

 

Przykładowe zastosowania protokołu MQTT

 

Używanie protokołu MQTT jest powszechnie przyjęte i ma wiele zastosowań, z których – często nieświadomie – każdy z nas korzysta na co dzień. Zastosowania te mogą być absolutnie prywatne, ale także produkcyjne i przemysłowe. Sprzęgamy po prostu ze sobą wiele maszyn, które wchodzą w interakcję. Nasze systemy klimatyzacji i ogrzewania, nasze mniejsze urządzenia wchodzące w skład smartdomów, wiele urządzeń, które nosimy ze sobą w torebkach i walizkach, sprzęt używany w mieszkaniach, także w samochodach – to wszystko zaliczamy do Internetu rzeczy, który jest sprzęgnięty przez MQTT. Być może nawet ważniejsze są zastosowania przemysłowe, kiedy np. mamy do czynienia z linią produkcyjną w fabryce obsługiwanej przez roboty, kiedy tworzymy różnego rodzaju sieci służące do wymiany informacji. Nasze domostwa nie byłyby “inteligentne”, a wiele nowoczesnych zakładów produkcyjnych i systemów informacyjnych nie mogłoby działać bez użycia protokołu MQTT. Wystarczy wspomnieć o tym, że za każdym razem kiedy otwierają Państwo aplikację Facebook w swoim Androidzie – działa MQTT.

Ciekawym zastosowaniem jest MQTT explorer, który pomaga dotrzeć do odpowiedniej informacji, ponieważ te są sortowane. MQTT explorer pozwala docierać do subskrybowanych tematów, odsiewa informacje zbędne, pozwala na zapewnienie przejrzystości dla ludzkiego użytkownika w gąszczu urządzeń włączonych do IoT. Rozwiązanie MQTT explorer bez trudu możemy zainstalować w każdym systemie operacyjnym, jest bodajże dostępne nawet w Microsoft Store dla Windows. Pozwala przeszukiwać tematy, przedstawiać je przejrzyście, zachowywać historię subskrypcji, orientować się po prostu o tym, co dzieje się na naszym brokerze MQTT.

 

 

Wady i zalety protokołu MQTT

 

Protokół MQTT ma znacznie więcej zalet niż wad, jest wykorzystywany bardzo chętnie i na dużą skalę. Zwraca się uwagę na następujące przewagi tego rozwiązania:

  • energooszczędność – połączenie zużywa bardzo mało energii elektrycznej
  • transfer danych odbywa się realnie na bieżąco, w czasie rzeczywistym i prawie natychmiast
  • MQTT client – możemy na raz podłączyć wielu klientów protokołu, informacje między nimi będą synchronizowane
  • przepływ danych może być asynchroniczny dla każdego kierunku transferu
  • protokół MQTT reaguje na przewidziane i zaprogramowane zdarzenia (events)
  • jest on niezwykle prosty i bardzo łatwy w obsłudze i utrzymaniu
  • posiada odpowiednie walory dotyczące prywatności i bezpieczeństwa danych

Czy wobec tak niewątpliwych zalet istnieją więc jakieś wady MQTT? Wspomnimy o dwóch, ale ich znaczenie jest drugoplanowe względem korzyści.

  • dla należytego działania protokołu wymagany jest broker MQTT (najczęściej korzysta się chyba z Misquitto)
  • pomimo olbrzymiego postępu w dziedzinie Internetu rzeczy wciąż nie każde urządzenie dostępne na rynku będzie obsługiwało protokół MQTT

Nie są to sprawy, które powinny nam spędzać sen z oczu, ponieważ nie jest aż tak wielką trudnością uruchomienie brokera MQTT, a z biegiem czasu ilość sprzętu włączonego do systemów IoT powiększa się i nic nie zapowiada odwrócenia tej tendencji.

 

 

Czy w projektach firmowych warto stosować protokół MQTT?

 

Odpowiedź jest twierdząca, a jej potwierdzeniem jest rozpowszechnienie protokołu MQTT w niewielkich, a także bardzo dużych projektach firmowych. Przedsiębiorstwa i zatrudnieni w nich informatycy chętnie korzystają z tej sposobności, głównie ze względu na łatwość wdrożenia i obsługi. Już dziś istnieje wiele podmiotów, które nie mogłyby rozwijać swojej działalności biznesowej bez konfiguracji protokołu MQTT. Sama implementacja MQTT w firmie nie jest problemem dla zdolnych informatyków i zajmuje niewiele czasu – potem można korzystać z całych systemów opartych na serwerach MQTT. W pewnym sensie MQTT jest obecnie standardem produkcyjnym, który jest znany każdemu wykształconemu informatykowi (uczelnie informatyczne poświęcają osobne zajęcia, na których wykłada się sprawy związane z tym protokołem).

 

 

Przykładowe implementacje MQTT

 

Wydaje się, że wszystkie implementacje i wdrożenia MQTT są wyszczególnione i na bieżąco aktualizowane w serwisie Git Hub. Tam możemy sprawdzić biblioteki oraz urządzenia korzystające z MQTT. Jest tego naprawdę sporo. Ta wiedza może przydać się profesjonalistom, ale dla zwykłego użytkownika ważne jest jedynie prawidłowe działanie jego sprzętu. Jest ono zapewnione wszędzie tam, gdzie w grę wchodzą tak popularne w informatyce i programowaniu sprawy jak np. C++, Dart, Java, .NET, czy język Python i wiele innych. Protokół MQTT na dobre zadomowił się pod naszymi strzechami i prawdopodobnie nie zniknie z krajobrazu Internetu rzeczy już nigdy.