Integrazione MQTT
MQTT è un protocollo di messaggistica open standard per l’Internet of Things (IoT). È progettato come un sistema di trasporto di messaggi publish/subscribe estremamente leggero, ideale per connettere dispositivi remoti con un ridotto ingombro di codice e una banda di rete minima (fonte: https://mqtt.org).
MQTT sta per Message Queuing Telemetry Transport.
Gli elementi fondamentali di un sistema MQTT sono i client e i server (noti anche come broker).
I client si iscrivono ai topic per pubblicare e ricevere messaggi. Questo significa che un client ricopre i ruoli di subscriber e publisher.
I server gestiscono i topic: per esempio ricevono subscription dai client sui topic, oppure messaggi dai client e li inoltrano, in base alle subscription dei client, ai client interessati.
Un server Thinknx può essere configurato per funzionare come client MQTT, connesso a un broker/server esterno e iscritto a uno o più topic, oppure come server MQTT esso stesso per gestire le subscription e la distribuzione dei topic.
Figura: Panoramica MQTT
Client MQTT
Consente la configurazione del dispositivo Thinknx come client MQTT verso un broker esterno o verso quello interno. Per gestire i messaggi da MQTT, Thinknx deve essere configurato come client. Questo permette di leggere (come ingressi virtuali) e scrivere (come uscite virtuali) valori associati a un topic e di usarli nell’interfaccia utente o in altri oggetti di sistema. Per consentire un ampio spettro di applicazioni, i valori in arrivo o in partenza verso MQTT possono essere pre/post elaborati in un Data Format Editor. Thinknx supporta comunicazioni in chiaro o cifrate (TLS) con i broker. La comunicazione cifrata potrebbe non funzionare correttamente in tutte le circostanze, a seconda dei modelli di server (server Thinknx molto datati possono avere difficoltà) e delle capacità dei broker esterni.
- Broker Locale Se Vero, viene utilizzato il server MQTT interno. Se Falso, è richiesta una connessione a un server MQTT esterno.
- Porta IP Porta IP utilizzata dal broker. La porta predefinita per la comunicazione MQTT è 1883.
- Indirizzo IP/Hostname Indirizzo IP del broker MQTT.
- Use Credentials Se vero, la comunicazione tra client e server richiede username e password.
- Username Username richiesto per connettersi al server MQTT.
- Password Password richiesta per connettersi al server MQTT.
- TLS sicuro se vero, è richiesto il protocollo crittografico TLS durante la comunicazione.
- Certificato Client Percorso da selezionare per il Certificato Digitale (*.crt) utilizzato dai client per effettuare richieste autenticate al server.
- Chiave Client Percorso da selezionare per la Chiave del Client (estensione *.key).
- Input Virtuali Subscriber MQTT
- Output Virtuali Publisher MQTT
Input Virtuali (Subscriber)
Questa sezione consente di iscriversi a un topic e ottenere i valori aggiornati ad esso associati. Il valore può quindi essere usato per aggiornare la UI, per oggetti di sistema interni o può essere trasmesso su KNX.
- Topic Descrizione del topic a cui collegarsi.
- Formato Dati Input Apre il data format editor per personalizzare i parametri di richiesta e risposta.
- Condizione d'aggiornamento Specifica quale azione attiverà la comunicazione con il servizio esterno.
- Utilizza Gateway KNX Se abilitato, inoltrerà i dati dal servizio esterno al bus KNX.
- Gruppo KNX Gruppo KNX da utilizzare per inviare il valore proveniente dal servizio esterno.
- KNX datatype Datatype KNX da utilizzare per trasmettere il valore sul bus KNX.
Editor Formato Dati
Questa finestra consente di configurare il formato dei dati in ingresso e della risposta.
- Per prima cosa, seleziona il tipo di formato dei dati in ingresso. I dati ricevuti possono essere XML, String o JSON.
- Configura il percorso corretto della risposta.
- Effettua il cast del valore ricevuto nella rappresentazione appropriata (Bit - Int - Double - Enum - String).
Output Virtuali (Publisher)
Questa sezione consente di pubblicare valori provenienti dal server su uno specifico topic. Il valore potrà essere utilizzato da altri client MQTT che reagiranno ad esso. I valori per questi topic possono provenire da specifici indirizzi di gruppo KNX.
- Topic Descrizione del topic a cui collegarsi.
- Invio Azione Specifica quale azione attiverà la comunicazione con il servizio esterno.
- Formato Dati Output Apre il data format editor per personalizzare il formato dei dati inviati.
- Use gateway KNX Se abilitato, inoltrerà i dati dal servizio esterno al bus KNX.
- Gruppo KNX Gruppo KNX da utilizzare per inviare il valore proveniente dal servizio esterno.
- KNX datatype Datatype KNX da utilizzare per trasmettere il valore sul bus KNX.
Editor Formato Dati
Questa finestra consente di configurare il formato dei dati inviati dal publisher.
- Per prima cosa, seleziona il tipo di Dati Inviati. I dati inviati possono essere XML, String, Parameters o JSON.
- Effettua il cast del valore inviato nella rappresentazione appropriata (Bit - Int - Double - Enum - String).
Esempio 1: Server Thinknx come Client MQTT
In questo esempio viene utilizzato un sensore di umidità e temperatura Shelly H&T. Questo dispositivo pubblicherà i propri dati su un server MQTT esterno come Mosquitto (https://mosquitto.org/), CloudMQTT (https://www.cloudmqtt.com/) o HiveMQ (https://www.hivemq.com/). Il server Thinknx, agendo come client MQTT, si iscriverà ai topic di temperatura e umidità, e il server MQTT esterno inoltrerà i valori al server.
Figura: Server Thinknx come client MQTT
Configurazione su Shelly H&T
- Connettiti all’hotspot del dispositivo Shelly e accedi alla sua interfaccia web digitando l’indirizzo IP predefinito 192.168.33.1.
- Vai al menu Internet and Security ed abilita il Wifi - Client Mode sul dispositivo; inserisci le credenziali Wi-Fi per includerlo nella tua rete.
- Vai su Advanced Developer Settings e spunta la casella “Enable action execution via MQTT”. Quindi inserisci l’indirizzo IP del tuo server MQTT e la porta corretta (predefinita 1883).
- Inserisci le credenziali per connetterti al broker, se richieste dal broker.
Figura: Configurazione Shelly H&T
Configurazione nel Thinknx Configurator
Per visualizzare tutti i topic disponibili per i dispositivi Shelly, consulta la loro documentazione API a questo link: https://shelly-api-docs.shelly.cloud/gen1/#shelly-h-amp-t
- Vai su Sistema e aggiungi l’oggetto MQTT client.
- Imposta “Broker Locale” su false e inserisci le informazioni del broker esterno (indirizzo IP/porta/credenziali se applicabili).
- Apri la finestra Virtual Input e aggiungi un nuovo subscriber per leggere la temperatura.
- Consulta il link alla documentazione API di Shelly sopra per recuperare il topic corretto per la Temperatura dello Shelly H&T. Secondo la documentazione, il dispositivo Shelly pubblica la temperatura sul seguente topic: shellies/shellyht-<deviceid>/sensor/temperature.
- Inserisci le credenziali corrette per connetterti, se applicabili.
- Apri la finestra “Data Format Input” per confermare il tipo di risposta come “string”, effettua il cast a “double” e visualizzala con l’analog input.
Figura: Virtual Input MQTT Client
Figura: Data Input Format
Per visualizzare il valore di temperatura ricevuto dal dispositivo Shelly su una pagina specifica:
- Aggiungi un Valore Analogico sulla pagina.
- Assicurati di configurare la sorgente dati come “System object”.
- In System Status, vai all’ingresso virtuale creato per la temperatura e seleziona “Get last received value”.
Figura: Visualizzazione Temperatura Shelly





