Mosquitto: Pradžia

Kaip pradėti naudotis Mosquitto

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero suteikia visiškai valdomą Mosquitto MQTT cloud aplinką, sukurtą patikimumui ir lankstumui:

  • Neribotas žinučių pralaidumas ir duomenų perdavimas – jūsų darbo procesai niekada nesusidurs su dirbtiniais apribojimais.
  • Neribotas įrenginių autentifikavimas per jūsų išorinį API, todėl įrenginių prijungimas ir prieigos valdymas tampa paprastas.
  • Išplėstinės ACL (prieigos kontrolės sąrašai) – detaliam temų, naudotojų ir veiksmų valdymui.
  • Individualus domeno vardas su integruotu HTTPS – saugiems ir firminiams galiniams taškams (pvz.: https://mqtt.jusu-imone.com).
  • Atnaujinimai be rūpesčių: patobulinimus ar saugumo pataisas galite pritaikyti vienu paspaudimu.
  • Nuoseklus veikimas ir stipri apsauga – kiekviena instancija veikia privačioje, dedikuotoje infrastruktūroje.

Pagreitinkite savo IoT projektus ir sumažinkite operacinę naštą. Vos per kelias minutes galite paleisti saugią, gamybai paruoštą Mosquitto MQTT cloud hosting instanciją.

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

Programos gali prenumeruoti konkrečią temą, pavyzdžiui, devices/00:00:00:00:00:00/temperature, kad gautų duomenis iš atitinkamo IoT įrenginio.

MQTT palaiko pakaitos simbolius efektyviam temų valdymui:

  • Pakaitos simbolis + atitinka vieną lygį temų hierarchijoje. Pavyzdžiui, prenumeruojant devices/+/temperature gaunamos temos kaip devices/1/temperature, bet ne devices/1/2/temperature.

  • Pakaitos simbolis # atitinka kelis lygius. Pavyzdžiui, devices/# atitinka tokias temas kaip devices/1/temperature, devices/2/humidity ir devices/1/2/somethingElse.

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:

  1. Prenumeruokite visas temas naudodami pakaitos simbolį #:

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

Galite tiesiogiai prisijungti prie savo Mosquitto serverio iš interneto naršyklės naudodami WebSockets. Daugiau informacijos rasite "WebSockets" dokumentacijoje.

Pavyzdžiai, kaip naudoti Mosquitto su Node.js, yra prieinami adresu https://github.com/stackhero-io/mosquittoGettingStarted.

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!