W&T collega
Adattatori per TCP/IP, Ethernet, RS-232, RS-485, USB, 20 mA, Fibra ottica di vetro e plastica, http, SNMP, OPC, Modbus TCP, I/O digitale, I/O analogico, ISA, PCI

Conoscenze di base:

MQTT - Message Queue Telemetry Protocol

Scambio di dati senza connessione diretta



La particolarità di MQTT è costituita dal fatto che due partner di comunicazione che si scambiano fra loro dati, non lo fanno mai attraverso un collegamento diretto.


Invece c’è un mediatore di dati centrale, il broker. Il broker riceve dati da un utente MQTT e li distribuisce ad altri.


MQTT - Trasmissione a livello di rete

MQTT utilizza come protocollo di base il TCP e lavora quindi secondo il principio client/server.

MQTT - struttura del pacchetto di rete


Il broker è in questo caso il server che può accettare come standard connessioni sulla porta TCP 1883. Gli utenti MQTT fungono da client TCP e si collegano all’occorrenza con il broker.

MQTT - Connessioni con il broker



MQTT - Scambio di dati a livello di protocollo

In MQTT esistono due ruoli che può assumere un client.

Publisher
Come publisher il client invia dati al broker. Questi possono essere valori di misura, stati di commutazione o altri dati di processo a scelta. Accanto ai contenuti di testo leggibili l’ MQTT ammette anche dati binari. Che il publisher trasmetta i suoi dati al broker in caso di cambiamento o periodicamente dipende dall’applicazione.

Subscriber
Il subscriber accetta dati dal broker. Nel ruolo del subscriber il client comunica al broker dopo che si sia instaurata la connessione, quali dati voglia ricevere e a quali abbonarsi.

Ogni client MQTT può essere publisher, subscriber o anche entrambi. Non esiste dunque nessun principio master/slave obbligatorio come per altri protocolli industriali. Tutti i terminali e client MQTT presentano uguali autorizzazioni. Solo l’applicazione decide quindi chi fornisce dati e chi li riceve attraverso l’assegnazione publisher/subscriber.

Topic
Il broker MQTT amministra i dati da scambiare secondo terminali di dati. La denominazione dei terminali di dati avviene attraverso topics. Si tratta di stringhe, ovvero catene di caratteri che possono essere costruiti in modo strutturato, analoghe all’URL quando viene richiamato un sito internet.

Esempio:

Un termoigrobarografo web W&T misura temperatura, umidità dell’aria e pressione atmosferica nel locale del server della sede di W&T. Ognuno dei tre valori rappresenta un terminale dati.

I relativi topics possono essere così:

wut/serverraum/temperatur
wut/serverraum/luftfeuchte
wut/serverraum/luftdruck


mediante publish MQTT il termoigrobarografo web trasmette i valori misurati come payload, quindi come contenuto dati, al broker MQTT in questi topics.

Un client MQTT qualunque può inviare solo un subscribe al broker MQTT indicando il topic desiderato. Qui il client MQTT invia un subscribe e wut/serverraum/temperatur si abbona al valore di temperatura del termoigrobarometro web.

MQTT - Publish/subscribe


Finché il PC è collegato al broker come client MQTT, riceve automaticamente il valore inviato tramite publish dal termoigrobarometro web.

Quando vengono indicati i topic il subscriber può lavorare con wildcards "#".

Beispiel: wut/serverraum/# abonniert Temperatur, Luftfeuchte und Luftdruck für den Serverraum.

Oltre a "#" c’è anche "+" come wildcard. Indicando "+" si abbona solo a topic terminali del rispettivo livello – i topic di livelli sottostanti sono ignorati.

Per ogni valore a cui ci si è abbonati avviene un invio dati proprio.

La trasmissione di dati avviene in funzione dei byte e quindi in modo trasparente in termini binari - possono essere dunque trasmessi contenuti a scelta. Per tutti i contenuti del testo, è previsto per uniformare UTF8 come formato.


MQTT - Feature particolari

MQTT offre per il trasporto e lo scambio dei dati delle opzioni speciali che possono essere impostate mediante flag per ogni connessione e ogni abbonamento.

Quality of Service – QoS
Con valori tra 0 e 2 si definisce con che affidabilità è inviata una notizia publish al broker.

  1. Via e dimenticato
    Il client MQTT non si aspetta nessuna conferma per i dati inviati.
    Questa procedura è incerta, tuttavia è molto rapida.

  2. Almeno una volta
    Il client MQTT invia i dati eventualmente anche più volte,
    finché non riceve una conferma di ricezione dal broker MQTT.
    Questa procedura garantisce che i dati arrivino al broker,
    ma eventualmente più volte.

  3. esattamente una volta
    Ogni invio di dati deve essere azzerato esplicitamente dal broker MQTT.
    In questo modo si garantisce che niente sia inviato due volte.
    Questa procedura è quella più sicura, ma anche la più lenta.

In QoS1 e 2 ci si chiede a prima vista perché un invio dati semplice sia più sicuro di uno multiplo. Sulla base di due esempi il retroscena è subito chiaro.

Se è questione di trasmettere un valore di misura, p. es. una temperatura, non è importante se il valore arrivi più volte a un subscriber. Ma se viene trasmesso l’angolo in cui si deve muovere il braccio di un robot, p. es. 5° e l’invio dati arriva tre volte al subscriber, il braccio del robot si muoverebbe di 15° con conseguenze fatali.

Last Will and Testament
Un publisher può decidere che il broker, nel caso in cui la connessione MQTT vada persa, invece dei valori/dati cui è abbonato, invii un determinato messaggio al subscriber.

Retained message
Apponendo questo flag il publisher dice al broker, di salvare temporaneamente l’ultimo valore inviato/ gli ultimi dati e di trasmetterli immediatamente a un subscriber che si ricollega.

Tutte e tre le feature sono molto utili in particolare, se si trasmette attraverso vie di trasmissione non sempre affidabili (p. es. reti mobili).


Proprietà e vantaggi di MQTT

MQTT funge da protocollo di trasmissione per l’"Internet delle cose" e offre in particolare per lo scambio di dati via internet diversi vantaggi:

  • Poiché tutti i terminali che utilizzano MQTT lavorano come client, il superamento di firewall e misure di sicurezza in genere è possibile senza grande sforzo o solo uno sforzo minimo (non si deve impostare nei firewall nessuna autorizzazione di porta e nessun routing NAT/ port-forwarding ).
  • Il publisher non si deve occupare di quale destinatario ha effettivamente ricevuto i dati forniti.
  • Diversamente da altri protocolli basati su Internet i dati binari possono essere trasmessi senza codifica Base64 o altra codifica.

Particolarità e svantaggi

  • Il fornitore di dati non sa chi riceva effettivamente i suoi dati (nessuna conferma end-to-end).
  • No esercizio in tempo reale

Basi sui comuni protocolli industriali

Prodotti per applicazioni industriali con protocolli standard