SmartHome - il firmware per ESP8266 tutto italiano!
di Luigi Duchi
23 Aprile 2020
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.
Non moltissimo tempo fa avevamo ospitato in questa rubrica ANDREA RONCORONI che torna oggi a parlarci del firmware SmartHome per ESP8266, da lui realizzato, che ormai è arrivato alla versione 6.0 beta14.
Oggi Andrea ci mostrerà tutte le novità dell'ultima versione.
SmartHome è un firmware per dispositivi basati sul microcontrollore ESP8266 con lo scopo di realizzare moduli domotici a basso costo per rendere "intelligente" la casa.
La logica del progetto è divisa in nodi ed ogni nodo ha la propria logica di funzionamento e gestisce i GPIO (ingressi ed uscite) ad esso collegati.
I nodi sono: nodo tapparella, interruttore, impulso, temporizzatore, sensore, power, termostato e display.
Su ogni singolo ESP8266, si possono caricare più nodi, anche non dello stesso tipo, basta che abbiano tutti un topic diverso (ad esempio: "Tapparella/sala", "Tapparella/cucina", "Interruttore/sala", ecc.).
Ogni nodo comunica attraverso il protocollo MQTT con il broker, che può essere locale (LAN) o remoto (internet).
Per interagire con i singoli nodi (contraddistinti da un topic MQTT univoco), bisogna inviargli specifici comandi. In questo modo gli facciamo compiere operazioni specifiche oppure possiamo interrogarlo per avere informazioni come per esempio lo stato. Il nodo risponderà sul topic "TopicNodo/ack".
Tutti i nodi sono gestibili attraverso l’app Android dedicata (scaricabile dal Google Play Store) oppure attraverso HUB personali come per esempio Home Assistant.
Progetto su GitHub: https://github.com/roncoa/SmartHomeUltima release: https://github.com/roncoa/SmartHome/Relèases/latestWiki: https://github.com/roncoa/SmartHome/wikiAPP Android: https://play.google.com/store/apps/details?id=roncoa.SmartHomeCanale YouTube: https://www.youtube.com/channel/UCH0nHGMIiRXIqrjvXte5OcAGruppo Facebook: https://www.facebook.com/groups/SmartHome.roncoaGruppo Telegram: https://t.me/joinchat/HDit8BbtVrId4Xh89_gBqwForum HassioHelp: https://forum.hassiohelp.eu/t/smarthome-by-at-roncoa
Installazione:
Download del firmware:
- Scaricare l’ultima release di SmartHome V6.0 (SmartHome_v60xxxxx.zip) ad esempio https://github.com/roncoa/smarthome/releases/latest
- Scompattare i file in una cartella nota.
Download del tool FlashESP8266:
- Scaricare il tool per il flash da https://github.com/roncoa/SmartHome/blob/master/utility/FlashESP8266.zip
- Scompattare i file nella cartella dove sono presenti i file .bin del firmware
Flash del firmware con il tool FlashESP8266:
- Aprire la cartella creata precedentemente.
- Avviare il file FlashESP8266.exe
- Selezionare la porta COM dalla tendina “COM-Port”.
- (Opzionale ma consigliato) Cancellare la memoria del dispositivo:
- Selezionare dalla tendina “Firmware” il file “blank_XMB.bin” specifico del vostro dispositivo (es. per Wemos D1mini (4M) -> “blank_4MB.bin”).
- Premere sul tasto “Flash” ed attendere la fine del processo.
- Caricare il firmware:
- Selezionare dalla tendina “Firmware” il file “SmartHome_v60beta10.ino.XMB.bin” specifico del vostro dispositivo (es. per Wemos D1mini (4M) -> “SmartHome_v60beta10.ino.4MB.bin”).
- Premere sul tasto “Flash” ed attendere la fine del processo.
- Per i dispositivi senza circuito di reset (come per esempio ESP-01) occorre effettuare un riavvio togliendo e rimettendo l’alimentazione o mettendo il pin RST a GND.
Piccolo video dimostrativo: https://www.youtube.com/watch?v=cC65IcN-Zb4&t
Istruzioni primo avvio (modalità “configAP”):
Dopo aver caricato con successo il firmware e resettato il dispositivo, al primo avvio SmarHome partirà in modalità “configAP”.
In modalità “configAP”, il dispositivo creerà una propria rete Wi-Fi nominata “SmartHome-XXXXXXXXXXXX” (dove “XXXXXXXXXXXX” è il MacAddress del dispositivo).
Per entrare nella pagina di configurazione, basterà collegarci alla rete “SmartHome-XXXXXXXXXXXX” e successivamente aprire su un browser la pagina “192.168.4.1”.
A questo punto possiamo configurare il nostro dispositivo.
CONFIGURAZIONE BASE
SSID e Password: dati della rete Wi-Fi sulla quale funzionerà SmartHome.
Host Name: Nome identificativo del dispositivo all’interno della rete Wi-Fi.In pratica è l’identificativo che comparirà nella lista delle reti Wi-Fi del vostro router o scanner Wi-Fi.
IP statico: se abilitato, SmartHome non utilizzerà DHCP per l’assegnazione dell’indirizzo IP, ma utilizzerà IP, gateway, subnet e dnsip configurati.Se ci dovessero essere errori nei valori configurati, SmartHome utilizzerà DHCP.
IP, gateway, subnet e dnsip: Dati utilizzati in caso di IP statico.Se il campo “subnet” viene lasciato vuoto, verrà utilizzato il valore “255.255.255.0”, se il campo “dnsip” viene lasciato vuoto, verrà utilizzato il valore “8.8.8.8”.
WEB auth. User e Password: Autenticazione a protezione della pagina web del dispositivo (non la pagina di configurazione).
Se il campo “password” viene lasciato vuoto, non verrà utilizzata l’autenticazione.
MQTT:
mqtt server, mqtt user, mqtt password e mqtt port: Dati del broker MQTT utilizzato.Se il campo “mqtt server” viene lasciato vuoto, non verranno effettuati tentativi di connessione a MQTT.
will topic: Topic sul quale verrà pubblicato lo stato (“online” o “offline”) del dispositivo. Coincide con il LWT.
Home Assistant auto discovery: Abilita il riconoscimento automatico dei nodi in Home Assistant.
Configurazione hardware:
GPIO config: Se abilitato, collegando a GND il GPIO configurato per almeno 10 secondi, il dispositivo verrà resettato e si avvierà in modalità “configAP”.
GPIO Status led: se abilitato, il GPIO configurato va connesso ad un led che segnala lo stato delle connessioni del dispositivo.
- 2 lampeggi - reti (Wi-Fi + MQTT) OK.
- 3 lampeggi - errore MQTT + Wi-Fi OK.
- 4 lampeggi – errore Wi-Fi.
I/O: Input PullDown: Indica se i GPIO utilizzati come ingressi vanno connessi ad una resistenza di PullUp o PullDown.
Input PullDown flaggato (resistenza verso GND)
- Stato logico L con ingressi a 3v3.
- Stato logico H con ingressi a GND.
I/O: Inversione Output: Inverte la logica di funzionamento delle uscite.Inversione Output flaggato: logica uscite invertita.Inversione Output non flaggato: logica uscite normale.
Debug Serial, Serial1, Telnet: Indica dove viene pubblicato i debug di funzionamento del dispositivo.
- Serial – su TX0
- Serial1 – su TX1
- Telnet – su Telnet (porta 23)
Tempo Reboot: Tempo (in secondo) trascorso il quale, in mancanza di connessioni, il dispositivo viene resettato.Se il “Tempo Reboot” viene lasciato a “0”, il dispositivo non viene mai resettato.
Reset giornaliero: Se abilitato, il dispositivo viene resettato ogni 24 ore dall’avvio.
Descrizione bottoni piè pagina:
Cancel: Ripristina ultimi valori salvati.RESET configurazione: Cancella EEPROM, cancella file di configurazione e riavvia ildispositivo in modalità “configAP”.REBOOT dispositivo: Riavvia il dispositivo.SAVE configurazione: Salva la configurazione nel dispositivo.SAVE configurazione & RUN SmartHome: Salva la configurazione nel dispositivo e lo avvia in modalità “normal”.
Descrizione nodi:
Nodo Tapparella:Il nodo "tapparella" serve per comandare tapparelle, serrande, tende, ecc.Ad ogni nodo sono collegati:
- 2 GPIO usati per comandare 2 relè per il movimento della tapparella (SU/GIU).
- 2 GPIO (opzionali) usati come ingressi fisici da interruttori interbloccati o pulsanti per comandare direttamente il movimento della tapparella (SU/GIU).
- 2 GPIO (opzionali) usati come ingressi fisici da finecorsa per arrestare il movimento della tapparella (SU/GIU).
Il nodo "tapparella" gestisce anche il tempo di salita/discesa e la percentuale.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic” e “GPIO Relè SU e GIU”.Nel campo “Topic” mettere il topic univoco che contraddistingue la singola tapparella da configurate (es. “Tapparella/1P/cucina”).Nei 2 campi GPIO Relè (SU e GIU) mettere i gpio assegnati al comando dei relè SU e GIU.
I relè lato software sono interbloccati (non possono essere eccitati contemporaneamente) e hanno un tempo di pausa in caso di inversione di marcia del motore.
Lo schema elettrico consigliato per il collegamento del motore è questo:
Una volta premuto il pulsate
il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Interruttore:
Il nodo "interruttore" serve per comandare prese, luci, ecc.Ad ogni nodo sono collegati:
- 1 GPIO usato per comandare il relè.
- 1 GPIO (opzionale) usato come ingresso fisico da pulsante o interruttore (mono/bistabile).
- 1 GPIO (opzionale) usato come ingresso fisico per la segnalazione dello stato effettivo della presa/luce.
- 1 GPIO (opzionale) usato per comandare un eventuale secondo relè (per esempio una spia di segnalazione).
Il nodo " interruttore " è predisposto a funzionare in qualunque situazione, anche in presenza di deviatori/invertitori, mantenendo la gestione dello stato.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic” e “GPIO Relè”.Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo interruttore da configurate (es. “Interruttore/1P/cucina”).Nel campo GPIO Relè mettere il gpio assegnato al comando del relè.
Una volta premuto il pulsate "save configurazione & Run Smart Home", il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Impulso:
Il nodo "impulso" serve per comandare portoni, cancelli, ecc.Ad ogni nodo sono collegati:
- 1 GPIO usato per comandare il relè.
- 1 GPIO (opzionale) usato come ingresso fisico da pulsante.
Al nodo “impulso” attiva per 500 millisecondi il relè.Può essere abbinato anche un lettore di tag NFC e gestisce fino a 25 tag.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic” e “GPIO Relè”.Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo impulso da configurate (es. “Impulso/cancelletto”).Nel campo GPIO Relè mettere il gpio assegnato al comando del relè.
Una volta premuto il pulsate , il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Temporizzatore:
Il nodo "temporizzatore" serve per comandare prese, luci, ecc.Ad ogni nodo sono collegati:
- 1 GPIO usato per comandare il relè.
- 1 GPIO (opzionale) usato come ingresso fisico da pulsante.
Il nodo “temporizzatore” attiva il relè per un tempo impostabile dall’utente.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic” e “GPIO Relè”.Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo temporizzatore da configurate (es. “Temporizzatore/lucescale”).Nel campo GPIO Relè mettere il gpio assegnato al comando del relè.
Una volta premuto il pulsate SAVE configurazione & RUN Smarthome , il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Sensore:
Il nodo "sensore" serve per controllare sensori di presenza, ingressi digitali vari, ecc.Ad ogni nodo sono collegati:
- 1 GPIO usato come ingresso fisico.
Il nodo "sensore" monitora l’ingresso e ne invia lo stato tramite MQTT (topic e payload configurabili dall’utente).
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic”, “GPIO sensore, “Topic risposta”, “Payload risposta ON” e “Payload risposta OFF”.Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo sensore da configurate (es. “Sensore/presenza/corridoio”).Nel campo GPIO sensore mettere il gpio assegnato all’ingresso del sensore.Nel campo Topic risposta mettere il Topic verso il quale verranno inviati i payload di risposta.Nel campo Payload risposta ON mettere il payload di risposta in caso che l’ingresso del sensore sia alto.Nel campo Payload risposta OFF mettere il payload di risposta in caso che l’ingresso del sensore sia basso.
Una volta premuto il pulsate , il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Power:
Il nodo "power" serve per controllo carichi.Sono utilizzabili i PZEM004 V1 e V3, prese BlitzWolf e SonoffPOW.
- 2 GPIO usati dal dispositivo controllo carichi.
Il nodo "power " invia tramite MQTT i dati istantanei letti e uno storico giornaliero/settimanale/mensile.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic”, “Device” e “GPIO RX-TX” (in caso di PZEM004 o PZEM004 V3).Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo nodo power da configurate (es. “Power/lavatrice”).Nel campo Device mettere tipo di dispositivo usato (PZEM004, PZEM004 V3, BlitzWolf o Sonoff POW).Nel caso di PZEM004 o PZEM004 V3, nel campo GPIO RX-TX mettere i gpio interessati.
Una volta premuto il pulsate , il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Termostato:
Il nodo "termostato" serve per comandare caldaie, stufe, climatizzatori, ecc.Ad ogni nodo sono collegati:
- 1 GPIO usato per comandare il relè.
- 1 GPIO usato come ingresso fisico del sensore (DHT11, DHT22 o DS18B20).
- 2 GPIO (opzionale) usati per il display OLED SSD1306 i2c.
- 3 GPIO (opzionali) usati per seleziona le funzioni del termostato.
Il nodo “termostato” può visualizzare la temperatura/umidità e lo stato su un display OLED SSD1306 e può funzionare in modalità manuale, automatico o cronotermostato.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic”, “GPIO Relè”, “GPIO Sensore” e “Tipo Sensore”.Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo termostato da configurate (es. “Termostato/primopiano”).Nel campo GPIO Relè mettere il gpio assegnato al comando del relè.Nel campo GPIO Sensore mettere il gpio assegnato all’ingresso del sensore.Nel campo Tipo Sensore mettere il tipo di sensore usato (DHT11, DHT22 o ).I campi Addr. I2C, GPIO SDA e SCL, Più e Meno, servono per configurare un display OLED SDD1306.I campi GPIO Bottone, Più e Meno, se abilitati pilotano dei pulsanti per il controllo del termostato attraverso il display.
Una volta premuto il pulsate , il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Nodo Display:
Il nodo "display" serve per comandare un piccolo display.Ad ogni nodo sono collegati:
- 2 GPIO usati per il display OLED SSD1306 i2c.
Con il nodo "display" possiamo visualizzare 4 righe a piacere su un display OLED SSD1306.
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.I campi fondamentali sono “Topic”, “Addr. I2C”, “GPIO SDA” e “GPIO SCL”.Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo display da configurate (es. “Display/info”).I campi Addr. I2C, GPIO SDA e SCL, Più e Meno, servono per configurare un display OLED SDD1306.Una volta premuto il pulsate , il dispositivo si riavvierà in modalità “normal”.
Pagina web nodi:
In modalità “normal”, si può accedere alla pagina web del dispositivo digitando su un web browser il suo indirizzo IP.
Ringraziamo ANDREA RONCORONI per aver scritto ancora una volta per la rubrica l'angolo dei lettori e 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.