Mosquitto: Aan de slag
Hoe te beginnen met Mosquitto
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een kant-en-klare Mosquitto MQTT cloud oplossing die tal van voordelen biedt, waaronder:
- Onbeperkte uitwisseling en overdracht van berichten.
- Onbeperkte apparaatverificatie via een externe API.
- Geavanceerde ACL's op onderwerpen, gebruikers en acties.
- Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://mqtt.uw-bedrijf.com).
- Moeiteloze updates met slechts één klik.
- Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Mosquitto MQTT cloud hosting oplossing van Stackhero te proberen!
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.
Begrijpen van MQTT-topics
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.
Structuur van MQTT-topics
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
- Temperatuur:
-
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
- Temperatuur:
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.
Gebruik van wildcards in MQTT-topics
MQTT ondersteunt wildcards voor efficiënte topicbeheer:
-
De
+wildcard komt overeen met één niveau in de topic-hiërarchie. Bijvoorbeeld, abonneren opdevices/+/temperaturevangt topics zoalsdevices/1/temperaturemaar nietdevices/1/2/temperature. -
De
#wildcard komt overeen met meerdere niveaus. Bijvoorbeeld,devices/#komt overeen met topics zoalsdevices/1/temperature,devices/2/humidityendevices/1/2/somethingElse.
Testen met mosquitto_pub en mosquitto_sub
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:
-
Abonneer u op alle topics met behulp van de
#wildcard:mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#" -
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.
Verbinden met MQTT via WebSockets
U kunt rechtstreeks verbinding maken met uw Mosquitto-server vanuit een webbrowser met behulp van WebSockets. Raadpleeg de "WebSockets" documentatie voor meer details.
Node.js en MQTT
Voorbeelden die laten zien hoe u Mosquitto met Node.js kunt gebruiken, zijn beschikbaar op https://github.com/stackhero-io/mosquittoGettingStarted.
Python en MQTT
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!