MQTT (transportul de telemetrie de coadă de mesaje) este un protocol ușor de mesagerie utilizat în mod obișnuit în aplicațiile IoT (Internet of Things) pentru o comunicare fiabilă și eficientă între dispozitive. Găzduirea unui server MQTT pe un Raspberry PI vă permite să creați un hub de mesagerie local pentru proiectele dvs. IoT. Acest ghid vă parcurge prin configurarea și rularea unui server MQTT pe un Raspberry Pi.
Ce vei avea nevoie
- Zmeură pi (Orice model cu suport GPIO, de exemplu, PI 3, PI 4)
- Card microSD (cel puțin 8 GB, clasa 10 sau mai bine)
- Alimentare electrică (5V, 2,5A minim pentru PI 3; 5V, 3A pentru PI 4)
- Raspberry pi OS (Versiunea sau desktop)
- Conexiune la internet
- Clienți MQTT (de exemplu, ESP8266, ESP32 sau instrumente software MQTT)
Pasul 1: Actualizați Raspberry Pi
- Asigurați -vă că Raspberry Pi este actualizat:
sudo apt update && sudo apt upgrade -y
Pasul 2: Instalați brokerul Mosquitto MQTT
Mosquitto este un broker MQTT ușor și utilizat pe scară largă.
-
Instalați Mosquitto și instrumentele clientului său:
sudo apt install -y mosquitto mosquitto-clients
-
Activați Mosquitto să înceapă la boot:
sudo systemctl enable mosquitto
-
Începeți serviciul Mosquitto:
sudo systemctl start mosquitto
Pasul 3: Testați brokerul MQTT
-
Deschideți două ferestre terminale sau sesiuni SSH către Raspberry Pi.
-
În primul terminal, abonați -vă la un subiect de testare:
mosquitto_sub -h localhost -t test/topic
-
În cel de -al doilea terminal, publicați un mesaj de testare:
mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
-
Ar trebui să vedeți mesajul „Bună ziua, MQTT!” în primul terminal.
Pasul 4: Configurați Mosquitto pentru conexiuni externe
-
Deschideți fișierul de configurare Mosquitto:
sudo nano /etc/mosquitto/mosquitto.conf
-
Adăugați următoarele linii pentru a permite conexiuni externe:
listener 1883 allow_anonymous true
Nota: Pentru medii de producție, configurați autentificarea utilizatorului în loc să permiteți accesul anonim.
-
Reporniți serviciul Mosquitto pentru a aplica modificări:
sudo systemctl restart mosquitto
-
Testați conexiunea de pe un alt dispozitiv din aceeași rețea folosind un instrument client MQTT (de exemplu, MQTT.FX sau MQTT Explorer).
Pasul 5: Asigurați -vă brokerul MQTT (opțional)
-
Activați autentificarea parolei:
sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
- Introduceți și confirmați o parolă pentru utilizator.
-
Actualizați fișierul de configurare Mosquitto pentru a utiliza fișierul de parolă:
allow_anonymous false password_file /etc/mosquitto/passwd
-
Reporniți serviciul Mosquitto:
sudo systemctl restart mosquitto
-
Testați conexiunea folosind numele de utilizator și parola.
Pasul 6: Conectați dispozitivele IoT la brokerul MQTT
-
Pentru ESP8266/ESP32: Utilizați IDE Arduino pentru a vă programa dispozitivele IoT pentru a publica/abona la subiecte de pe brokerul dvs. Raspberry PI MQTT.
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* mqtt_server = "<raspberry-pi-ip>"; WiFiClient espClient; PubSubClient client(espClient); void setup() { WiFi.begin(ssid, password); client.setServer(mqtt_server, 1883); } void loop() { if (!client.connected()) { client.connect("ESPClient"); } client.loop(); client.publish("test/topic", "Hello from ESP8266!"); delay(1000); }
-
Pentru clienții software: Utilizați MQTT.FX, MQTT Explorer sau Python cu
paho-mqtt
bibliotecă.import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("test/topic") def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("<raspberry-pi-ip>", 1883, 60) client.loop_forever()
Depanare
-
Nu se poate conecta la brokerul MQTT:
- Asigurați -vă că Mosquitto rulează:
sudo systemctl status mosquitto
- Verificați setările firewall -ului de pe Raspberry Pi.
- Asigurați -vă că Mosquitto rulează:
-
Erori de autentificare:
- Verificați numele de utilizator și parola din configurația Mosquitto și configurarea clientului.
-
Conexiune refuzată:
- Asigurați -vă că dispozitivul este în aceeași rețea ca Raspberry Pi.
- Verificați că portul 1883 este deschis.
Aplicații ale MQTT
- Comunicarea dispozitivului IoT
- Sisteme de automatizare la domiciliu
- Streaming de date în timp real
- Monitorizare și control la distanță
Concluzie
Găzduirea unui server MQTT pe un Raspberry Pi este o modalitate excelentă de a permite o comunicare ușoară și fiabilă pentru proiectele dvs. IoT. Urmărind acest ghid, puteți configura și asigura un broker MOSQITTO MQTT, conecta dispozitive IoT și puteți începe să construiți aplicații puternice. Experimentați cu diferite configurații pentru a explora întregul potențial al MQTT!