OpenHAB - SmartHome (271 posts)
10/08/2017
Home Automation System - SONOFF e MQTT, accoppiata vincente...
di Marco Lamanna
Bene, è arrivato il momento di far funzionare come si deve questi ottimi SONOFF.
Ricapitolando, ad oggi ho due SONOFF pronti all'uso. Un SONOFF Pow e un SONOFF Basic, entrambi customizzati con firmware TASMOTA
Attraverso questo firmware, i dispositivi diventano controllabili tramite comunicazione seriale, web (http) e, dulcis in fundo, MQTT,
l'ormai famoso protocollo di connettività utilizzato prevalentemente in sistemi IoT, grazie alla sua leggerezza e affidabilità. Ho introdotto MQTT in un post precedente (vedi http://domoticaduino.blogspot.it/2017/07/home-automation-system-la-scoperta-dei.html)
Io utilizzerò prevalentemente il protocollo MQTT; per far ciò, è necessario configurare il SONOFF, andando ad inserire i dati del broker MQTT e dei topic che si andranno ad utilizzare. Come sempre, il Wiki di TASMOTA ci viene in aiuto per capire cosa e come fare...(vedere https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Features)
Chi non avesse il servizio di broker MQTT (il più famoso è Mosquitto), può utilizzare, solo per scopi di test, dei broker MQTT pubblici gratuiti (Mosquitto Test Server, Hive MQ, Eclipse sono solo alcuni tra i più famosi...)
Accedendo quindi alle pagine di configurazione dei SONOFF è possibile andare ad inserire tutti i dati inerenti a MQTT. Navighiamo quindi tramite browser sulla console di gestione del SONOFF Basic, inserendo l'indirizzo ip o il nome del SONOFF nella barra degli indirizzi. Apparirà qualcosa di simile:
Cliccando su "Configuration" ==>
Tra le tante voci di configurazione presenti, focalizziamoci su "Configure MQTT"; le altre sono abbastanza "autoesplicative".
Inserisco quindi le informazioni del broker MQTT nei campi Host (indirizzo ip o nome server) e Port (la porta di default del broker MQTTè la 1883).
Il campo Client ID indica come si presenta il dispositivo quando si connette al broker MQTT. Si può inserire una stringa a piacere, che però sia univoca tra tutti i dispositivi.
I campi User e Password sono utili se il broker MQTT necessita di autenticazione (consigliato!!!)
I campi Topic e Full Topic sono i due campi più importanti per il corretto utilizzo tramite MQTT. Questa è la pagina del wiki dove potete trovare ulteriori informazioni: https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Features#mqtt-topic-definition
- Topic: normalmente identifica il dispositivo e farà normalmente parte del Full Topic MQTT. E' bene che sia univoco per tutti i dispositivi.
- Full Topic: è il topic completo utilizzato dal dispositivo per inviare e ricevere i messaggi MQTT
All'interno del Full Topicè possibile inserire due "variabili", chiamate %topic% e %prefix%.
Inserendo %topic% nel nostro Full Topic, caratterizziamo il messaggio con il dispositivo che lo ha gestito. Questa variabile può assumere i valori delle variabili di sistema Topic, GroupTopic, ButtonTopic, SwitchTopic e MqttClient, in base alla situazione in cui è coinvolto.
%prefix% invece identifica il tipo di messaggio e può assumere tre valori distinti, corrispondenti alle variabili di sistema Prefix1, Prefix2 e Prefix3
- Prefix1 = cmnd, utilizzato per i messaggi di comando
- Prefix2 = stat, utilizzato per i messaggi di stato del dispositivo
- Prefix3 = tele, utilizzato per i messaggi di telemetria del dispositivo
Quando parlo di variabili di sistema, intendo tutta una serie di proprietà configurabili per ogni dispositivo, introdotte dal firmware TASMOTA. Vi assicuro che ce ne sono veramente tante...Qui trovate la lista completa: https://github.com/arendst/Sonoff-Tasmota/wiki/Commands#command-overview
Nel mio caso, ecco come ho configurato il mio SONOFF Basic:
Topic = sonoffbasic01
Full Topic = tasmota/garden/light/%topic%/%prefix%/
Come già detto precedentemente, il Topic identifica il dispositivo. Mi sono dato una "naming convention" che mi aiuta ad identificare la tipologia di dispositivo con un progressivo univoco al fondo. Quindi, ad esempio, il SONOFF Pow lo chiamerà sonoffpow02. Questa stessa identificazione la utilizzo anche come nome di rete del dispositivo (nella sezione di configurazione del WiFi) e come client id per MQTT.
Anche per il Full Topic mi sono dato una regola, che è la seguente: firmware/zona/tipologia/%topic%/%prefix%/
Queste sono chiaramente scelte molto soggettive, ma se si utilizzano nomenclatura cosiddette "parlanti" è facile capire cosa sta succedendo solo guardando i messaggi MQTT che passano dal broker.
Ultimo step, abilitare la messaggistica MQTT sul dispositivo, andando a verificare il flag MQTT enable nella pagina Configure Other.
Bene, a questo punto sono veramente pronto a fare un primo test di scambio messaggi MQTT.
******************************************************
Un piccolo aggiornamento dovuto ad un errore di configurazione che ho scoperto in un secondo momento
/it/blog/2/iot-smarthome/post/2017/08/home-automation-system-sonoff-e-tasmota.html