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.

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.

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
  • 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

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.

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/+/temperature capture des topics comme devices/1/temperature mais pas devices/1/2/temperature.

  • Le wildcard # correspond à plusieurs niveaux. Par exemple, devices/# correspond à des topics tels que devices/1/temperature, devices/2/humidity et devices/1/2/somethingElse.

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 :

  1. Abonnez-vous à tous les topics en utilisant le wildcard # :

    mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#"
    
  2. 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.

Vous pouvez vous connecter directement à votre serveur Mosquitto depuis un navigateur web en utilisant WebSockets. Consultez la documentation "WebSockets" pour plus de détails.

Des exemples montrant comment utiliser Mosquitto avec Node.js sont disponibles sur https://github.com/stackhero-io/mosquittoGettingStarted.

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 !