it:mqtt

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.

 MQTT overview

Figura: Panoramica 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

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.

  1. Per prima cosa, seleziona il tipo di formato dei dati in ingresso. I dati ricevuti possono essere XML, String o JSON.
  2. Configura il percorso corretto della risposta.
  3. Effettua il cast del valore ricevuto nella rappresentazione appropriata (Bit - Int - Double - Enum - String).

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.

  1. Per prima cosa, seleziona il tipo di Dati Inviati. I dati inviati possono essere XML, String, Parameters o JSON.
  2. Effettua il cast del valore inviato nella rappresentazione appropriata (Bit - Int - Double - Enum - String).

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.

Example 1: Thinknx server as MQTT client

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.

Configuration Shelly H&T

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.

Virtual Input MQTT Client

Figura: Virtual Input MQTT Client

Data Input Format

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”.

Visualizing Shelly Temperature

Figura: Visualizzazione Temperatura Shelly

  • it/mqtt.txt
  • Ultima modifica: 2025/10/29 16:50
  • da francesco