Protokół MQTT

Protokół komunikacyjny MQTT jest oparty o wzorzec publikacji i subskrypcji. Jego podstawową zaletą jest lekkość, dzięki czemu można go implementować w bardzo małych systemach mikroprocesorowych, oraz przy niskich prędkościach transmisji danych. MQTT zostało stworzone przez  Andy’ego Stanforda-Clarka oraz Arlena Nippera w 1999 roku. Protokół MQTT znajduje szczególne zastosowanie w branży IoT.

Struktura działania opiera się na jednym centralnym serwerze nazywanym brokerem, oraz wielu klientach. Każdy z klientów może publikować i/lub subskrybować dane w ramach poszczególnych tematów. Ogromną zaletą jest to, że klienci nie muszą wiedzieć o sobie nawzajem, dzięki czemu ich oprogramowanie może być bardzo proste i wymaga mało zasobów. Wszystkim obciążony jest broker, który odbiera publikowane dane i rozsyła je do wszystkich subskrybentów danego tematu. Do najpopularniejszych brokerów można na daną chwilę zaliczyć: Mosquitto, RabbitMQ, HiveMQ, IBM MessageSight, VerneMQ.

Tematy

Ciekawym rozwiązaniem są tematy które pełnią funkcję kanału do przesyłania określonych informacji. Charakteryzują się tym, że nie mają określonych nazw. A co jeszcze ciekawsze to to, że nie trzeba ich w żaden sposób zakładać. Wystarczy zacząć publikować lub subskrybować jakiś temat.

Pomimo, że nazwa tematu może być dowolna to dobrą praktyką jest stosowanie pewnej hierarchicznej konstrukcji. Dla przykładu przyjmijmy taki szablon nazw tematów:

myHome/[device]/[parametr]

więc nazwy tematów brzmiały by:

myHome/sensor1/temperature
myHome/sensor1/humidity
myHome/sensor1/presure
myHome/sensor2/temperature
myHome/sensor2/humidity
myHome/sensor3/temperature

Poza wizualnymi zaletami takiego rozwiązania zyskujemy także możliwość subskrypcji kilku tematów jednocześnie. W tym celu stosujemy dwa znaki: „+” oraz „#”.

Znak „#” powoduje wywołanie wszystkich tematów zawierających podaną przed znakiem frazę. Na przykład:

myHome/sensor1/#

spowoduje, że będziemy subskrybować następujące tematy:

myHome/sensor1/temperature
myHome/sensor1/temperature/Celsius
myHome/sensor1/temperature/fahrenheit
myHome/sensor1/humidity
myHome/sensor1/presure

Działanie znaku „+” jest podobne, ale zastępuje on jeden poziom w hierarchii wszytkimi możliwymi frazami na tym poziomie, dla przykładu:

myHome/+/temperature

umożliwi subskrybowanie tematów:

myHome/sensor1/temperature
myHome/sensor2/temperature
myHome/sensor3/temperature

QoS – Quality of Service

Protokół MQTT umożliwia określenie w jaki sposób ma zostać wysłana nasza wiadomość. Służą do tego trzy poziomy QoS:

  1. wiadomość wysyłana jest bez jakiegokolwiek oczekiwania na potwierdzenie.
  2. wiadomość zostanie wysłana do co najmniej jednego odbiorcy (subskrybenta), wymagane jest potwierdzenie odbioru.
  3. wiadomość zostanie wysłana do tylko jednego odbiorcy.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.