Värd för en MQTT -server på Raspberry Pi

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

  1. Hallon (Varje modell med GPIO -stöd, t.ex. PI 3, PI 4)
  2. MicroSD -kort (minst 8 GB, klass 10 eller bättre)
  3. Strömförsörjning (5V, 2,5A minsta för PI 3; 5V, 3A för PI 4)
  4. Raspberry Pi Os (Lite eller Desktop -version)
  5. Internetanslutning
  6. MQTT -klienter (t.ex. ESP8266, ESP32 eller MQTT -programvaruverktyg)

Steg 1: Uppdatera Raspberry Pi

  1. 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.

  1. Installera Mosquitto och dess klientverktyg:

    sudo apt install -y mosquitto mosquitto-clients
    
  2. Aktivera Mosquitto att starta vid start:

    sudo systemctl enable mosquitto
    
  3. Starta Mosquitto -tjänsten:

    sudo systemctl start mosquitto
    

Steg 3: Testa MQTT -mäklaren

  1. Öppna två terminalfönster eller SSH -sessioner till din Raspberry Pi.

  2. Prenumerera på ett testämne i den första terminalen:

    mosquitto_sub -h localhost -t test/topic
    
  3. I den andra terminalen publicerar du ett testmeddelande:

    mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
    
  4. Du bör se meddelandet "Hej, MQTT!" i den första terminalen.


Steg 4: Konfigurera Mosquitto för externa anslutningar

  1. Öppna Mosquitto -konfigurationsfilen:

    sudo nano /etc/mosquitto/mosquitto.conf
    
  2. 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.

  3. Starta om Mosquitto -tjänsten för att tillämpa ändringar:

    sudo systemctl restart mosquitto
    
  4. 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)

  1. Aktivera lösenordsautentisering:

    sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
    
    • Ange och bekräfta ett lösenord för användaren.
  2. Uppdatera Mosquitto -konfigurationsfilen för att använda lösenordsfilen:

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    
  3. Starta om Mosquitto -tjänsten:

    sudo systemctl restart mosquitto
    
  4. Testa anslutningen med användarnamnet och lösenordet.


Steg 6: Anslut IoT -enheter till MQTT -mäklaren

  1. 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);
    }
    
  2. 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

  1. 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.
  2. Autentiseringsfel:

    • Kontrollera användarnamnet och lösenordet i Mosquitto -konfigurationen och klientinställningen.
  3. Anslutning vägrade:

    • Se till att enheten finns i samma nätverk som Raspberry Pi.
    • Kontrollera att Port 1883 är öppen.

Applikationer av MQTT

  1. IoT -enhetskommunikation
  2. Hemautomationssystem
  3. Dataströmning i realtid
  4. 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!

Lämna en kommentar

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.