Hosting eines MQTT -Servers auf dem Raspberry PI

MQTT (Message Queuing Telemetry Transport) ist ein leichtes Messaging -Protokoll, das häufig in IoT -Anwendungen (Internet of Things) für zuverlässige und effiziente Kommunikation zwischen Geräten verwendet wird. Mit dem Hosting eines MQTT -Servers auf einem Raspberry PI können Sie einen lokalen Messaging -Hub für Ihre IoT -Projekte erstellen. Dieser Leitfaden führt Sie durch das Einrichten und Ausführen eines MQTT -Servers auf einem Raspberry Pi.


Was Sie brauchen werden

  1. Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
  2. MicroSD -Karte (mindestens 8 GB, Klasse 10 oder besser)
  3. Stromversorgung (5 V, 2,5A Minimum für PI 3; 5V, 3a für PI 4)
  4. Raspberry Pi OS (Lite- oder Desktop -Version)
  5. Internetverbindung
  6. MQTT -Clients (z. B. ESP8266-, ESP32- oder MQTT -Softwaretools)

Schritt 1: Aktualisieren Sie den Raspberry Pi

  1. Stellen Sie sicher, dass Ihr Himbeer -Pi auf dem neuesten Stand ist:
    sudo apt update && sudo apt upgrade -y
    

Schritt 2: Installieren Sie den Mosquitto MQTT -Broker

Mosquitto ist ein leichter und weit verbreiteter MQTT -Broker.

  1. Installieren Sie Mosquitto und seine Client -Tools:

    sudo apt install -y mosquitto mosquitto-clients
    
  2. Aktivieren Sie Mosquitto, am Boot zu beginnen:

    sudo systemctl enable mosquitto
    
  3. Starten Sie den Mosquitto -Service:

    sudo systemctl start mosquitto
    

Schritt 3: Testen Sie den MQTT -Broker

  1. Öffnen Sie zwei Terminalfenster oder SSH -Sitzungen in Ihrem Raspberry Pi.

  2. Abonnieren Sie im ersten Terminal ein Testthema:

    mosquitto_sub -h localhost -t test/topic
    
  3. Veröffentlichen Sie im zweiten Terminal eine Testnachricht:

    mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
    
  4. Sie sollten die Nachricht "Hallo, MQTT!" Sehen, im ersten Terminal.


Schritt 4: Konfigurieren Sie Mosquitto für externe Verbindungen

  1. Öffnen Sie die Mosquitto -Konfigurationsdatei:

    sudo nano /etc/mosquitto/mosquitto.conf
    
  2. Fügen Sie die folgenden Zeilen hinzu, um externe Verbindungen zu ermöglichen:

    listener 1883
    allow_anonymous true
    

    Notiz: Richten Sie für Produktionsumgebungen die Benutzerauthentifizierung ein, anstatt einen anonymen Zugriff zu ermöglichen.

  3. Starten Sie den Mosquitto -Service neu, um Änderungen anzuwenden:

    sudo systemctl restart mosquitto
    
  4. Testen Sie die Verbindung von einem anderen Gerät im selben Netzwerk mit einem MQTT -Client -Tool (z. B. MQTT.FX oder MQTT Explorer).


Schritt 5: Sicherstellen Sie den MQTT -Broker (optional)

  1. Aktivieren Sie die Kennwortauthentifizierung:

    sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
    
    • Geben Sie ein Passwort für den Benutzer ein und bestätigen Sie.
  2. Aktualisieren Sie die Mosquitto -Konfigurationsdatei, um die Kennwortdatei zu verwenden:

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    
  3. Starten Sie den Mosquitto -Service neu:

    sudo systemctl restart mosquitto
    
  4. Testen Sie die Verbindung mit dem Benutzernamen und dem Passwort.


Schritt 6: Verbinden Sie IoT -Geräte mit dem MQTT -Broker

  1. Für ESP8266/ESP32: Verwenden Sie die Arduino IDE, um Ihre IoT -Geräte zu programmieren, um Themen auf Ihrem Raspberry Pi MQTT -Broker zu veröffentlichen/abonnieren.

    #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 Software -Clients: Verwenden Sie MQTT.FX, MQTT Explorer oder Python mit dem paho-mqtt Bibliothek.

    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()
    

Fehlerbehebung

  1. Ich kann keine Verbindung zum MQTT -Broker herstellen:

    • Stellen Sie sicher, dass Mücken läuft: sudo systemctl status mosquitto
    • Überprüfen Sie die Firewall -Einstellungen auf Ihrem Himbeer -Pi.
  2. Authentifizierungsfehler:

    • Überprüfen Sie den Benutzernamen und das Passwort in der Mosquitto -Konfiguration und im Client -Setup.
  3. Verbindung abgelehnt:

    • Stellen Sie sicher, dass sich das Gerät im selben Netzwerk wie der Raspberry Pi befindet.
    • Überprüfen Sie, ob Port 1883 geöffnet ist.

Anwendungen von MQTT

  1. IoT -Gerätekommunikation
  2. Heimautomatisierungssysteme
  3. Echtzeitdaten-Streaming
  4. Fernüberwachung und Kontrolle

Abschluss

Das Hosting eines MQTT -Servers auf einem Raspberry Pi ist eine hervorragende Möglichkeit, um eine leichte und zuverlässige Kommunikation für Ihre IoT -Projekte zu ermöglichen. Wenn Sie diesem Handbuch folgen, können Sie einen Mosquitto MQTT -Broker einrichten und sichern, IoT -Geräte verbinden und leistungsstarke Anwendungen aufbauen. Experimentieren Sie mit verschiedenen Konfigurationen, um das volle Potenzial von MQTT zu untersuchen!

Hinterlasse einen 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.