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
- Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
- MicroSD -Karte (mindestens 8 GB, Klasse 10 oder besser)
- Stromversorgung (5 V, 2,5A Minimum für PI 3; 5V, 3a für PI 4)
- Raspberry Pi OS (Lite- oder Desktop -Version)
- Internetverbindung
- MQTT -Clients (z. B. ESP8266-, ESP32- oder MQTT -Softwaretools)
Schritt 1: Aktualisieren Sie den Raspberry Pi
- 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.
-
Installieren Sie Mosquitto und seine Client -Tools:
sudo apt install -y mosquitto mosquitto-clients
-
Aktivieren Sie Mosquitto, am Boot zu beginnen:
sudo systemctl enable mosquitto
-
Starten Sie den Mosquitto -Service:
sudo systemctl start mosquitto
Schritt 3: Testen Sie den MQTT -Broker
-
Öffnen Sie zwei Terminalfenster oder SSH -Sitzungen in Ihrem Raspberry Pi.
-
Abonnieren Sie im ersten Terminal ein Testthema:
mosquitto_sub -h localhost -t test/topic
-
Veröffentlichen Sie im zweiten Terminal eine Testnachricht:
mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
-
Sie sollten die Nachricht "Hallo, MQTT!" Sehen, im ersten Terminal.
Schritt 4: Konfigurieren Sie Mosquitto für externe Verbindungen
-
Öffnen Sie die Mosquitto -Konfigurationsdatei:
sudo nano /etc/mosquitto/mosquitto.conf
-
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.
-
Starten Sie den Mosquitto -Service neu, um Änderungen anzuwenden:
sudo systemctl restart mosquitto
-
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)
-
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.
-
Aktualisieren Sie die Mosquitto -Konfigurationsdatei, um die Kennwortdatei zu verwenden:
allow_anonymous false password_file /etc/mosquitto/passwd
-
Starten Sie den Mosquitto -Service neu:
sudo systemctl restart mosquitto
-
Testen Sie die Verbindung mit dem Benutzernamen und dem Passwort.
Schritt 6: Verbinden Sie IoT -Geräte mit dem MQTT -Broker
-
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); }
-
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
-
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.
- Stellen Sie sicher, dass Mücken läuft:
-
Authentifizierungsfehler:
- Überprüfen Sie den Benutzernamen und das Passwort in der Mosquitto -Konfiguration und im Client -Setup.
-
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
- IoT -Gerätekommunikation
- Heimautomatisierungssysteme
- Echtzeitdaten-Streaming
- 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!