Mosquitto: Erste Schritte
Wie man mit Mosquitto beginnt
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Mosquitto MQTT Cloud Lösung, die zahlreiche Vorteile bietet, darunter:
- Unbegrenzter Nachrichtenaustausch und -transfer.
- Unbegrenzte Geräteauthentifizierung über eine externe API.
- Erweiterte ACLs für Themen, Benutzer und Aktionen.
- Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://mqtt.ihre-firma.com).
- Mühelose Updates mit nur einem Klick.
- Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Mosquitto MQTT Cloud Hosting Lösung von Stackhero auszuprobieren!
Mosquitto ist ein MQTT-Broker, der das MQTT-Protokoll (Message Queuing Telemetry Transport) implementiert, das speziell für die leichte Kommunikation zwischen IoT-Geräten und Servern entwickelt wurde.
Auf Stackhero ist Mosquitto mit TLS-Verschlüsselung und Benutzerauthentifizierung konfiguriert, um eine sichere Kommunikationsumgebung zu bieten.
Praktische Codebeispiele zur Nutzung von Mosquitto finden Sie unter https://github.com/stackhero-io/mosquittoGettingStarted.
Verständnis von MQTT-Themen
MQTT organisiert die Kommunikation in "Topics", die als Kanäle zum Veröffentlichen und Abonnieren von Daten dienen. Geräte veröffentlichen Nachrichten zu bestimmten Themen oder abonnieren diese, um relevante Updates zu erhalten.
Struktur von MQTT-Themen
Themen in MQTT sind groß- und kleinschreibungssensitiv, müssen UTF-8-Zeichen enthalten und erfordern mindestens ein Zeichen. Die Hierarchie innerhalb der Themen wird durch das Schrägstrich-Zeichen (/) definiert.
Hier ist ein Beispiel für die Einrichtung von IoT-Geräten, die Temperatur- und Feuchtigkeitsdaten sammeln, identifiziert durch ihre MAC-Adressen:
-
Für ein Gerät mit der MAC-Adresse
00:00:00:00:00:00:- Temperatur:
devices/00:00:00:00:00:00/temperature - Feuchtigkeit:
devices/00:00:00:00:00:00/humidity
- Temperatur:
-
Für ein Gerät mit der MAC-Adresse
11:11:11:11:11:11:- Temperatur:
devices/11:11:11:11:11:11/temperature - Feuchtigkeit:
devices/11:11:11:11:11:11/humidity
- Temperatur:
Anwendungen können ein spezifisches Thema abonnieren, wie z.B. devices/00:00:00:00:00:00/temperature, um Daten vom entsprechenden IoT-Gerät zu erhalten.
Verwendung von Wildcards in MQTT-Themen
MQTT unterstützt Wildcards für eine effiziente Themenverwaltung:
-
Das
+-Wildcard entspricht einer einzelnen Ebene in der Themenhierarchie. Zum Beispiel erfasst das Abonnieren vondevices/+/temperatureThemen wiedevices/1/temperature, aber nichtdevices/1/2/temperature. -
Das
#-Wildcard entspricht mehreren Ebenen. Zum Beispiel entsprichtdevices/#Themen wiedevices/1/temperature,devices/2/humidityunddevices/1/2/somethingElse.
Testen mit mosquitto_pub und mosquitto_sub
Die CLI-Tools mosquitto_pub und mosquitto_sub sind hervorragend zum Testen von MQTT-Setups geeignet. Bevor Sie sie verwenden, stellen Sie sicher, dass die Option "Erlaube ungesicherte Verbindungen" in Ihrer Mosquitto-Konfiguration auf dem Stackhero-Dashboard deaktiviert ist.
So können Sie testen:
-
Abonnieren Sie alle Themen mit dem
#-Wildcard:mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#" -
Öffnen Sie ein weiteres Terminal, um eine Nachricht an ein Thema zu veröffentlichen:
mosquitto_pub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/sensor/a" -m "It works"
In der ersten Konsole sollten Sie die veröffentlichte Nachricht zusammen mit den durch das -d-Flag aktivierten Debug-Logs sehen.
Verbindung zu MQTT über WebSockets
Sie können direkt über einen Webbrowser mit Ihrem Mosquitto-Server über WebSockets verbinden. Weitere Details finden Sie in der "WebSockets"-Dokumentation.
Node.js und MQTT
Beispiele, die zeigen, wie man Mosquitto mit Node.js verwendet, sind unter https://github.com/stackhero-io/mosquittoGettingStarted verfügbar.
Python und MQTT
Um Mosquitto mit Python zu verwenden, wird die Paho MQTT Python Client Library empfohlen. Installieren Sie sie mit:
pip install paho-mqtt
Nachfolgend ein Beispiel für ein Python-Skript, das sich mit einem Mosquitto-Server unter Verwendung von TLS-Verschlüsselung und Authentifizierung verbindet:
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}")
Mit diesen Anweisungen sollten Sie gut gerüstet sein, um mit Mosquitto auf Stackhero zu arbeiten. Viel Spaß beim Erkunden von MQTT!