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 trueNotera: 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-mqttbibliotek.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!
 
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  