MQTT est un protocole de messagerie "léger" basé sur un modèle de publication / abonnement sur TCP / IP pour la communication entre les appareils "Internet des objets" tels que ESP8266, Raspberry Pi, etc. automatisation, systèmes d'alarme de sécurité et réseaux de capteurs alimentés par batterie.
Mosquitto est un courtier (ou serveur) de messages open source qui implémente les protocoles MQTT. Avec son bon support communautaire, sa documentation et sa facilité d'installation, il est devenu l'un des courtiers MQTT les plus populaires.
Conditions préalables
- Un serveur Ubuntu 16.04 avec
root
accès
- Port ouvert
TCP:1883
sur le pare-feu
Première étape: installer Mosquitto Broker
Mettez à jour la liste des paquets d'Ubuntu et installez le dernier Mosquitto Broker disponible à partir de celui-ci
sudo apt-get update
sudo apt-get install mosquitto
Le service Mosquitto démarrera après l'installation.
Deuxième étape: installer les clients et tester
Installer les clients MQTT
sudo apt-get install mosquitto-clients
Les clients Mosquitto nous aident à tester facilement MQTT via un utilitaire de ligne de commande. Nous utiliserons deux fenêtres de commandes, une pour vous abonner à un sujet nommé "test"
et une pour y publier un message.
Les rubriques sont des étiquettes utilisées par le courtier pour filtrer les messages pour chaque client connecté. Un programme client abonné à un sujet "Home1/BedroomTemp"
n'écoutera que les messages publiés sur le même sujet par d'autres clients.
Abonnez-vous au sujet "test"
mosquitto_sub -t "test"
Mosquito_sub
est un client d'abonnement que nous avons installé dans la commande précédente. Ici, nous spécifions " -t
" suivi d'un nom de sujet.
Publier un message sur le sujet "test"
Connectez-vous au terminal en tant que deuxième instance et publiez un message sur le "test"
sujet.
mosquitto_pub -m "message from mosquitto_pub client" -t "test"
Ici, le paramètre supplémentaire " –m
" est suivi du message que nous voulons publier. Appuyez sur " Enter
" et vous devriez voir un message mosquitto_pub client
s'afficher sur un autre terminal où mosquito_sub client
est en cours d'exécution.
Troisième étape: sécuriser avec un mot de passe
Mosquitto est livré avec un utilitaire de génération de fichier de mot de passe appelé mosquitto_passwd
.
sudo mosquitto_passwd -c /etc/mosquitto/passwd dave
Password: password
Créez un fichier de configuration pour Mosquitto pointant vers le fichier de mot de passe que nous venons de créer.
sudo nano /etc/mosquitto/conf.d/default.conf
Cela ouvrira un fichier vide. Collez-y ce qui suit.
allow_anonymous false
password_file /etc/mosquitto/passwd
Enregistrez et quittez l'éditeur de texte avec " Ctrl+O
", " Enter
" et " Ctrl+X
".
Redémarrez maintenant le serveur Mosquitto et testez nos modifications.
sudo systemctl restart mosquitto
Dans la fenêtre du client d'abonnement, appuyez sur " Ctrl+C
" pour quitter le client d'abonnement et redémarrez-le avec la commande suivante.
mosquitto_sub -t "test" -u "dave" -P "password"
Notez le -P majuscule ici .
Dans la fenêtre de publication du client, essayez de publier un message sans mot de passe.
mosquitto_pub -t "test" -m "message from mosquitto_pub client"
Le message sera rejeté avec le message d'erreur suivant.
Connection Refused: not authorised.
Error: The connection was refused.
Publiez maintenant un message avec les touches username
et password
.
mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password"
Appuyez sur " Enter
" et vous verrez le message dans la fenêtre du client d'abonnement, comme à l'étape deux.
Conclusion
Nous avons maintenant mis en place un serveur MQTT protégé par mot de passe. Vous pouvez utiliser l'adresse IP publique de votre serveur Ubuntu comme courtier MQTT pour vos projets.