MQTT (Message Queuing Telemetry Transport) is een lichtgewicht berichtenprotocol dat vaak wordt gebruikt in IoT (Internet of Things) -toepassingen voor betrouwbare en efficiënte communicatie tussen apparaten. Door een MQTT -server op een Raspberry PI te hosten, kunt u een lokale berichtenhub maken voor uw IoT -projecten. Deze gids leidt u door het opzetten en uitvoeren van een MQTT -server op een Raspberry Pi.
Wat u nodig hebt
- Raspberry Pi (Elk model met GPIO -ondersteuning, bijvoorbeeld PI 3, PI 4)
- MicroSD -kaart (Minimaal 8 GB, Klasse 10 of beter)
- Stroomvoorziening (5V, 2,5a minimum voor Pi 3; 5V, 3a voor PI 4)
- Raspberry Pi Os (Lite- of desktopversie)
- Internetverbinding
- MQTT -clients (bijv. ESP8266-, ESP32- of MQTT -softwaretools)
Stap 1: Werk de Raspberry Pi bij
- Zorg ervoor dat uw Raspberry Pi up -to -date is:
sudo apt update && sudo apt upgrade -y
Stap 2: Installeer Mosquitto MQTT -makelaar
Mosquitto is een lichtgewicht en veel gebruikte MQTT -makelaar.
-
Installeer het mugquitto en zijn klantgereedschap:
sudo apt install -y mosquitto mosquitto-clients
-
Schakel Mosquitto in staat om te starten bij het opstarten:
sudo systemctl enable mosquitto
-
Start de Mosquits -service:
sudo systemctl start mosquitto
Stap 3: Test de MQTT -makelaar
-
Open twee terminalvensters of SSH -sessies voor uw Raspberry Pi.
-
Schrijf in de eerste terminal in op een testonderwerp:
mosquitto_sub -h localhost -t test/topic
-
Publiceer in de tweede terminal een testbericht:
mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
-
Je zou het bericht moeten zien "Hallo, mqtt!" In de eerste terminal.
Stap 4: Mosquitto configureren voor externe verbindingen
-
Open het Mosquitto -configuratiebestand:
sudo nano /etc/mosquitto/mosquitto.conf
-
Voeg de volgende regels toe om externe verbindingen toe te staan:
listener 1883 allow_anonymous true
Opmerking: Stel voor productieomgevingen gebruikersauthenticatie in in plaats van anonieme toegang toe te staan.
-
Start de Mosquits -service opnieuw om wijzigingen toe te passen:
sudo systemctl restart mosquitto
-
Test de verbinding van een ander apparaat op hetzelfde netwerk met behulp van een MQTT -clienttool (bijv. MQTT.FX of MQTT Explorer).
Stap 5: Beveilig de MQTT -makelaar (optioneel)
-
Schakel wachtwoordverificatie in:
sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
- Voer een wachtwoord in en bevestig voor de gebruiker.
-
Update het Mobitto -configuratiebestand om het wachtwoordbestand te gebruiken:
allow_anonymous false password_file /etc/mosquitto/passwd
-
Start de Mosquits -service opnieuw op:
sudo systemctl restart mosquitto
-
Test de verbinding met de gebruikersnaam en het wachtwoord.
Stap 6: Verbind IoT -apparaten met de MQTT -makelaar
-
Voor ESP8266/ESP32: Gebruik de Arduino IDE om uw IoT -apparaten te programmeren om te publiceren/abonneren op onderwerpen op uw Raspberry Pi MQTT -makelaar.
#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); }
-
Voor softwareclients: Gebruik mqtt.fx, mqtt explorer of python met de
paho-mqtt
bibliotheek.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()
Problemen oplossen
-
Kan geen verbinding maken met MQTT -makelaar:
- Zorg ervoor dat Mosquitto loopt:
sudo systemctl status mosquitto
- Controleer de firewall -instellingen op uw Raspberry Pi.
- Zorg ervoor dat Mosquitto loopt:
-
Authenticatiefouten:
- Controleer de gebruikersnaam en het wachtwoord in de Mosquitto -configuratie en clientinstellingen.
-
Verbinding weigerde:
- Zorg ervoor dat het apparaat zich op hetzelfde netwerk bevindt als de Raspberry Pi.
- Controleer of poort 1883 open is.
Toepassingen van MQTT
- IoT -apparaatcommunicatie
- Home Automation Systems
- Realtime gegevensstreaming
- Monitoring en controle op afstand
Conclusie
Het hosten van een MQTT -server op een Raspberry Pi is een uitstekende manier om lichtgewicht en betrouwbare communicatie voor uw IoT -projecten mogelijk te maken. Door deze gids te volgen, kunt u een Mosquitto MQTT -makelaar instellen en beveiligen, IoT -apparaten aansluiten en krachtige toepassingen beginnen te bouwen. Experimenteer met verschillende configuraties om het volledige potentieel van MQTT te verkennen!