mbator.pl / MQTT - co to jest i gdzie jest wykorzystywane?
Autor: Maciej Bator

MQTT - co to jest i gdzie jest wykorzystywane?

MQTT (Message Queuing Telemetry Transport) to lekki protokół komunikacyjny oparty na modelu publikacji/subskrypcji. Jest często wykorzystywany w systemach IoT (Internet of Things), automatyce przemysłowej, inteligentnych budynkach oraz systemach monitoringu.

Został zaprojektowany w 1999 roku przez IBM i stał się standardem w komunikacji niskiego opóźnienia między urządzeniami o ograniczonej mocy obliczeniowej.

Gdzie znajduje się MQTT w modelu OSI?

MQTT działa na warstwie aplikacji modelu OSI (Layer 7). W praktyce działa na protokole TCP/IP, wykorzystując porty:

Jak działa MQTT?

MQTT bazuje na modelu broker-klient, gdzie:

Komunikacja odbywa się za pomocą topiców (tematów), które organizują wiadomości w logiczne grupy. Przykłady:

https://commons.wikimedia.org/wiki/File:MQTT_protocol_example_without_QoS.svg

Poziomy QoS (Quality of Service)

MQTT obsługuje trzy poziomy QoS, które określają niezawodność dostarczania wiadomości:

  1. QoS 0 – “At most once” – wiadomość jest wysyłana tylko raz i nie ma gwarancji jej dostarczenia.
  2. QoS 1 – “At least once” – wiadomość jest dostarczana co najmniej raz, ale może być duplikowana.
  3. QoS 2 – “Exactly once” – wiadomość jest dostarczana dokładnie raz (najbezpieczniejsza, ale najwolniejsza opcja).

Zalety MQTT

Praktyczne zastosowanie

1. Instalacja brokera MQTT

Najpopularniejszym brokerem MQTT jest Mosquitto. Instalacja:

sudo apt update
sudo apt install mosquitto mosquitto-clients

Uruchomienie brokera:

sudo systemctl start mosquitto

2. Publikacja i subskrypcja wiadomości

Uruchomienie subskrybenta:

mosquitto_sub -h localhost -t "test/topic"

Publikacja wiadomości:

mosquitto_pub -h localhost -t "test/topic" -m "Hello MQTT"

3. MQTT w Pythonie

Instalacja klienta MQTT:

pip install paho-mqtt

Przykładowy kod publikacji i subskrypcji w Pythonie:

import paho.mqtt.client as mqtt

def on_message(client, userdata, message):
    print(f"Otrzymano wiadomość: {message.payload.decode()}")

client = mqtt.Client()
client.on_message = on_message
client.connect("localhost")
client.subscribe("test/topic")
client.loop_start()

Gdzie wykorzystuje się MQTT?

MQTT znajduje zastosowanie w wielu dziedzinach:

MQTT to wydajny i lekki protokół komunikacyjny, idealny do zastosowań IoT. Dzięki niskiemu zużyciu zasobów i elastyczności znajduje zastosowanie w wielu branżach, od inteligentnych domów po przemysłowe systemy automatyki.