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 offrant de nombreux avantages, notamment :
- Échanges et transferts illimités de messages.
- Authentification illimitée des appareils via une API externe.
- ACLs avancées sur les topics, utilisateurs et actions.
- Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://mqtt.votre-entreprise.com).
- Mises à jour simplifiées en un clic.
- Performance optimale et sécurité robuste 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écifiquement conçu pour une communication légère entre les appareils IoT et les serveurs.
Sur Stackhero, Mosquitto est configuré avec un chiffrement TLS et une authentification utilisateur pour offrir un environnement de communication sécurisé.
Vous pouvez trouver des exemples de code pratiques montrant comment utiliser Mosquitto sur https://github.com/stackhero-io/mosquittoGettingStarted.
Comprendre les topics MQTT
MQTT organise la communication en "topics", qui agissent comme des canaux pour publier et s'abonner aux données. Les appareils publient des messages sur des topics spécifiques ou s'y abonnent pour recevoir des mises à jour pertinentes.
Structure des topics MQTT
Les topics dans MQTT sont sensibles à la casse, doivent contenir des caractères UTF-8 et nécessitent au moins un caractère. La hiérarchie au sein 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 leurs adresses 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 spécifique, tel que devices/00:00:00:00:00:00/temperature, pour recevoir des données de l'appareil IoT correspondant.
Utilisation des wildcards dans les topics MQTT
MQTT prend en charge les wildcards pour une gestion efficace des topics :
-
Le wildcard
+correspond à un seul niveau dans la hiérarchie des topics. Par exemple, s'abonner àdevices/+/temperaturecapture des topics commedevices/1/temperaturemais pasdevices/1/2/temperature. -
Le wildcard
#correspond à plusieurs niveaux. Par exemple,devices/#correspond à des topics tels quedevices/1/temperature,devices/2/humidityetdevices/1/2/somethingElse.
Tester avec mosquitto_pub et mosquitto_sub
Les outils CLI mosquitto_pub et mosquitto_sub sont excellents pour tester les configurations MQTT. Avant de les utiliser, assurez-vous que l'option "Autoriser les connexions non sécurisées" est désactivée dans votre configuration Mosquitto sur le tableau de bord Stackhero.
Voici comment tester :
-
Abonnez-vous à tous les topics en utilisant le wildcard
#: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 devriez voir le message publié ainsi que les journaux de débogage 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, la bibliothèque cliente Paho MQTT Python est recommandée. Installez-la avec :
pip install paho-mqtt
Voici un exemple de script Python pour se connecter à un serveur Mosquitto en utilisant le chiffrement TLS et l'authentification :
import paho.mqtt.client as mqtt
import random
import string
from paho.mqtt.client import CallbackAPIVersion
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}")
def on_message(client, userdata, msg, properties=None):
print(f"Received message: {msg.payload.decode()} on topic {msg.topic}")
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 devriez être bien équipé pour commencer à travailler avec Mosquitto sur Stackhero. Bonne exploration de MQTT !