Blocco funzione per la gestione protocollo MQTT

Home / Knowledge Base / PLC SlimLine/NetSyst Cortex M7/ARM7 / Programmazione LogicLab / Applicazioni / Blocco funzione per la gestione protocollo MQTT

Come noto il cosiddetto Internet delle cose IoT non è una rete vera e propria, ma una definizione nata dal marketing che sintetizza il crescente utilizzo di microprocessori embedded collegati alla rete. In questo scenario, si rende necessaria la definizione di un protocollo di comunicazione standard sul quale basare le implementazioni IoT: L'Organization for the Advancement of Structured Information Standards (OASIS) ha dichiarato che il protocollo MQTT (Message Queuing Telemetry Transport) di IBM è lo standard di riferimento di comunicazione per l'Internet delle Cose.

Nella gamma di blocchi funzione offerti da Elsist esiste già una libreria dedicata all'IoT che utilizza il protocollo REST (Vedi topic) basato su HTTP, ma a differenza del REST l'MQTT è un protocollo specificatamente studiato per le situazioni in cui è richiesto un basso consumo e dove la banda è limitata. Al posto del modello client/server di HTTP, il protocollo MQTT adotta un meccanismo di pubblicazione e sottoscrizione per scambiare messaggi tramite un appostivo "message broker". Invece di inviare messaggi a un determinato set di destinatari, i mittenti pubblicano Publisher i messaggi su un certo argomento (detto topic) sul message broker. Ogni destinatario si iscrive Subscriber agli argomenti che lo interessano e, ogni volta che un nuovo messaggio viene pubblicato su quel determinato argomento, il message broker lo distribuisce a tutti i destinatari. In questo articolo un esempio di utilizzo di MQTT per pubblicare dati su un servizio cloud.

Diagramma flusso MQTT

Il publisher invia i dati al broker che poi li reinvia ai vari subscribers, il FB MQTTClient permette ai nostri sistemi di agire sia come publisher che come subscriber. Nella pagina del manuale del FB trovate il programma di esempio ST_MQTTClient che eseguito su di un modulo CPU SlimLine pubblica sul broker broker.mqttdashboard.com lo stato di una variabile BOOL sul topic IOCommand e contemporaneamente ne sottoscrive la ricezione dello stato. Esistono moltissimi brokers gratuiti (iot.eclipse.org, test.mosquitto.org, ecc) oltre a servizi più struttrati a pagamento come il CloudMQTT di Amazon.

Allo stesso topic si possono connettere altri publisher ed altri subscriber e questo permette di fare interagire tra di loro diversi dispositivi che possono essere altri moduli SlimLine distribuiti geograficamente e/o altri dispositivi.

Gestione da smartphone

Vediamo come utilizzando una semplice App sullo smartphone (Ne esistono sia per Android che per iOs) sia possibile interagire con il broker sullo steso topic gestito dal nostro SlimLine e ricevere lo stato della variabile Command e/o comandare lo stato della variabile Status. In questo esempio utilizzeremo MyMQTT la più semplice tra le App dedicate all'MQTT.

  1. Per interagire con il topic gestito dal nostro esempio dovremo collegarci al broker.
  2. Sottoscriverci al topic IOCommand, per riceverne le variazioni.
  3. Se pubblichiamo sul topic IOCommand il valore On si attiverà la variabile Status, se pubblichiamo il valore Off la variabile si disattiverà.
Esempio utilizzo MQTT su Smartphone

Esistono moltissime altre Apps per gestire il protocollo MQTT, basterà cercare nello store. Ad ad esempio la Linear MQTT Dashboard, permette di creare delle dashboard personalizzate con interruttori, lampade, bargraph ecc, per visualizare e/o comandare i dispositivi di casa, come fare ...

Per gestire la visualizzazione dei valori basterà nel programma sullo SlimLine pubblicare topics diversi per ogni valore (Esempio TCucina per la temperatura cucina, TAcqua per la temperatura acqua, ecc) e pubblicare il relativo valore ciclicamente od ad ogni variazione. Per gestire i comandi basterà sottoscrivere il relativo topic (Esempio ApriCancello per l'apertura del cancello, SetClima per il set point della temperatura, ecc) quando dallo smarphone invierete un nuovo valore al topic esso sarà ricevuto dallo SlimLine.

Con il REST e l’MQTT i nostri prodotti sono entrati nel modo dell’IoT, spero con queste brevi note di essere riuscito a dare una spiegazione dell'utilizzo del protocollo MQTT e di avere solleticato la curiosità dei lettori dimostrando la versatilità dei nostri prodotti.

Ti è stato utile questo articolo ?