Smarthome, il firmware per ESP8266 MADE IN ITALY alternativo a Tasmota

L'angolo dei lettori

Scritto da Luigi Duchi

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 è necessario:

1. Recupero dei File Necessari

La prima operazione è 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 è possibile “installare” più nodi, anche combinazioni di nodi diversi.Per esempio, è possibile usare 4 interruttori (4 nodi) oppure 1 tapparella + 1 interruttore + 1 impulso (1+1+1 nodi) e così via. L’unica limitazione è il numero di GPIO disponibili nel dispositivo.

Una volta premuto il pulsate “Continua”, il tool vi chiederà la configurazione di ogni singolo nodo, fino alla creazione del file.

 

Esempio per un nodo Tapparella:

  • Tapparella 1 Topic è il topic MQTT utilizzato per le comunicazioni con il nodo (NON deve essere uguale a nessun altro nodo)

  • Tapparella 1 GPIO relè SU e GIU sono i GPIO ai quali saranno connessi i relè 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 è il topic MQTT utilizzato per le comunicazioni con il nodo (NON deve essere uguale a nessun altro nodo)

  • Interruttore 1 GPIO relè è il GPIO al quali sarà connessi i relè dell’interruttore

  • Interruttore 1 GPIO bottone è il GPIO al quale può essere connesso il pulsante fisico che

    comandano manualmente l’interruttore. Se non utilizzato, devono essere disabilitato togliendo la

    spunta.

  • Interruttore 1 GPIO stato è il GPIO che comunica lo stato del relè all’app e/o Home assistant.

  • Nella maggior parte dei casi il suo valore coincide con GPIO relè. In casi particolari (per esempio in catene deviatori/Invertitori), può 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 mostrerà 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 è 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.

Luigi Duchi

Nato a Grosseto il 24 Dicembre 1982 perito elettrotecnico che lavora nel mondo della domotica e installazione di impianti elettrici, impianti di allarmi, videosorveglianza e automazioni in genere. Appassionato da sempre di tecnologia e aperto alla conoscenza di nuove soluzioni.


Vai ai commenti