MQTT (Message Queuing Telemetry Transport) är ett lättmeddelandeprotokoll som vanligtvis används i IoT (Internet of Things) för tillförlitlig och effektiv kommunikation mellan enheter. Att vara värd för en MQTT -server på en Raspberry PI gör att du kan skapa ett lokalt meddelanden nav för dina IoT -projekt. Den här guiden leder dig genom att ställa in och köra en MQTT -server på en Raspberry Pi.
Vad du behöver
- Hallon (Varje modell med GPIO -stöd, t.ex. PI 3, PI 4)
- MicroSD -kort (minst 8 GB, klass 10 eller bättre)
- Strömförsörjning (5V, 2,5A minsta för PI 3; 5V, 3A för PI 4)
- Raspberry Pi Os (Lite eller Desktop -version)
- Internetanslutning
- MQTT -klienter (t.ex. ESP8266, ESP32 eller MQTT -programvaruverktyg)
Steg 1: Uppdatera Raspberry Pi
- Se till att din Raspberry Pi är uppdaterad:
sudo apt update && sudo apt upgrade -y
Steg 2: Installera Mosquitto MQTT -mäklare
Mosquitto är en lätt och allmänt använt MQTT -mäklare.
-
Installera Mosquitto och dess klientverktyg:
sudo apt install -y mosquitto mosquitto-clients
-
Aktivera Mosquitto att starta vid start:
sudo systemctl enable mosquitto
-
Starta Mosquitto -tjänsten:
sudo systemctl start mosquitto
Steg 3: Testa MQTT -mäklaren
-
Öppna två terminalfönster eller SSH -sessioner till din Raspberry Pi.
-
Prenumerera på ett testämne i den första terminalen:
mosquitto_sub -h localhost -t test/topic
-
I den andra terminalen publicerar du ett testmeddelande:
mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
-
Du bör se meddelandet "Hej, MQTT!" i den första terminalen.
Steg 4: Konfigurera Mosquitto för externa anslutningar
-
Öppna Mosquitto -konfigurationsfilen:
sudo nano /etc/mosquitto/mosquitto.conf
-
Lägg till följande rader för att tillåta externa anslutningar:
listener 1883 allow_anonymous true
Notera: För produktionsmiljöer, ställ in användarverifiering istället för att tillåta anonym åtkomst.
-
Starta om Mosquitto -tjänsten för att tillämpa ändringar:
sudo systemctl restart mosquitto
-
Testa anslutningen från en annan enhet i samma nätverk med ett MQTT -klientverktyg (t.ex. MQTT.FX eller MQTT Explorer).
Steg 5: Säkra MQTT -mäklaren (valfritt)
-
Aktivera lösenordsautentisering:
sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
- Ange och bekräfta ett lösenord för användaren.
-
Uppdatera Mosquitto -konfigurationsfilen för att använda lösenordsfilen:
allow_anonymous false password_file /etc/mosquitto/passwd
-
Starta om Mosquitto -tjänsten:
sudo systemctl restart mosquitto
-
Testa anslutningen med användarnamnet och lösenordet.
Steg 6: Anslut IoT -enheter till MQTT -mäklaren
-
För ESP8266/ESP32: Använd Arduino IDE för att programmera dina IoT -enheter för att publicera/prenumerera på ämnen på din Raspberry Pi MQTT -mäklare.
#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); }
-
För programvaruklienter: Använd mqtt.fx, mqtt explorer eller python med
paho-mqtt
bibliotek.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()
Felsökning
-
Det går inte att ansluta till MQTT -mäklare:
- Se till att Mosquitto körs:
sudo systemctl status mosquitto
- Kontrollera brandväggsinställningarna på din Raspberry Pi.
- Se till att Mosquitto körs:
-
Autentiseringsfel:
- Kontrollera användarnamnet och lösenordet i Mosquitto -konfigurationen och klientinställningen.
-
Anslutning vägrade:
- Se till att enheten finns i samma nätverk som Raspberry Pi.
- Kontrollera att Port 1883 är öppen.
Applikationer av MQTT
- IoT -enhetskommunikation
- Hemautomationssystem
- Dataströmning i realtid
- Fjärrövervakning och kontroll
Slutsats
Att vara värd för en MQTT -server på en Raspberry Pi är ett utmärkt sätt att möjliggöra lätt och pålitlig kommunikation för dina IoT -projekt. Genom att följa den här guiden kan du ställa in och säkra en Mosquitto MQTT -mäklare, ansluta IoT -enheter och börja bygga kraftfulla applikationer. Experimentera med olika konfigurationer för att utforska MQTT: s fulla potential!