Serwisy partnerskie:
Close icon
Serwisy partnerskie

Chmurowa implementacja Internetu Rzeczy (IoT) z wykorzystaniem brokerów MQTT

Article Image
Elmax
MQTT (Message Queuing Telemetry Transport) jest standaryzowanym, lekkim protokołem, który przesyła wiadomości pomiędzy połączonymi obiektami w sieci IoT.

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.

Rysunek 1. Kluczowe elementy MQTT

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.

Rysunek 2. Tworzenie wolnej instancji na CloudMQTT

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.

Rysunek 3. Wyświetlanie uwierzytelniania w CloudMQTT dla połączeń

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.

Rysunek 4. Aplikacje IoT MQTT w Google Play Store

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.

Rysunek 5. Dashboard DioTY

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.

Rysunek 6. Odbieranie danych na dashboardzie DIoTY przy użyciu MQTT

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.

Firma:
AUTOR
Źródło
www.electronicsforu.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"