Protokół MQTT – jak łatwo zbudować rozproszony system telemetrii?
Kontakt w sprawie artykułu: Mateusz Zajchowski - 2018-12-10
Z tego artykułu dowiesz się:
- Co to jest MQTT
- Jaka jest zasada działania protokołu MQTT
- Jak uruchomić komunikację po MQTT w 5 krokach
Jesteś inżynierem systemów telemetrii i rozproszonych systemów sterowania? Chcesz monitorować parametry pracy swoich urządzeń rozsianych po całym kraju?
Rozbudowa sieci o kolejne urządzenia przy wykorzystaniu starych protokołów komunikacyjnych jest dla Ciebie zbyt czasochłonna? Poznaj protokół komunikacyjny MQTT.
Protokół komunikacyjny MQTT (Message Queue Telemetry Transport), mimo że dość młody (jego początki sięgają roku 1999), staje się coraz popularniejszy w zastosowaniach związanych z IIoT (Industrial Internet of Things). Zawdzięcza to przede wszystkim swojej specyfice – łatwości wykorzystania, niskiemu zapotrzebowaniu względem zasobów oraz przepustowości łącza komunikacyjnego.
Cechy te mogą się okazać przydatne również w szerszym zastosowaniu – gdy mówimy o konieczności połączenia ze sobą rozległej sieci obiektów, czy urządzeń, rozproszonej na terenie nawet całego kraju. Okazuje się, że cechy protokołu MQTT mogą być bardzo przydatne również w takim scenariuszu, znacząco ułatwiając przygotowanie oraz późniejsze utrzymanie takiej sieci, dając możliwość lepszego zarządzania urządzeń i systemów, które w niej pracują, co może przełożyć się na poprawę efektywności ich działania, a tym samym zmniejszenie kosztów.
MQTT – zasada działania
Message Queue Telemetry Transport (MQTT) – to protokół komunikacyjny oparty o wzorzec publikacja/subskrypcja. To prosty, lekki protokół transmisji danych, przeznaczony do komunikacji pomiędzy urządzeniami niewymagającymi dużej przepustowości. Poprzez ograniczenie prędkości transmisji, protokół MQTT zapewnia bardzo wysoką niezawodność transmisji i idealnie sprawdza się przy połączeniach #maszyna -maszyna, w przemysłowym Internecie rzeczy #IIoT i w urządzeniach mobilnych, ale sprawdzi się również w tradycyjnych systemach telemetrycznych – w zastosowaniach przemysłowych.
Bezpieczeństwo komunikacji w MQTT realizowane jest na poziomie szyfrowania protokołu w oparciu o SSL oraz dostępu do brokera w oparciu o system autentykacji klientów.
Klientem MQTT może być dowolne urządzenie podłączone do sieci, które ma zaimplementowany stos TCP/IP i protokół MQTT. Klient MQTT może jednocześnie pełnić jednocześnie funkcję subscribera i publishera, dzięki czemu komunikacja ma charakter dwukierunkowy.
Klienci nie komunikują się ze sobą bezpośrednio, a w oparciu o element pośredniczący, którym jest broker. Broker pełni rolę serwera, z którym łączą się klienci, aby za jego pośrednictwem publikować informacje. Jego zadaniem jest odbieranie wiadomości od klientów publikujących i rozsyłanie jej do odpowiednich klientów subskrybujących. Taki model pozwala na udostępnianie danych innym klientom bez znajomości ich adresu IP. Dzięki temu możliwa jest wymiana danych pomiędzy wieloma klientami w tym samym czasie.
Czym protokół MQTT różni się od innych, stosowanych powszechnie protokołów komunikacyjnych?
MQTT | Modbus RTU | Modbus TCP | CANopen | |
---|---|---|---|---|
Tryb komunikacji | publish-subscribe, M2M | Master-slave | Client-Server | Peer-to-peer |
Szybkość komunikacji | do 1000 mpbs | do 0.384 mbbps | do 1000 mpbs | do 1 mbps |
Łącze | Ethernet | szeregowe | Ethernet | szeregowe |
Ilość urządzeń w jednej sieci | zależne od wydajności brokera, 1000+ | do 265 | do 256 w ramach jednej podsieci | do 263 |
Możliwość komunikacji bezprzewodowej | tak | tak | tak | nie |
Urządzenie pośredniczące w komunikacji | Broker | Brak | Brak | Brak |
Zabezpieczenie transmisji | 1. SSL na poziomie protokołu 2. Autentykacja na poziomie dostępu do brokera | brak | openVPN, Ipsec | brak |
Wady | 1. Konieczność uruchomienia brokera 2. Przesyłanie małych ilości danych 3. Stosunkowo niewiele urządzeń przemysłowych obsługujących MQTT | 1. Komunikacja na małe odległości 2. Podatność na zakłócenia 3. Ograniczona ilość urządzeń w sieci 4. Długi czas odpytania wszystkich urządzeń z sieci 5. Komunikacja w modelu Master-Slave 6. Niska prędkość transmisji | Komunikacja w modelu Client-Server | 1. Zamknięty standard komunikacji 2. Trudna i czasochłonna konfiguracja 3. Stosunkowo niewielka prędkość komunikacji |
Zalety | 1. Szybka konfiguracja 2. Komunikacja M2M 3. Brak kolejki odpytywania 4. Szybka i niezawodna wymiana danych pomiędzy klientami 5. Szyfrowana i zabezpieczona komunikacja | 1. Bardzo duża popularność 2. Globalny standard u wielu dostawców 3. Prosta konfiguracja | 1. Bardzo duża popularność 2. Globalny standard u wielu dostawców 3. Bardzo prosta konfiguracja 4. Odporność na zakłócenia | 1. Komunikacja peer-to-peer 2. Odporność na zakłócenia 3. Mało popularny wśród producentów automatyki |
W jakich zastosowaniach sprawdzi się protokół MQTT?
1.Komunikacja M2M – pomiędzy maszynami i urządzeniami, które muszą wymieniać pomiędzy sobą dane produkcyjne i statusowe podczas normalnej pracy. Bezprzewodowa komunikacja pozwala wykorzystać MQTT w maszynach mobilnych bez obawy o jakość i niezawodność połączenia;
2. Monitorowanie urządzeń wod-kan – przepompownie ścieków to bardzo rozproszone obiekty, które muszą być na bieżąco monitorowane, muszą posiadać możliwość zdalnego sterowania oraz warto, aby mogły wymieniać informacje między sobą. W takim przypadku MQTT uruchomiony w oparciu o modemy GSM jest bardzo dobrym wyborem, gwarantującym szybką i niezawodną komunikację, ograniczając koszty transmisji.
3. Monitoring węzłów cieplnych i magistral przesyłowych – standard MQTT świetnie sprawdza się w systemach, w których konieczne jest monitorowanie magistral przesyłowych na całej ich długości. Szybka komunikacja pomiędzy kolejnymi punktami pomiarowymi pozwala bardzo precyzyjnie i szybko wykryć nieszczelności oraz awarie, ograniczając przy tym koszty transmisji;
4. BMS (Building Management Systems) – to kolejne idealne miejsce do transmisji w oparciu o MQTT. Ilość urządzeń z wbudowanym portem Ethernet w ramach tylko jednego budynku może być bardzo duża, a ilość przesyłanych informacji – niewielka (czujnik temperatury, wilgotności, oświetlenie, liczniki energii). MQTT pozwala spięć je wszystkie w jedną sieć, wizualizować ich pracę oraz udostępniać te dane do zawietrznych systemów monitoringu, nadzoru i bezpieczeństwa.
Jak uruchomić komunikację po MQTT w 5 krokach? To proste!
Krok 1 – Zainstaluj na komputerze przeglądarkę Google Chrome (jeśli nie była zainstalowana wcześniej)
Krok 2 – Dodaj do przeglądarki aplikację MQTTLens
W sieci istniejej wiele darmowych aplikacji pozwalających na proste testy protokołu MQTT. Jedną z nich jest aplikacja MQTTLens, instalowana jako wtyczka do przeglądarki Google Chrome. Znajdziemy ją, wyszukując w przeglądarce hasło MQTTLens.
Krok 3 – Uruchom aplikację MQTTLens
Po zainstalowaniu aplikacji, MQTTLens będzie można uruchomić poprzez ponowne wyszukanie jej po nazwie – w przeglądarce Google Chrome, lub po prostu w aplikacjach na komputerze (Menu START -> MQTTLens).
Krok 4 – Dodaj do połączeń broker ASTOR
Po uruchomieniu aplikacji, w lewej części okna można dodać broker, do którego będzie się łączyć MQTTLens. W obszarze CONNECTIONS klikamy znak „+”, otwierając okno Add a new Connection. Dane brokera firmy ASTOR to:
- Hostname: mqtt.astor.com.pl
- Port: 1883
- Connection name: można wpisać dowolną nazwę
- Username oraz Password: pozostawiamy puste
Po uzupełnieniu tych informacji klikamy w dolnej części okna CREATE CONNECTION
Krok 5 – dodaj subskrypcję tematu ASTORBMS/ActivePower
W ramach brokera, który został uruchomiony, publikowana jest informacja o mocy chwilowej w kW, jaka jest pobierana z przyłącza głównego budynku biurowego firmy ASTOR. Można ją odczytać subskrybując temat ASTORBMS/ActivePower. Aby to zrobić, należy w polu Subscribe wpisać nazwę tematu i należy kliknąć przycisk SUBSCRIBE. Po dodaniu subskrypcji, w dolnej części okna powinny zacząć pojawiać się kolejne wartości zmiennej, publikowanej w interwale około 1 sekundy.
Odczytany parametr jest wartością chwilową zużycia energii elektrycznej w budynku Centrali firmy ASTOR.
Te podane szybkości transmisji dla protokołów w tabeli to błąd…
Podane protokoły to protokoły z warstwy aplikacji. Dlatego nieprawdą jest, że maksymalna prędkość dla CANOpen do 1mbps, bo nie koniecznie musimy go stosować w CANie a możemy po ethernecie zastosować CANOpen. To tylko warstwa aplikacji.
Informacja dotycząca CANOpen w tabeli odnosi się do interfejsu szeregowego, co jest zaznaczone w wierszu „Łącze”. Gdy zastosujemy CANOpen na warstwie Ethernet, prędkość będzie oczywiście wyższa.