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 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!