Message Queuing Telemetry Transport (MQTT) è un protocollo di trasporto messaggi publish/subscribe che viene utilizzato su TCP/IP. È semplice, leggero e aperto. Queste caratteristiche lo rendono ideale per l’utilizzo in molte situazioni, inclusi ambienti con risorse limitate come la comunicazione in contesti Machine to Machine (M2M) e Internet of Things (IoT).
L’infrastruttura MQTT è facilmente scalabile e quindi utilizzata per la comunicazione di migliaia di dispositivi. Può essere utilizzato per trasmettere dati di sensori, stati dei dispositivi, informazioni di tracciamento, eventi, dati di configurazione e molto altro.
Perché usare il client MQTT di SEGGER?
Il client MQTT di SEGGER funziona con qualsiasi broker MQTT conforme allo standard v3.1.1. Ciò consente di aggiungerlo a un’applicazione finale con la piena certezza che tutto funzionerà correttamente.
Sono disponibili esempi di applicazioni e demo per tutti i broker più diffusi. Un esempio per Microsoft Windows può essere utilizzato per vedere quanto sia facile lavorare con il client MQTT di SEGGER.
SEGGER ha sviluppato il client MQTT emMQTT da zero per ridurre al minimo l’utilizzo dello stack e la memoria richiesta.
Caratteristiche principali
- Supporto completo per la versione 3.1.1 di MQTT
- Client publish/subscribe incluso
- Supporto per la consegna dei dati con Quality of Service
- Ridotte occupazioni di memoria
- Indipendente dallo stack TCP/IP: può essere utilizzato qualsiasi stack dotato di socket
- Demo di publisher e subscriber incluse
- Progetto per eseguibile su PC per Microsoft Visual Studio incluso
Informazioni generali su MQTT
MQTT è un protocollo di comunicazione molto leggero progettato originariamente per la comunicazione in contesti M2M. È facile da implementare sul lato client e ha solo un overhead minimo del pacchetto. Ciò lo rende ideale per l’uso con dispositivi con risorse limitate.
Utilizza il modello publish/subscribe, che è un’alternativa al noto modello client/server. In contrasto con il modello client/server, in cui un client comunica direttamente con un endpoint, il modello publish/subscribe dissocia il mittente dal ricevente di un messaggio specifico. Nel contesto MQTT, il client che invia si chiama publisher, il client che riceve si chiama subscriber.
Publisher e subscriber non conoscono l’esistenza l’uno dell’altro. Per abilitare il trasporto di un messaggio è necessaria una terza parte. Il servizio fornito dalla terza parte è chiamato broker nel contesto MQTT. Il broker filtra tutti i messaggi in arrivo dai publisher e li distribuisce agli subscriber.
MQTT utilizza il filtraggio dei messaggi basato sull’argomento. I publisher inviano messaggi relativi a un argomento, gli subscriber ricevono messaggi se si sono iscritti all’argomento.
Per ottenere messaggi da un broker MQTT, uno subscriber stabilisce una connessione con il broker. Il broker controlla se un publisher ha inviato un messaggio per l’argomento sottoscritto e, in tal caso, lo invia all’subscriber. Il vantaggio di questo approccio è che publisher e subscriber non hanno bisogno di conoscersi e non devono essere eseguiti contemporaneamente. Tutto ciò che devono sapere è l’indirizzo IP del broker.
Scarica le specifiche MQTT V.3.1.1 da oasis-open.org
Come iniziare con emMQTT
Per iniziare facilmente con emMQTT e valutarne l’utilizzo, è disponibile per il download un’applicazione client MQTT che utilizza emMQTT.
L’applicazione client MQTT è un semplice client MQTT basato sulla riga di comando per connettersi a qualsiasi broker MQTT.
Utilizza emMQTT e la libreria SSL/TLS emSSL sullo stack TCP/IP nativo dell’host (ad esempio Windows).
Tutte le funzionalità disponibili nell’applicazione client MQTT possono essere utilizzate allo stesso modo su qualsiasi sistema target embedded.
Scarica l’applicazione client MQTT SEGGER per Windows
Broker MQTT
La controparte di un client MQTT è il broker MQTT. Tutti i client MQTT si connettono a un broker MQTT per iscriversi o pubblicare su argomenti. Il broker MQTT gestisce tutte le connessioni dei client e invia i messaggi pubblicati agli subscriber. Un broker MQTT è solitamente un server, eseguito localmente o in un’infrastruttura cloud. Può essere connesso ad altri software, come un database per elaborare ulteriormente i messaggi o un pianificatore di attività per inviare messaggi su determinati eventi. Sono disponibili vari broker MQTT, per uso commerciale o non commerciale, per l’installazione locale o su server o come servizio ospitato, con o senza ulteriore software backend.
emMQTT può connettersi a qualsiasi broker MQTT che supporta MQTT Versione 3.1.1.
Panoramica del broker
emMQTT può essere utilizzato con qualsiasi broker MQTT. La seguente tabella fornisce una panoramica di alcuni broker con cui l’add-on è stato testato.
Ti manca il tuo broker o provider cloud in questo elenco? emMQTT sarà comunque un’opzione per te. Semplicemente prova a connetterti al tuo broker utilizzando l’applicazione client MQTT. Per qualsiasi problema, non esitare a contattarci.
Requisiti
Stack TCP/IP
emMQTT Client è un componente software che funziona su TCP e richiede uno stack TCP/IP. È ottimizzato per emNet, ma può essere utilizzato qualsiasi stack TCP/IP conforme a RFC. L’integrazione di uno stack TCP/IP viene eseguita facilmente con una semplice struttura di callback API. Un’applicazione di esempio per Windows che utilizza la standard Windsock API è disponibile per il download.
emMQTT può anche essere utilizzato con altri protocolli che funzionano su TCP, come SSL/TLS per la comunicazione sicura o WebSockets per le applicazioni basate su browser.
Utilizzo delle risorse
L’utilizzo della ROM dipende dalle opzioni del compilatore, dalla versione del compilatore e dalla CPU utilizzata. I requisiti di memoria di emMQTT presentati nelle tabelle seguenti sono stati misurati su un sistema Cortex-M4.
Il seguente utilizzo delle risorse è stato misurato su un sistema Cortex-M4 utilizzando SEGGER Embedded Studio V3.34, ottimizzazione delle dimensioni.
Resource Usage | Value |
---|---|
emMQTT Client Size (ROM) | Approx. 2.4 kByte |
emMQTT Client Size (RAM) | 8 Byte |
emMQTT Client Context (RAM) | 76 Byte |
Note:
- I dati sono basati su misurazioni specifiche e potrebbero variare in base alle configurazioni e ai fattori di implementazione.
- Per una stima più precisa dell’utilizzo delle risorse nel tuo progetto, si consiglia di eseguire test e misurazioni specifiche.