Hébergement d'un serveur MQTT sur le Raspberry Pi

MQTT (Message Dileste Télémétrie Transport) est un protocole de messagerie léger couramment utilisé dans les applications IoT (Internet des objets) pour une communication fiable et efficace entre les appareils. L'hébergement d'un serveur MQTT sur un Raspberry Pi vous permet de créer un centre de messagerie local pour vos projets IoT. Ce guide vous guide dans la configuration et l'exécution d'un serveur MQTT sur un Raspberry Pi.


Ce dont vous aurez besoin

  1. Raspberry Pi (Tout modèle avec le support GPIO, par ex., PI 3, PI 4)
  2. Carte microSD (au moins 8 Go, classe 10 ou mieux)
  3. Alimentation électrique (5v, 2,5a minimum pour pi 3; 5v, 3a pour pi 4)
  4. Raspberry Pi OS (Version Lite ou Desktop)
  5. Connexion Internet
  6. Clients MQTT (par exemple, outils logiciels ESP8266, ESP32 ou MQTT)

Étape 1: Mettez à jour le Raspberry Pi

  1. Assurez-vous que votre Raspberry Pi est à jour:
    sudo apt update && sudo apt upgrade -y
    

Étape 2: Installez le courtier Mosquitto MQTT

Mosquitto est un courtier MQTT léger et largement utilisé.

  1. Installez Mosquitto et ses outils clients:

    sudo apt install -y mosquitto mosquitto-clients
    
  2. Activer Mosquitto à démarrer au démarrage:

    sudo systemctl enable mosquitto
    
  3. Démarrez le service Mosquitto:

    sudo systemctl start mosquitto
    

Étape 3: Testez le courtier MQTT

  1. Ouvrez deux séances de fenêtres terminales ou SSH à votre Raspberry Pi.

  2. Dans le premier terminal, abonnez-vous à un sujet de test:

    mosquitto_sub -h localhost -t test/topic
    
  3. Dans le deuxième terminal, publiez un message de test:

    mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
    
  4. Vous devriez voir le message "Bonjour, MQTT!" dans le premier terminal.


Étape 4: Configurer le mosquitto pour les connexions externes

  1. Ouvrez le fichier de configuration de Mosquitto:

    sudo nano /etc/mosquitto/mosquitto.conf
    
  2. Ajoutez les lignes suivantes pour autoriser les connexions externes:

    listener 1883
    allow_anonymous true
    

    Note: Pour les environnements de production, configurez l'authentification des utilisateurs au lieu de permettre un accès anonyme.

  3. Redémarrez le service Mosquitto pour appliquer les modifications:

    sudo systemctl restart mosquitto
    
  4. Testez la connexion à partir d'un autre appareil sur le même réseau à l'aide d'un outil client MQTT (par exemple, MQTT.FX ou MQTT Explorer).


Étape 5: sécuriser le courtier MQTT (facultatif)

  1. Activer l'authentification du mot de passe:

    sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
    
    • Entrez et confirmez un mot de passe pour l'utilisateur.
  2. Mettez à jour le fichier de configuration Mosquitto pour utiliser le fichier de mot de passe:

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    
  3. Redémarrez le service Mosquitto:

    sudo systemctl restart mosquitto
    
  4. Testez la connexion à l'aide du nom d'utilisateur et du mot de passe.


Étape 6: Connectez les appareils IoT au courtier MQTT

  1. Pour ESP8266 / ESP32: Utilisez l'Arduino IDE pour programmer vos appareils IoT pour publier / abonner à des sujets sur votre courtier Raspberry Pi MQTT.

    #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. Pour les clients du logiciel: Utilisez MQTT.FX, MQTT Explorer ou Python avec le paho-mqtt bibliothèque.

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

Dépannage

  1. Impossible de se connecter au courtier MQTT:

    • Assurez-vous que Mosquitto est en cours d'exécution: sudo systemctl status mosquitto
    • Vérifiez les paramètres du pare-feu sur votre Raspberry Pi.
  2. Erreurs d'authentification:

    • Vérifiez le nom d'utilisateur et le mot de passe dans la configuration de Mosquitto et la configuration du client.
  3. Connexion rejetée:

    • Assurez-vous que l'appareil est sur le même réseau que le Raspberry Pi.
    • Vérifiez que le port 1883 est ouvert.

Applications de MQTT

  1. Communication de l'appareil IoT
  2. Systèmes de base
  3. Streaming de données en temps réel
  4. Surveillance et contrôle à distance

Conclusion

L'hébergement d'un serveur MQTT sur un Raspberry Pi est un excellent moyen d'activer une communication légère et fiable pour vos projets IoT. En suivant ce guide, vous pouvez configurer et sécuriser un courtier Mosquitto MQTT, connecter des appareils IoT et commencer à créer des applications puissantes. Expérimentez avec différentes configurations pour explorer le plein potentiel de MQTT!

Laissez un commentaire

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.