Smarthome, il firmware per ESP8266 MADE IN ITALY alternativo a Tasmota
di Luigi Duchi
28 Marzo 2019
L'angolo dei lettori
Benvenuti nella rubrica "l'angolo dei lettori". Questo spazio è una sezione del blog che permette a chiunque di scrivere un articolo o realizzare un video, effettuare prove e test che riguardano il mondo della tecnologia e proporne la pubblicazione su queste pagine.
Oggi ANDREA RONCORONI ci presenta un firmware (da lui realizzato) compatibile con la maggior parte dei dispositivi dotati dell'ormai famosissimo chip ESP8266.
Il firmware realizzato da Andrea si chiama SmartHome ed è un firmware open source per dispositivi domotici basati su chip ESP8266 quali ad esempio quelli della linea Sonoff, Shelly, Hipposwitch, Electrodragon, ecc. e dispositivi DIY (come nodeMCU, D1 mini, ecc.)SmartHome vuole sostituirsi al firmware “di fabbrica”, introducendo: supporto al protocollo MQTT, aggiornamenti OTA (over the air), interfaccia web, supporto per LOG (seriale e Telnet) e molto altro.Il tutto al fine di slegarlo dalla sua iniziale logica operativa e permetterne l’inserimento in ambienti più strutturati e integrati quali gli HUB personali come per esempio Home assistant.I vantaggi nell’adozione di questo firmware sono molteplici.Innanzitutto è orientato alla domotica casalinga, cioè offre una serie di strumenti come tapparelle, interruttori, temporizzatori, termostati, ecc. che non necessitano altre logiche per il loro funzionamento.Permette poi di slegarsi completamente dai cloud dei produttori con evidenti benefici in termini di sicurezza e di affidabilità.La logica di funzionamento di SmartHome è suddivisa in “nodi”: nodi tapparella, nodi Interruttore, nodi termostato, nodi impulso, nodi temporizzatore e nodi sensore.Ogni nodo ha una propria logica di funzionamento.I nodi “tapparella” gestiscono tapparelle elettriche o serrande.I nodi “Interruttore” gestiscono luci, prese o altri dispositivi.I nodi “termostato” gestiscono termostati.I nodi “impulso” gestiscono cancelli, portoncini (anche attraverso l’uso di tag NFC).I nodi “temporizzatore” gestiscono luci, prese o altri dispositivi temporizzati.I nodi “sensore” gestiscono sensori.I nodi “display” gestiscono un piccolo display OLED.Su un unico dispositivo (per esempio un nodeMcu o un Sonoff), è possibile “installare” più nodi, anche combinazioni di nodi diversi. La limitazione è il numero di GPIO disponibili nel dispositivo.Per esempio, su un Sonoff 4ch (che ha 4 uscite relè) è possibile “installarci” 2 tapparelle (2+2 relè) oppure 1 tapparella,1 interruttore e 1 impulso (2+1+1 relè) e così via.Ogni “nodo”, ha una propria logica di funzionamento indipendente dagli altri e gestisce i GPIO (ingressi ed uscite) ad esso collegati. La comunicazione avviene attraverso il protocollo MQTT, che può essere locale (per esempio attraverso Mosquitto installato su un Rasperry) oppure remoto (per esempio attraverso servizi come cloudmqtt.com).Per interagire con i singoli “nodi” bisogna mandare ad essi specifici comandi (contraddistinti da un topic MQTT univoco). Si possono avere più moduli dello stesso tipo, basta che abbiano tutti un topic diverso (ad esempio: "tapparella/sala", "tapparella/cucina", "tapparella/bagno", ecc.).
Guida per primo utilizzo:
Per compilare e usare SmartHome eÌ necessario:
-
PC (con installato Arduino IDE ed il core di ESP8266) Come installare l'Add-on ESP8266 nell'IDE di Arduino
-
Dispositivo con a bordo ESP8266
-
Connessione WiFi
-
Broker MQTT
1. Recupero dei File Necessari
La prima operazione eÌ recuperare i file necessari alla compilazione del firmware:
-
Sketch SmartHome
-
Librerie da aggiungere ad Arduino IDE
Gli elementi possono essere scaricati al seguente indirizzo:
https://github.com/roncoa/SmartHome/releases/tag/v50beta5nc
Gli archivi necessari sono:
• SmartHome_V50beta5nc.zip • libreries.zip
Per eseguire il download basta cliccare sui file.
2. Preparazione dei file
Le cartelle e i files contenuti in libraries.zip andranno copiati all’interno della cartella libraries di Arduino IDE che solitamente si trova in “DocumentiArduino”.
Estrarre la cartella contenuta nel file SmartHome_V50beta5nc.zip nella vostra cartella degli sketck di Arduino IDE.
Si creerà la cartella SmartHome_V50beta5nc con all’interno lo sketck del firmware ed il tool necessario per la creazione del file di configurazione.
3. Creazione di file di configurazione
Per la corretta compilazione, il firmware ha bisogno di un file di configurazione (SmartHome_config.h) con
all’interno tutti i parametri necessari per il suo funzionamento.
Per crearlo, all’interno della cartella dello sketch è presente un file java eseguibile
SmartHome_V50Beta5nc_tool.jar che vi guiderà nell’inserimento dei parametri.
Avviandolo ci si aprirà la seguente schermata:
I dati fondamentali da inserire sono:
-
Numero di nodi
-
Dati rete WiFi e broker MQTT
Il numero nodi permette al firmware di sapere quanti e quali nodi includere nella compilazione e quindi nel funzionamento del dispositivo.Su un unico dispositivo eÌ possibile “installare” piuÌ nodi, anche combinazioni di nodi diversi.Per esempio, eÌ possibile usare 4 interruttori (4 nodi) oppure 1 tapparella + 1 interruttore + 1 impulso (1+1+1 nodi) e cosiÌ via. L’unica limitazione eÌ il numero di GPIO disponibili nel dispositivo.
Una volta premuto il pulsate “Continua”, il tool vi chiederaÌ la configurazione di ogni singolo nodo, fino alla creazione del file.
Esempio per un nodo Tapparella:
-
Tapparella 1 Topic eÌ il topic MQTT utilizzato per le comunicazioni con il nodo (NON deve essere uguale a nessun altro nodo)
-
Tapparella 1 GPIO releÌ SU e GIU sono i GPIO ai quali saranno connessi i releÌ della salita e discesa
Tapparella 1 GPIO bottone SU e GIU sono i GPIO ai quali possono essere connessi i pulsanti fisici che comandano manualmente la salita e discesa. Se non utilizzati, devono essere disabilitati
togliendo la spunta corrispondente.
Esempio per un nodo Interruttore:
-
Interruttore 1 Topic eÌ il topic MQTT utilizzato per le comunicazioni con il nodo (NON deve essere uguale a nessun altro nodo)
-
Interruttore 1 GPIO releÌ eÌ il GPIO al quali saraÌ connessi i releÌ dell’interruttore
-
Interruttore 1 GPIO bottone eÌ il GPIO al quale puoÌ essere connesso il pulsante fisico che
comandano manualmente l’interruttore. Se non utilizzato, devono essere disabilitato togliendo la
spunta.
-
Interruttore 1 GPIO stato eÌ il GPIO che comunica lo stato del releÌ all’app e/o Home assistant.
- Nella maggior parte dei casi il suo valore coincide con GPIO releÌ. In casi particolari (per esempio in catene deviatori/Invertitori), puoÌ essere connesso ad un sensore presenza tensione all’utilizzatore finale.
4. Compilazione/Invio del dispositivo
Una volta creato il file SmartHome_Config.h non ci resta che compilare il firmware ed inviarlo al nostro dispositivo. Andiamo innanzitutto ad aprire il progetto SmartHome_V50Beta5nc.ino con Arduino IDE. Il progetto non ha bisogno di ulteriori modifiche.
L’apertura del file in Arduino IDE mostreraÌ una serie di schede che sono riferite ai file contenuti nella cartella e facenti parte del progetto.
Nella sezione “Strumenti” dopo aver settato la “Porta COM” relativa al nostro dispositivo, dobbiamo fare attenzione ai valori “Flash Size” e “Flash Mode” che sono caratteristici di ogni tipo di dispositivo.
Alcuni esempi:
Nodemcu - Flash Mode:DIO Flash Size:4M
Electrodragon - Flash Mode:DIO Flash Size:4M
Hipposwitch - Flash Mode:DIO Flash Size:4M
GC - Flash Mode:DIO Flash Size:2M
ESP01 - Flash Mode:DIO Flash Size:1M SONOFFDUAL - Flash Mode:QIO Flash Size:1M
SONOFF 4CH PRO R2 - Flash Mode:DOUT Flash Size:1M oppure Scheda: ESP8285 Shelly1 - Flash Mode:DIO Flash Size:2M Shelly2 - Flash Mode:DIO Flash Size:2M
A questo punto non ci resta che premere il pulsante “Carica” ed attendere la fine delle operazioni.
Al termine eÌ possibile vedere il corretto funzionamento e lo stato delle connessioni del dispositivo attraverso il monitor seriale di Arduino IDE.
Andrea ha sviluppato anche un applicazione android per il proprio firmware oppure potrete integrarlo in Home assistant, vediamo come:
⦠App AndroidIl file APK di installazione dell’app Android si trova nel repository github dove è archiviato il firmware.
Una volta installata, inserire i dati del broker MQTT nel menu “Configurazione”.
Vediamo adesso come integrare il tutto in Home assistant.
HOME ASSISTANT:
Per far vedere i nodi in Home assistant, bisogna configurarlo come segue:Dobbiamo creare una cartella di nome “packages” all’interno della cartella “config” di Home Assistant.
(oppure se siete su raspbian andate su home/homeassistant/.homeassistant)
Poi dobbiamo richiamarla nel file configuration.yaml in questo modo:sotto homeassistant aggiungere la riga: packages: !include_dir_named packages
PS: ricordarsi i 2 spazi davanti.
Ora ci basterà creare i nostri Packages e salvarli all’interno della cartella “config/package” poi dopo un controllo della configurazione con l’apposito menù “Impostazioni/Generale/Controlla La Configurazione” possiamo riavviare il Raspberry.
Alcuni esempi di packages si trovano nel repository github dove è archiviato il firmware.
Ricordatevi di personalizzare i files con i vostri dati (Topic, MacAddress).
In questa parte della guida utilizzeremo un modulo D1 mini e consideriamo l’utilizzo della release V50beta5nc di SmartHome.
1. Esempio configurazione di una Tapparella
1.1. Schema elettrico
1.2. Utilizzo del tool per la creazione del file SmartHome_config.h
Inserire i dati della rete WiFi e del broker MQTT negli appositi campi.Compilare i restanti campi come da immagine.
Premere “Continua” per passare alla pagina di configurazione della Tapparella.Compilare i campi come da immagine.
Premere “Continua” per completare la creazione del file SmartHome_config.h
A questo punto possiamo passare alla fase di compilazione e invio del firmware al dispositivo
.1.3. Settaggi scheda e invio al dispositivo
Andiamo innanzitutto ad aprire il progetto SmartHome_V50Beta5nc.ino con Arduino IDE. Selezioniamo la corretta “Porta COM” e controlliamo i valori “Flash Size” e “Flash Mode” che sono caratteristici di ogni tipo di dispositivo.
A questo punto non ci resta che premere il pulsante “Carica” ed attendere la fine delle operazioni.
1.4. Verifica funzionamento
Al termine è possibile vedere il corretto funzionamento e lo stato delle connessioni del dispositivo attraverso il monitor seriale di Arduino IDE. (settare il Baud rate a 115200)
La finestra che si aprirà, dopo l’avvio del dispositivo (reset) visualizzerà una schermata simile a questa:
1. Flash Chip configuration OK attesta che il “Flash Size” che abbiamo impostato è corretto.2. Verifichiamo che i GPIO che abbiamo inserito nel tool corrispondano con quelli inizializzati.3. WIFI connected! e MQTT connected! attestano che le connessioni sono OK.
1.5. Package Home assistant
Inserite le seguenti righe nel file smarthome_tapparella_esempio.yaml Nel campo “availability_topic” posto di “123456789012” dovrete mettere il MacAddress (minuscolo e senza “:”) del dispositivo.
cover:
- platform: mqtt
name: "Tapparella esempio"
command_topic: "Tapparella/esempio"
payload_open: "su"
payload_close: "giu"
payload_stop: "stop"
position_topic: "Tapparella/esempio/ack"
value_template: "{{value_json.PERCENTUALE}}"
set_position_topic: "Tapparella/esempio "
set_position_template: "%={{position}}"
state_topic: "Tapparella/esempio/ack"
availability_topic: "123456789012"
qos: 0
retain: false
optimistic: false
Inserire il file nella cartella Packages e riavviare il Rasberry.
Ringraziamo ancora ANDREA RONCORONI per questa splendida guida ed invitiamo tutti i lettori a proporre nuovi contenuti originali.
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.