Outils pour utilisateurs

Outils du site


software:applications:mosquitto

Ceci est une ancienne révision du document !


Mosquitto

Mosquitto est un broker MQTT. Il réceptionne et redistribue les messages via le protocole MQTT.

Test avec Docker

Une solution simple pour tester le service est d'utiliser Docker:

docker image pull eclipse-mosquitto:2.0.14
 
docker container run --detach --rm --name test_mosquitto --publish 127.0.0.1:1883:1883 eclipse-mosquitto:2.0.14

L'image Docker contient également des commandes permettant d'envoyer ou de recevoir facilement des messages depuis la ligne de commandes:

Créer un processus souscripteur qui recevra les messages

# ouvrir un shell interactif dans le conteneur
docker container exec -it test_mosquitto /bin/sh
 
# Pour recevoir les messages on s'inscrit auprès du serveur (souscription aux topics).
# Ici on souhaite recevoir tous les topics. Les messages seront affichés sur la console:
mosquitto_sub --id receiver_test --topic '#' --verbose

Pour envoyer un message, on procède de façon similaire:

# Ouvrir un autre shell interactif dans le conteneur
docker container exec -it test_mosquitto /bin/sh
 
# Pour envoyer un message au Broker on utilise la commande **mosquitto_pub** (publish)
mosquitto_pub --id message_emitter -h localhost -r -t "test/light/salon" -m '{ "status": "on"}'

Si on affiche la console du processus souscripteur, on voit alors apparaître le message:

test/light/salon { "status": "on"}

Pour envoyer des messages MQTT via une application Python, voir note Publier des messages MQTT en Python.

Gestion de l'authentification

Lors du développement, on peut vouloir autoriser les connexions clientes sans authentification:

# Mosquitto écoute sur le port 1883
listener 1883

# Accepte les connexions clientes sans authentification
allow_anonymous true

Il est important de restreindre l'accès au Broker pour que seuls les clients autorisés puissent se connecter. Plusieurs méthodes d'authentification existent, au minima on pourra utiliser

Modifier le fichier de configuration pour utiliser une authentification par mot de passe:

password_file /etc/mosquitto/password_file

L'utilitaire mosquitto_passwd permet d'enregistrer des couples user/password dans un fichier:

# créer un nouveau fichier
mosquitto_passwd -c password_file username
 
# Pour altérer un fichier existant, ne pas utiliser l'option -c
# créer ou modifier l'utilisateur username
mosquitto_passwd password_file username
 
# supprimer l'utilisateur username
mosquitto_passwd password_file -D username

Dans l'exemple ci-dessous on crée un fichier vide et on utilise un conteneur Docker pour peupler le fichier:

touch password_file
 
# Création d'un conteneur éphémère pour exécuter la commande mosquitto_pwd et peupler le fichier monté
# en écriture dans le conteneur
docker container run -it --rm --name 'create_conf' -v ${PWD}/password_file:/password_file:rw eclipse-mosquitto:2.0.14 mosquitto_passwd /password_file user-test

Références

software/applications/mosquitto.1649708189.txt.gz · Dernière modification : 2022/04/11 20:16 de yoann