Mosquitto: Premiers pas
Comment débuter avec Mosquitto
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution Mosquitto MQTT cloud prête à l'emploi qui offre de nombreux avantages, notamment :
- Echanges et transferts de messages illimités.
- Authentification de périphériques illimités via une API externe.
- ACLs avancées sur les topics, les utilisateurs et les actions.
- Nom de domaine personnalisable sécurisé en HTTPS (par exemple, https://mqtt.votre-entreprise.com).
- Mises à jour simplifiées en un clic.
- Performance optimale et sécurité renforcée grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Mosquitto MQTT cloud hosting de Stackhero !
Mosquitto est un broker MQTT, implémentant le protocole MQTT (Message Queuing Telemetry Transport), spécialement conçu pour la communication légère entre appareils IoT et serveurs.
Sur Stackhero, Mosquitto est configuré avec un chiffrement TLS et une authentification utilisateur afin d'offrir un environnement de communication sécurisé.
Vous trouverez des exemples de code pratiques illustrant l'utilisation de Mosquitto sur https://github.com/stackhero-io/mosquittoGettingStarted.
Comprendre les topics MQTT
MQTT organise la communication autour de "topics", qui servent de canaux pour publier et s'abonner à des données. Les appareils publient des messages sur des topics spécifiques ou s'y abonnent pour recevoir les mises à jour correspondantes.
Structure des topics MQTT
Les topics dans MQTT sont sensibles à la casse, doivent contenir des caractères UTF-8 et comporter au moins un caractère. La hiérarchie des topics est définie à l'aide du caractère slash (/).
Voici un exemple de configuration pour des appareils IoT collectant des données de température et d'humidité, identifiés par leur adresse MAC :
-
Pour un appareil avec l'adresse MAC
00:00:00:00:00:00:- Température :
devices/00:00:00:00:00:00/temperature - Humidité :
devices/00:00:00:00:00:00/humidity
- Température :
-
Pour un appareil avec l'adresse MAC
11:11:11:11:11:11:- Température :
devices/11:11:11:11:11:11/temperature - Humidité :
devices/11:11:11:11:11:11/humidity
- Température :
Les applications peuvent s'abonner à un topic précis, comme devices/00:00:00:00:00:00/temperature, pour recevoir les données de l'appareil IoT concerné.
Utilisation des jokers dans les topics MQTT
MQTT prend en charge les jokers pour une gestion efficace des topics :
-
Le joker
+correspond à un seul niveau dans la hiérarchie des topics. Par exemple, s'abonner àdevices/+/temperaturepermet de recevoir les topics commedevices/1/temperaturemais pasdevices/1/2/temperature. -
Le joker
#correspond à plusieurs niveaux. Par exemple,devices/#couvre les topics commedevices/1/temperature,devices/2/humidityetdevices/1/2/somethingElse.
Tester avec mosquitto_pub et mosquitto_sub
Les outils CLI mosquitto_pub et mosquitto_sub sont idéaux pour tester une configuration MQTT. Avant de les utiliser, assurez-vous que l'option "Autoriser les connexions non chiffrées" est désactivée dans la configuration Mosquitto sur le tableau de bord Stackhero.
Voici comment procéder :
-
Abonnez-vous à tous les topics en utilisant le joker
#:mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#" -
Ouvrez un autre terminal pour publier un message sur un topic :
mosquitto_pub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/sensor/a" -m "It works"
Dans la première console, vous verrez le message publié ainsi que les logs de debug activés par l'option -d.
Connexion à MQTT via WebSockets
Vous pouvez vous connecter directement à votre serveur Mosquitto depuis un navigateur web en utilisant WebSockets. Consultez la documentation "WebSockets" pour plus de détails.
Node.js et MQTT
Des exemples montrant comment utiliser Mosquitto avec Node.js sont disponibles sur https://github.com/stackhero-io/mosquittoGettingStarted.
Python et MQTT
Pour utiliser Mosquitto avec Python, il est recommandé d'utiliser la bibliothèque cliente Paho MQTT Python. Installez-la avec :
pip install paho-mqtt
Voici un exemple de script Python pour se connecter à un serveur Mosquitto avec chiffrement TLS et authentification :
import paho.mqtt.client as mqtt
import random
import string
from paho.mqtt.client import CallbackAPIVersion
# Fonction appelée lors de la connexion
def on_connect(client, userdata, flags, reason_code, properties=None):
if reason_code == 0:
print("Connected successfully")
else:
print(f"Connection failed with reason {reason_code}")
# Fonction appelée lors de la réception d'un message
def on_message(client, userdata, msg, properties=None):
print(f"Received message: {msg.payload.decode()} on topic {msg.topic}")
# Génère un client ID aléatoire
def generate_client_id(length=8):
characters = string.ascii_letters + string.digits
return "client_" + ''.join(random.choice(characters) for _ in range(length))
client_id = generate_client_id()
client = mqtt.Client(
client_id=client_id,
callback_api_version=CallbackAPIVersion.VERSION2
)
client.on_connect = on_connect
client.on_message = on_message
host = "<XXXXXX>.stackhero-network.com"
port = <PORT_TLS>
client.username_pw_set("<USER>", "<PASSWORD>")
client.tls_set()
try:
print(f"Connecting to {host} with client ID: {client_id}")
client.connect(host, port)
client.loop_start()
client.subscribe("$SYS/#")
try:
while True:
pass
except KeyboardInterrupt:
print("\nDisconnecting...")
client.loop_stop()
client.disconnect()
except Exception as e:
print(f"Error: {e}")
Avec ces instructions, vous disposez de toutes les informations nécessaires pour commencer à utiliser Mosquitto sur Stackhero. Bonne exploration de MQTT !