Mosquitto: Iniziare

Come iniziare con Mosquitto

👋 Benvenuto nella documentazione di Stackhero!

Stackhero offre un ambiente Mosquitto MQTT cloud completamente gestito, progettato per garantire affidabilità e flessibilità:

  • Throughput illimitato per i messaggi e trasferimenti di dati, così i tuoi workflow non incontreranno mai limiti artificiali.
  • Autenticazione illimitata dei dispositivi tramite la tua API esterna, per un onboarding e una gestione degli accessi senza interruzioni.
  • ACL avanzate per un controllo dettagliato su topic, utenti e azioni.
  • Un nome di dominio personalizzato con HTTPS integrato per endpoint sicuri e brandizzati (ad esempio: https://mqtt.tua-azienda.com).
  • Aggiornamenti senza complicazioni: applica miglioramenti o patch di sicurezza con un solo clic.
  • Performance costante e sicurezza elevata, con ogni istanza eseguita su un'infrastruttura privata e dedicata.

Accelera i tuoi progetti IoT e riduci il carico operativo. Puoi avere un'istanza Mosquitto MQTT cloud hosting sicura e pronta per la produzione in pochi minuti.

Mosquitto è un broker MQTT, che implementa il protocollo MQTT (Message Queuing Telemetry Transport), specificamente progettato per una comunicazione leggera tra dispositivi IoT e server.

Su Stackhero, Mosquitto è configurato con crittografia TLS e autenticazione utente per fornire un ambiente di comunicazione sicuro.

È possibile trovare esempi di codice pratici che mostrano come utilizzare Mosquitto su https://github.com/stackhero-io/mosquittoGettingStarted.

MQTT organizza la comunicazione in "topic", che fungono da canali per pubblicare e sottoscrivere dati. I dispositivi pubblicano messaggi su topic specifici o si iscrivono a essi per ricevere aggiornamenti pertinenti.

I topic in MQTT sono case-sensitive, devono contenere caratteri UTF-8 e richiedono almeno un carattere. La gerarchia all'interno dei topic è definita utilizzando il carattere slash (/).

Ecco un esempio di configurazione per dispositivi IoT che raccolgono dati di temperatura e umidità, identificati dai loro indirizzi MAC:

  • Per un dispositivo con indirizzo MAC 00:00:00:00:00:00:

    • Temperatura: devices/00:00:00:00:00:00/temperature
    • Umidità: devices/00:00:00:00:00:00/humidity
  • Per un dispositivo con indirizzo MAC 11:11:11:11:11:11:

    • Temperatura: devices/11:11:11:11:11:11/temperature
    • Umidità: devices/11:11:11:11:11:11/humidity

Le applicazioni possono iscriversi a un topic specifico, come devices/00:00:00:00:00:00/temperature, per ricevere dati dal rispettivo dispositivo IoT.

MQTT supporta i caratteri jolly per una gestione efficiente dei topic:

  • Il carattere jolly + corrisponde a un singolo livello nella gerarchia dei topic. Ad esempio, iscriversi a devices/+/temperature cattura topic come devices/1/temperature ma non devices/1/2/temperature.

  • Il carattere jolly # corrisponde a più livelli. Ad esempio, devices/# corrisponde a topic come devices/1/temperature, devices/2/humidity e devices/1/2/somethingElse.

Gli strumenti CLI mosquitto_pub e mosquitto_sub sono eccellenti per testare le configurazioni MQTT. Prima di utilizzarli, assicurarsi che l'opzione "Consenti connessioni non sicure" sia disabilitata nella configurazione di Mosquitto sul dashboard di Stackhero.

Ecco come testare:

  1. Iscriviti a tutti i topic utilizzando il carattere jolly #:

    mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#"
    
  2. Apri un altro terminale per pubblicare un messaggio su un topic:

    mosquitto_pub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/sensor/a" -m "It works"
    

Nella prima console, dovresti vedere il messaggio pubblicato insieme ai log di debug abilitati dall'opzione -d.

È possibile connettersi direttamente al server Mosquitto da un browser web utilizzando WebSockets. Fare riferimento alla documentazione "WebSockets" per ulteriori dettagli.

Esempi che mostrano come utilizzare Mosquitto con Node.js sono disponibili su https://github.com/stackhero-io/mosquittoGettingStarted.

Per utilizzare Mosquitto con Python, si consiglia la libreria client Paho MQTT Python. Installala utilizzando:

pip install paho-mqtt

Di seguito è riportato un esempio di script Python per connettersi a un server Mosquitto utilizzando crittografia TLS e autenticazione:

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}")

Con queste istruzioni, dovreste essere ben equipaggiati per iniziare a lavorare con Mosquitto su Stackhero. Buona esplorazione di MQTT!