Het hosten van een MQTT -server op de Raspberry Pi

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

  1. Raspberry Pi (Elk model met GPIO -ondersteuning, bijvoorbeeld PI 3, PI 4)
  2. MicroSD -kaart (Minimaal 8 GB, Klasse 10 of beter)
  3. Stroomvoorziening (5V, 2,5a minimum voor Pi 3; 5V, 3a voor PI 4)
  4. Raspberry Pi Os (Lite- of desktopversie)
  5. Internetverbinding
  6. MQTT -clients (bijv. ESP8266-, ESP32- of MQTT -softwaretools)

Stap 1: Werk de Raspberry Pi bij

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

  1. Installeer het mugquitto en zijn klantgereedschap:

    sudo apt install -y mosquitto mosquitto-clients
    
  2. Schakel Mosquitto in staat om te starten bij het opstarten:

    sudo systemctl enable mosquitto
    
  3. Start de Mosquits -service:

    sudo systemctl start mosquitto
    

Stap 3: Test de MQTT -makelaar

  1. Open twee terminalvensters of SSH -sessies voor uw Raspberry Pi.

  2. Schrijf in de eerste terminal in op een testonderwerp:

    mosquitto_sub -h localhost -t test/topic
    
  3. Publiceer in de tweede terminal een testbericht:

    mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
    
  4. Je zou het bericht moeten zien "Hallo, mqtt!" In de eerste terminal.


Stap 4: Mosquitto configureren voor externe verbindingen

  1. Open het Mosquitto -configuratiebestand:

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

  3. Start de Mosquits -service opnieuw om wijzigingen toe te passen:

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

  1. Schakel wachtwoordverificatie in:

    sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
    
    • Voer een wachtwoord in en bevestig voor de gebruiker.
  2. Update het Mobitto -configuratiebestand om het wachtwoordbestand te gebruiken:

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    
  3. Start de Mosquits -service opnieuw op:

    sudo systemctl restart mosquitto
    
  4. Test de verbinding met de gebruikersnaam en het wachtwoord.


Stap 6: Verbind IoT -apparaten met de MQTT -makelaar

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

  1. Kan geen verbinding maken met MQTT -makelaar:

    • Zorg ervoor dat Mosquitto loopt: sudo systemctl status mosquitto
    • Controleer de firewall -instellingen op uw Raspberry Pi.
  2. Authenticatiefouten:

    • Controleer de gebruikersnaam en het wachtwoord in de Mosquitto -configuratie en clientinstellingen.
  3. 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

  1. IoT -apparaatcommunicatie
  2. Home Automation Systems
  3. Realtime gegevensstreaming
  4. 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!

Laat een reactie achter

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.