====== Mosquitto : client et serveur MQTT ====== {{ :dummy.png?75x75|Client et serveur MQTT}} **Mosquitto** est un courtier de messages (ou broker / serveur MQTT) **MQTT** open source. Plus d'infos sur MQTT à la page [[electronique:mqtt:]]. **Mosquitto** peut être utilisé pour implémenter des scénarios tels que la collecte de données de capteurs, la surveillance de l'état des appareils et la gestion de l'IoT en général. Les clients **MQTT** peuvent se connecter à **Mosquitto** pour publier et/ou recevoir des messages sur des topics spécifiques, permettant une communication efficace et fiable entre les appareils. Dans cet article j'installe **Mosquitto** sur **Rasbperry Pi**. Le port par défaut **1883/tcp** sera utilisé. ===== Installer le service Mosquitto ===== Voici les étapes générales pour installer Mosquitto sur Rasbperry Pi OS, Debian ou Ubuntu : sudo apt update sudo apt install mosquitto Après l'installation, vous pouvez vérifier si **Mosquitto** est en cours d'exécution en utilisant la commande ''mosquitto -v'' dans l'invite de commandes. Cela devrait afficher la version de **Mosquitto** et les informations de journalisation. ===== Vérifier l’accessibilité du service ===== Pour vous assurer que le port **Mosquitto** est ouvert, vous pouvez utiliser un outil en ligne de commande comme [[informatique:linux:commandes:nmap|nmap]] pour scanner votre adresse IP publique et vérifier si le port 1883 est ouvert. Par exemple, en utilisant la commande suivante : ''nmap -p 1883 adresse_ip_broker''. Si le port **Mosquitto** est ouvert, vous devriez voir une ligne dans la sortie de la commande qui indique que le port 1883 est "open". Je conseille d’exécuter ''nmap'' sur un autre ordinateur que celui qui exécute le service Mosquitto. ❯ nmap -p 1883 rpimqtt Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-19 08:30 CET Nmap scan report for rpimqtt (192.168.100.208) Host is up (0.00085s latency). rDNS record for 192.168.100.208: rpimqtt.acegrp.lan PORT STATE SERVICE 1883/tcp open mqtt Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds ===== Configurer la connexion identifiée ===== La connexion à Mosquitto peut être anonyme ou avec un nom d'utilisateur et un mot de passe, selon la configuration du serveur. Dans se paragraphe nous abordons la configuration d'un utilisateur. Pour créer un utilisateur et de définir un mot de passe afin d'accéder à Mosquitto, il faut utiliser l'utilitaire ''mosquitto_passwd'' qui est installé avec **Mosquitto** et permet de gérer les informations d'identification des utilisateurs pour **Mosquitto**. sudo mosquitto_passwd -c /etc/mosquitto/passwd UTILISATEUR Plus spécifiquement, cette commande effectue les actions suivantes : * ''sudo'' permet d'exécuter la commande avec des privilèges d'administrateur pour pouvoir écrire dans le dossier /etc/mosquitto où se trouve le fichier de mots de passe. * ''mosquitto_passwd'' est l'utilitaire de ligne de commande pour gérer le fichier de mots de passe. * ''-c'' crée un nouveau fichier de mots de passe s'il n'existe pas déjà, ou remplace un fichier existant. * ''/etc/mosquitto/passwd'' est le chemin d'accès complet au fichier de mots de passe à créer ou modifier. * ''UTILISATEUR'' est le nom d'utilisateur à ajouter au fichier de mots de passe. Vous pouvez remplacer ce nom d'utilisateur par le nom que vous souhaitez utiliser. Une fois que vous avez créé le fichier de mots de passe et ajouté des utilisateurs, vous pouvez utiliser ces informations d'identification pour restreindre l'accès à **Mosquitto**, en configurant l'authentification basée sur le nom d'utilisateur et le mot de passe dans le fichier de configuration de **Mosquitto**. Cela est particulièrement important si vous utilisez **Mosquitto** dans un environnement de production ou si vous souhaitez sécuriser l'accès à votre **broker MQTT**. Vous devez modifier le fichier de configuration de **Mosquitto** pour autoriser l'authentification basée sur le nom d'utilisateur et le mot de passe. Ouvrez le fichier de configuration de **Mosquitto**. Le fichier peut être situé à différents endroits en fonction de votre installation. Par exemple, sur une installation standard de Mosquitto sous Linux, le fichier se trouve généralement dans ''/etc/mosquitto/mosquitto.conf''. Ajoutez les lignes suivantes au fichier de configuration pour spécifier le chemin d'accès au fichier de mots de passe que vous avez créé avec ''mosquitto_passwd'', ainsi que les paramètres d'authentification : password_file /etc/mosquitto/passwd allow_anonymous false Enregistrez le fichier de configuration et redémarrez le service **Mosquitto** pour que les modifications prennent effet : sudo systemctl restart mosquitto Après avoir suivi ces étapes, les utilisateurs devront s'authentifier avec un nom d'utilisateur et un mot de passe valides pour publier et souscrire à des messages dans **Mosquitto**. Si l'utilisateur n'a pas les bonnes informations d'identification, il sera refusé d'accès. Cette fonctionnalité de sécurité renforce la sécurité de **Mosquitto** et permet de restreindre l'accès à des utilisateurs de confiance uniquement. ===== Configurer la connexion anonyme ===== La connexion à Mosquitto peut être anonyme ou avec un nom d'utilisateur et un mot de passe, selon la configuration du serveur. Dans ce paragraphe nous abordons la configuration pour une connexion anonyme. Pour indiquer que la connexion au serveur MQTT est anonyme (sans nom d'utilisateur ni mot de passe), vous devez ajouter les lignes suivantes dans votre fichier de configuration ''/etc/mosquitto/mosquitto.conf'' : allow_anonymous true Ceci autorisera les connexions anonymes au serveur MQTT. Si cette option n'est pas définie, toutes les connexions nécessiteront un nom d'utilisateur et un mot de passe valides. Assurez-vous de redémarrer le serveur MQTT après avoir modifié le fichier de configuration pour que les modifications prennent effet. Notez que l'utilisation de connexions anonymes peut présenter des risques de sécurité, car cela permet à n'importe qui de se connecter et de publier ou de recevoir des messages sans authentification. Il est donc recommandé d'utiliser des informations d'authentification sécurisées pour protéger votre serveur MQTT. ===== Envoyer / recevoir des messages MQTT ===== **Mosquitto-clients** est un outil en ligne de commande fourni avec le broker **Mosquitto** pour publier et souscrire à des messages MQTT à partir de la ligne de commande. En d'autres termes, **Mosquitto-clients** permet aux développeurs et aux administrateurs de système de tester et de déboguer des applications **MQTT** en utilisant des commandes simples pour publier et recevoir des messages. Cela peut être utile pour vérifier la connectivité, le flux de données et le traitement des messages entre les appareils et le broker Mosquitto. Pour installer les **clients Mosquitto**, y compris le client de ligne de commande ''mosquitto_sub'' et le client d'envoi ''mosquitto_pub'', vous pouvez suivre ces étapes : sudo apt update sudo apt install mosquitto-clients Vous pouvez maintenant utiliser les clients Mosquitto pour publier et souscrire à des messages dans Mosquitto. Par exemple, vous pouvez utiliser la commande ''mosquitto_pub'' pour __publier des messages MQTT__ à un topic ''sensor/elec'' : mosquitto_pub -h localhost -t sensor/elec -m 2546 Par exemple vous pouvez utiliser la commande ''mosquitto_sub'' pour souscrire au topic ''sensor/elec'' et __recevoir des messages MQTT__ : mosquitto_sub -h localhost -t "sensor/elec"