Wiele urządzeń i gadżetów komunikuje się w czasie rzeczywistym za pomocą zaawansowanych technologii bezprzewodowych. Inteligentne miasta, inteligentne biura, inteligentne domy itp. są połączone właśnie przez Internet Rzeczy (IoT), w którym gadżety i inteligentne obiekty komunikują się ze sobą za pomocą określonych protokołów bezprzewodowych. IoT jest również określany jako Ubiquitous Computing lub Pervasive Computing, i istnieje wiele zastosowań tych technologii w czasie rzeczywistym. Wprowadzone ostatnio w kraju FASTagi, umożliwiające przejazd przez place poboru opłat, to klasyczna implementacja IoT, w której mały chip w pojeździe komunikuje się z pobliskim czujnikiem i transakcja dokonywana jest automatycznie.
W takich scenariuszach skalowalność, jak również kwestie niezawodności są rozwiązywane przez wysokowydajną komunikację sieciową lub zaawansowaną komunikację bezprzewodową z wykorzystaniem technologii 4G, 5G i pokrewnych.
Protokoły i silniki do wdrażania IoT
IoT pomaga inteligentnym gadżetom komunikować się przy użyciu mniejszych zasobów i minimalnego zużycia energii. W środowisku IoT, MQTT jest specyficznym protokołem do komunikacji o niskim poborze mocy i lekkości, tak aby było minimalne obciążenie urządzeń i gadżetów. Jest to kluczowy protokół danych używany w IoT do szybkiej komunikacji w urządzeniach o niskim poborze mocy.
Lekka i energooszczędna komunikacja musi być szybka i niezawodna, aby mogła działać na wysokich częstotliwościach komunikacji sieciowej z różnymi urządzeniami. MQTT umożliwia taką komunikację pomiędzy dużą liczbą urządzeń i gadżetów o różnych konfiguracjach.
Rodzaje brokerów MQTT
W komunikacji IoT, istnieją głównie dwa rodzaje obiektów - wydawca i abonent. Przesyłanie sygnałów danych jest znane jako publikowanie. Technicznie rzecz biorąc, transfer danych z komputera do oddzielnego końca jest nazywany publikowaniem.
Nadawca sygnałów danych jest znany jako wydawca, a odbiorca jest określany jako subskrybent. Broker MQTT jest centralnym punktem lub po prostu serwerem IoT, który kontroluje komunikację między wydawcą a subskrybentem. Obsługuje on dane, które wydawca przesyła dla innych gadżetów zwanych subskrybentami, jak pokazano na rysunku 1.
Na przykład, jeśli dane mają być przesyłane z czujnika temperatury do telefonu rolnika, sygnały danych są wysyłane przez czujnik temperatury (wydawcę), podczas gdy urządzenie rolnika jest odbiorcą danych (abonentem).
Wiele brokerów MQTT jest dostępnych w wolnej i otwartej przestrzeni źródłowej, w tym Mosquitto, który implementuje protokół MQTT dla komunikacji opartej na IoT. Jest on lekki, wydajny i nadaje się do użycia na wszystkich urządzeniach, od pojedynczych płytek o niskiej mocy, takich jak Arduino i ESP8266, do komputerów i serwerów. Zamiast lokalnego komputera PC, Mosquitto może być wdrożony na serwerze w chmurze, który implementuje te brokery MQTT, tak aby komunikacja IoT była kontrolowana przez Internet.
Aplikacje brokerów MQTT mogą być instalowane na wyspecjalizowanych urządzeniach, takich jak Raspberry Pi, Arduino, laptopy, serwery i wiele innych do zastosowań w świecie rzeczywistym.
Platformy chmurowe dla MQTT
Dostępnych jest wiele usług brokerów MQTT w chmurze, w których brokery MQTT są dostępne jako infrastruktura na żądanie bez konieczności fizycznego ich wdrażania.
CloudMQTT
URL: www.cloudmqtt.com
CloudMQTT jest powszechnie używanym brokerem MQTT i może być używany do komunikacji IoT z gadżetami. Aplikacje IoT wykorzystujące CloudMQTT obejmują wiele scenariuszy, takich jak inteligentne place poboru opłat, inteligentne miasta, inteligentne domy lub inteligentne biura.
Dla badaczy, CloudMQTT zawiera darmowy pakiet o nazwie "Cute Cat", w którym można utworzyć pięciu użytkowników/połączeń i podłączyć urządzenia IoT, jak pokazano na rysunku 2. Darmowe instancje mogą być budowane w sieci CloudMQTT, przy użyciu aktualnego konta Google.
Kluczowymi cechami brokera Cloud-MQTT są:
- Dostępność 24/7
- Zarządzane serwery Mosquitto w chmurze
- Mosquitto implementuje protokół MQ Telemetry Transport
- Lekkie metody przesyłania wiadomości z wykorzystaniem modelu kolejkowania wiadomości publish/subscribe
Dane uwierzytelniające z CloudMQTT mogą być wykorzystane w sprzęcie IoT lub smartfonach, tak aby w czasie rzeczywistym zostało nawiązane połączenie pomiędzy CloudMQTT a gadżetami, jak pokazano na rysunku 3.
Na pulpicie nawigacyjnym IoT MQTT w Google Play Store dostępne są różne aplikacje dla systemu Android, jak pokazano na rysunku 4. Takie aplikacje IoT MQTT komunikują się bezpośrednio z platformami brokerów MQTT, dzięki czemu aplikacje IoT, tablety i brokerzy chmury mogą wchodzić w interakcje.
DIoTY
URL: www.dioty.co
DIoTY jest kolejną aplikacją brokera MQTT w chmurze z darmowym kontem, która może być używana do dostępu do gadżetów IoT, jak pokazano na rysunku 5. Dostarcza ona skrypty, dzięki którym połączenia brokera MQTT mogą być wykonywane w różnych środowiskach programistycznych.
Następujące platformy programistyczne mogą być wykorzystane do komunikacji pomiędzy brokerem MQTT a inteligentnymi gadżetami do publikowania oraz subskrybowania danych i sygnałów:
- C#
- Java
- Python
- Arduino
- Node.JS
- PHP
- Go-Lang
- NodeMCU
Paho Client jest jedną z najlepszych bibliotek w Pythonie służącą do komunikacji i łączenia urządzeń. Do implementacji przy użyciu Pythona, pakiet 'paho-mqtt' jest instalowany w następujący sposób:
$ pip install paho-mqtt
Poniżej znajduje się wycinek kodu, który może być zintegrowany z urządzeniami i gadżetami opartymi na IoT:
import paho.mqtt.client as mqtt
# Define event callbacks
def on_connect(client, mySignalData, CN):
if CN == 0:
print(“Connected successfully.”)
else:
print(“Connection failed. CN= “+str(CN))
def on_publish(client, mySignalData,
MyString):
print(“Message “+str(MyString)+”
published.”)
def on_subscribe(client, mySignalData,
MyString, granted_qos):
print(“Subscribe with MyString
“+str(MyString)+” received.”)
def on_message(client, mySignalData, msg):
print(“Message received on topic “+msg.
topic+” with QoS “+str(msg.qos)+” and
payload “+msg.payload)
mqttclient = myMQTT.Client()
# Assign event callbacks
mqttclient.on_connect = on_connect
mqttclient.on_publish = on_publish
mqttclient.on_subscribe = on_subscribe
mqttclient.on_message = on_message
# Connect
mqttclient.username_pw_set(‘kumargaurav.
in@gmail.com’, ‘7881730a’)
mqttclient.connect(‘myMQTT.dioty.co’,
1883)
# Subscribing
mqttclient.subscribe(‘/kumargaurav.in@
gmail.com/’)
# Publishing a message
x=input(‘Message’)
mqttclient.publish(‘/kumargaurav.in@
gmail.com/’, x)
# Loop; exit on error
CN = 0
while CN == 0:
CN = mqttclient.loop()
print(“CN: “ + str(CN))
Po wykonaniu skryptu Pythona, dane są obsługiwane i przetwarzane przez brokera MQTT, jak pokazano na rysunku 6.
Zakres badań i rozwoju
Naukowcy, akademicy i praktycy mogą prowadzić badania i tworzyć innowacyjne hipotezy dotyczące IoT z wykorzystaniem brokerów MQTT. Istnieje wiele stwierdzeń badawczych i domen, w których można wykonać implementacje oparte na MQTT, w tym telemedycyna, gadżety bezpieczeństwa osobistego, sprzęt obronny, urządzenia wojskowe, agriboty dla inteligentnego rolnictwa i wiele innych.
Ten artykuł został po raz pierwszy opublikowany we wrześniu 2020 r. w magazynie Open Source For You.