Mosquitto: Pradžia
Kaip pradėti naudotis Mosquitto
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Mosquitto MQTT cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Neriboti žinučių mainai ir perdavimai.
- Neribota įrenginių autentifikacija per išorinę API.
- Pažangios ACL temos, vartotojams ir veiksmams.
- Pritaikomas domeno vardas apsaugotas HTTPS (pavyzdžiui, https://mqtt.jusu-imone.com).
- Lengvi atnaujinimai vienu paspaudimu.
- Optimali veikla ir tvirta sauga naudojant privačią ir dedikuotą VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių išbandyti Stackhero Mosquitto MQTT cloud hosting sprendimą!
Mosquitto yra MQTT brokeris, įgyvendinantis MQTT protokolą (Message Queuing Telemetry Transport), kuris specialiai sukurtas lengvam ryšiui tarp IoT įrenginių ir serverių.
Stackhero platformoje Mosquitto yra sukonfigūruotas su TLS šifravimu ir vartotojo autentifikacija, kad būtų užtikrinta saugi komunikacijos aplinka.
Praktinius kodo pavyzdžius, kaip naudoti Mosquitto, galite rasti adresu https://github.com/stackhero-io/mosquittoGettingStarted.
MQTT temų supratimas
MQTT organizuoja komunikaciją į "temas", kurios veikia kaip kanalai duomenų publikavimui ir prenumeravimui. Įrenginiai publikuoja pranešimus į konkrečias temas arba jas prenumeruoja, kad gautų aktualius atnaujinimus.
MQTT temų struktūra
MQTT temos yra jautrios didžiosioms ir mažosioms raidėms, turi būti sudarytos iš UTF-8 simbolių ir reikalauja bent vieno simbolio. Hierarchija temose apibrėžiama naudojant pasvirąjį brūkšnį (/).
Štai pavyzdinė IoT įrenginių, renkančių temperatūros ir drėgmės duomenis, konfigūracija, identifikuojama pagal jų MAC adresus:
-
Įrenginiui su MAC adresu
00:00:00:00:00:00:- Temperatūra:
devices/00:00:00:00:00:00/temperature - Drėgmė:
devices/00:00:00:00:00:00/humidity
- Temperatūra:
-
Įrenginiui su MAC adresu
11:11:11:11:11:11:- Temperatūra:
devices/11:11:11:11:11:11/temperature - Drėgmė:
devices/11:11:11:11:11:11/humidity
- Temperatūra:
Programos gali prenumeruoti konkrečią temą, pavyzdžiui, devices/00:00:00:00:00:00/temperature, kad gautų duomenis iš atitinkamo IoT įrenginio.
Naudojant pakaitos simbolius MQTT temose
MQTT palaiko pakaitos simbolius efektyviam temų valdymui:
-
Pakaitos simbolis
+atitinka vieną lygį temų hierarchijoje. Pavyzdžiui, prenumeruojantdevices/+/temperaturegaunamos temos kaipdevices/1/temperature, bet nedevices/1/2/temperature. -
Pakaitos simbolis
#atitinka kelis lygius. Pavyzdžiui,devices/#atitinka tokias temas kaipdevices/1/temperature,devices/2/humidityirdevices/1/2/somethingElse.
Testavimas su mosquitto_pub ir mosquitto_sub
CLI įrankiai mosquitto_pub ir mosquitto_sub yra puikūs MQTT konfigūracijų testavimui. Prieš juos naudojant, įsitikinkite, kad jūsų Mosquitto konfigūracijoje Stackhero prietaisų skydelyje yra išjungta "Leisti nesaugias jungtis" parinktis.
Štai kaip galite testuoti:
-
Prenumeruokite visas temas naudodami pakaitos simbolį
#:mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#" -
Atidarykite kitą terminalą, kad publikuotumėte pranešimą į temą:
mosquitto_pub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/sensor/a" -m "It works"
Pirmame konsole turėtumėte matyti publikuotą pranešimą kartu su -d vėliavėle įjungtais derinimo žurnalais.
Prisijungimas prie MQTT per WebSockets
Galite tiesiogiai prisijungti prie savo Mosquitto serverio iš interneto naršyklės naudodami WebSockets. Daugiau informacijos rasite "WebSockets" dokumentacijoje.
Node.js ir MQTT
Pavyzdžiai, kaip naudoti Mosquitto su Node.js, yra prieinami adresu https://github.com/stackhero-io/mosquittoGettingStarted.
Python ir MQTT
Norėdami naudoti Mosquitto su Python, rekomenduojama Paho MQTT Python klientų biblioteka. Įdiekite ją naudodami:
pip install paho-mqtt
Žemiau pateiktas Python scenarijaus pavyzdys, kaip prisijungti prie Mosquitto serverio naudojant TLS šifravimą ir autentifikaciją:
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}")
Su šiomis instrukcijomis turėtumėte būti gerai pasiruošę pradėti dirbti su Mosquitto Stackhero platformoje. Linkime malonios MQTT tyrinėjimo patirties!