Mosquitto: Aan de slag

Hoe te beginnen met Mosquitto

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt u een volledig beheerde Mosquitto MQTT cloud-omgeving, ontworpen voor betrouwbaarheid en flexibiliteit:

  • Onbeperkte berichtendoorvoer en datatransfers, zodat uw workflows nooit tegen kunstmatige limieten aanlopen.
  • Onbeperkte apparaat-authenticatie via uw eigen externe API, waardoor onboarding en toegangsbeheer moeiteloos verlopen.
  • Geavanceerde ACL's voor gedetailleerde controle over topics, gebruikers en acties.
  • Een eigen domeinnaam met ingebouwde HTTPS voor veilige, herkenbare endpoints (bijvoorbeeld: https://mqtt.uw-bedrijf.com).
  • Probleemloze updates: verbeteringen of beveiligingspatches toepassen met één klik.
  • Consistente prestaties en sterke beveiliging, doordat elke instantie draait op een privé, dedicated infrastructuur.

Versnel uw IoT-projecten en verlaag de operationele last. U kunt binnen enkele minuten beschikken over een veilige, productieklare Mosquitto MQTT cloud hosting-instantie.

Mosquitto is een MQTT-broker die het MQTT-protocol (Message Queuing Telemetry Transport) implementeert, specifiek ontworpen voor lichte communicatie tussen IoT-apparaten en servers.

Op Stackhero is Mosquitto geconfigureerd met TLS-versleuteling en gebruikersauthenticatie om een veilige communicatieomgeving te bieden.

U kunt praktische codevoorbeelden vinden die laten zien hoe u Mosquitto kunt gebruiken op https://github.com/stackhero-io/mosquittoGettingStarted.

MQTT organiseert communicatie in "topics", die fungeren als kanalen voor het publiceren en abonneren op gegevens. Apparaten publiceren berichten naar specifieke topics of abonneren zich erop om relevante updates te ontvangen.

Topics in MQTT zijn hoofdlettergevoelig, moeten UTF-8-tekens bevatten en vereisen ten minste één teken. De hiërarchie binnen topics wordt gedefinieerd met behulp van het schuine streep (/) teken.

Hier is een voorbeeldconfiguratie voor IoT-apparaten die temperatuur- en vochtigheidsgegevens verzamelen, geïdentificeerd door hun MAC-adressen:

  • Voor een apparaat met MAC-adres 00:00:00:00:00:00:

    • Temperatuur: devices/00:00:00:00:00:00/temperature
    • Vochtigheid: devices/00:00:00:00:00:00/humidity
  • Voor een apparaat met MAC-adres 11:11:11:11:11:11:

    • Temperatuur: devices/11:11:11:11:11:11/temperature
    • Vochtigheid: devices/11:11:11:11:11:11/humidity

Applicaties kunnen zich abonneren op een specifiek topic, zoals devices/00:00:00:00:00:00/temperature, om gegevens van het betreffende IoT-apparaat te ontvangen.

MQTT ondersteunt wildcards voor efficiënte topicbeheer:

  • De + wildcard komt overeen met één niveau in de topic-hiërarchie. Bijvoorbeeld, abonneren op devices/+/temperature vangt topics zoals devices/1/temperature maar niet devices/1/2/temperature.

  • De # wildcard komt overeen met meerdere niveaus. Bijvoorbeeld, devices/# komt overeen met topics zoals devices/1/temperature, devices/2/humidity en devices/1/2/somethingElse.

De mosquitto_pub en mosquitto_sub CLI-tools zijn uitstekend voor het testen van MQTT-configuraties. Zorg ervoor dat de optie "Allow clear connections" is uitgeschakeld in uw Mosquitto-configuratie op het Stackhero-dashboard voordat u ze gebruikt.

Hier is hoe u kunt testen:

  1. Abonneer u op alle topics met behulp van de # wildcard:

    mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#"
    
  2. Open een andere terminal om een bericht naar een topic te publiceren:

    mosquitto_pub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/sensor/a" -m "It works"
    

In de eerste console zou u het gepubliceerde bericht moeten zien samen met de debuglogs die zijn ingeschakeld door de -d vlag.

U kunt rechtstreeks verbinding maken met uw Mosquitto-server vanuit een webbrowser met behulp van WebSockets. Raadpleeg de "WebSockets" documentatie voor meer details.

Voorbeelden die laten zien hoe u Mosquitto met Node.js kunt gebruiken, zijn beschikbaar op https://github.com/stackhero-io/mosquittoGettingStarted.

Om Mosquitto met Python te gebruiken, wordt de Paho MQTT Python client library aanbevolen. Installeer het met:

pip install paho-mqtt

Hieronder staat een voorbeeld van een Python-script om verbinding te maken met een Mosquitto-server met behulp van TLS-versleuteling en authenticatie:

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}")

Met deze instructies zou u goed uitgerust moeten zijn om te beginnen met werken met Mosquitto op Stackhero. Veel plezier met het verkennen van MQTT!