MQTT (Message Queuing Telemetry Transport) to lekki protokół publikuj-subskrybuj, który według specyfikacji OASIS jest zoptymalizowany dla urządzeń IoT z ograniczonymi zasobami i niestabilnymi połączeniami sieciowymi. Mosquitto to według Eclipse Foundation jedna z najpopularniejszych implementacji brokera MQTT.
Instalacja Mosquitto na Raspberry Pi / Debianie
sudo apt update
sudo apt install -y mosquitto mosquitto-clients
# Włącz jako usługę systemową
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
# Sprawdź status
sudo systemctl status mosquitto
Konfiguracja z uwierzytelnianiem
# /etc/mosquitto/mosquitto.conf
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
# Utwórz użytkownika
sudo mosquitto_passwd -c /etc/mosquitto/passwd uzytkownik1
sudo systemctl restart mosquitto
Testowanie MQTT
# Terminal 1 — subskrybuj temat
mosquitto_sub -h localhost -u uzytkownik1 -P haslo -t "dom/#" -v
# Terminal 2 — publikuj wiadomość
mosquitto_pub -h localhost -u uzytkownik1 -P haslo
-t "dom/salon/temperatura" -m "22.5"
Przykład: ESP32 wysyła dane przez MQTT
#include <PubSubClient.h>
#include <WiFi.h>
WiFiClient espClient;
PubSubClient klient(espClient);
void setup() {
WiFi.begin("SSID", "HASLO");
klient.setServer("192.168.1.100", 1883);
}
void loop() {
if (!klient.connected()) {
klient.connect("ESP32-czujnik", "uzytkownik1", "haslo");
}
float temp = 23.5; // odczyt z czujnika
klient.publish("dom/czujnik/temperatura", String(temp).c_str());
delay(30000);
}