Protokół transmisji danych MQTT doskonale sprawdza się w połączeniach machine-to-machine (M2M) i coraz częściej stosowany jest również w IIoT (Industrial Internet of Things).
Stworzony został przez dr. Andy’ego Stanford-Clarka i Arlena Nippera w 1999 roku po to, żeby w łatwy sposób zbierać dane z wielu urządzeń, a następnie je udostępniać. Protokół ciągle będzie zyskiwał na znaczeniu, ponieważ liczba urządzeń podłączonych do Internetu dynamicznie rośnie. Według serwisu www.statista.com, w 2018 roku mieliśmy 23,14 miliarda urządzeń podłączonych do sieci!
W dobie postępującej cyfryzacji firmy coraz częściej decydują się na przejście z tradycyjnych systemów na rozwiązania w chmurze. Do dyspozycji mamy wiele protokołów łączności z chmurą, takich jak: AMQP,XMPP, HTTP czy CoAP, ale najbardziej popularny jest MQTT. Jest on bardzo lekki, więc idealnie nadaje się do zdalnego monitoringu, szczególnie w połączeniach M2M, gdzie np. przepustowość sieci jest ograniczona.
Zalety protokołu MQTT
- Efektywna dystrybucja danych
- Zwiększona skalowalność rozwiązania komunikacyjnego
- Zdecydowanie zmniejszona konsumpcja przepustowości sieci
- Dostosowanie do czujników, a także do sterowania
- Maksymalizacja dostępnej przepustowości
- Bezpieczeństwo
- Zastosowanie przez producentów rozwiązań chmurowych: Microsoft, Amazon etc.
- Wykorzystanie w wielu obszarach przemysłowych, np. w przemyśle motoryzacyjnym czy wydobywczym
- Krótki czas wdrożenia protokołu
- Udostępnienie dużo więcej danych w porównaniu do tradycyjnych protokołów, np. MODBUS, na tej samej przepustowości
- Dostępność wielu bibliotek w wielu językach programowania obsługujących protokół MQTT
Architektura
MQTT jest zorientowany na komunikat, co oznacza, że:
- każda wiadomość jest dyskretnym fragmentem danych
- każda wiadomość jest publikowana (nadawana) na adres zwany tematem (topic)
- w tym przypadku nie tworzymy/usuwamy tematów – po prostu wysyłamy dane
- urządzenia mogą subskrybować (odbierać) wiele tematów (topic pattern)
- każde urządzenie, które subskrybuje dany temat otrzymuje każdą wiadomość opublikowaną w temacie
- odbiorca nie posiada informacji na temat nadawcy, nadawca nie ma informacji na temat odbiorcy
- odbiorca dostaje tylko te wiadomości, które go interesują.
Protokół MQTT oparty jest o model publish/subscribe (publikuj/subskrybuj). W takiej architekturze każde urządzenie działa jako klient, który może być zarówno nadawcą (publisher), jak i odbiorcą (subscriber). Wiadomości nie są jednak wysyłane bezpośrednio pomiędzy nimi, ale trafiają do serwera, czyli tzw. brokera. Z brokerem łączą się klienci, którzy wysyłają wiadomości w danym temacie (topic) oraz mają możliwość odbierania wybranych tematów (topic pattern).
Broker
Jest to serwer pośredniczący w komunikacji. Klienci podłączeni do brokera mogą wysyłać oraz odbierać dane.
Publisher
Klient, który nadaje (publish) wiadomość w konkretnym temacie (topic). Wiadomość wysłana przez nadawcę posiada formę tekstową zwykle w formacie JSON lub XML.
Subscriber
Klient odbierający wiadomość. Może uczestniczyć w wybranych tematach (topic).
Protokół MQTT działa w modelu publish/subscribe (opublikuj/subskrybuj)
Przykład:
- Sieć składa się z trzech klientów i brokera (serwera)
- Wszystkie urządzenia typu klient mają otwarte połączenie z brokerem
- Klienci: Alexa oraz komputer PC subskrybują temat „/Napięcie”
- Sterownik WAGO jako klient publikuje w temacie „/Napięcie” wartość „10”
- Broker przekierowuje otrzymana wartość do wszystkich klientów, którzy subskrybują temat.
Jak używać protokołu MQTT z wykorzystaniem urządzeń WAGO?
W tym celu odsyłam do not aplikacyjnych, dzięki którym łatwo można przejść konfigurację sterowników z serii PFC w celu wykorzystania protokołu MQTT. Istnieje możliwość integracji z dowolnym rozwiązaniem chmurowym.
Link:
- Landing page WAGO Cloud:
https://www.wago.com/pl/automatyka/wago-cloud - Nota aplikacyjna dla biblioteki WagoLibCloud.lib – WAGO-I/O-PRO (CODESYS v2.3)
https://www.wago.com/pl/d/15719 - Nota aplikacyjna dla biblioteki WagoAppCloud – e!Cockpit
https://www.wago.com/pl/d/15718Potrzebne biblioteki: - Dla oprogramowania WAGO-I/O-PRO (CODESYS v 2.3) korzystamy z biblioteki WagoLibCloud.lib
- Dla oprogramowania e!COCKPIT korzystamy z biblioteki WagoAppCloud
W przypadku korzystania z powyższych bibliotek, warto zapoznać się z językiem ST oraz takimi elementami jak tablice oraz struktury ze względu na złożoność funkcji oraz bloków funkcyjnych.
Do testów komunikacji proponuję wykorzystać platformę prototypową IoT: https://shiftr.io/
Maciej Kurantowicz, WAGO.PL