HassioHelp
Grazie ad Andrea Roncoroni, riportiamo un approfondimento molto dettagliato del suo software SmartHome per ESP8266.
Argomento: Software per ESP8266
Livello: Pro (Novizio,Esperto, Pro)
Difficoltà: Alta (Bassa, Media, Alta)
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/SmartHome
Ultima release: https://github.com/roncoa/SmartHome/Relèases/latest
Wiki: https://github.com/roncoa/SmartHome/wiki
APP Android: https://play.google.com/store/apps/details?id=roncoa.SmartHome
Canale YouTube: https://www.youtube.com/channel/UCH0nHGMIiRXIqrjvXte5OcA
Gruppo Facebook: https://www.facebook.com/groups/SmartHome.roncoa
Gruppo Telegram: https://t.me/joinchat/HDit8BbtVrId4Xh89_gBqw
Forum HassioHelp: https://forum.hassiohelp.eu/t/smarthome-by-at-roncoa
Per quanto rigurda l’installazione del software su ESP8266 vi mando alla guida “SmartHome e Home Assistant – Installazione e configurazione iniziale”.
Ora vi riporto la modalità “Advance”, scritta direttamente da Andrea Roncoroni. Tutto ciò che c’é da sapere, nel dettaglio, sulla configurazione del software e i suoi nodi!
Rete Wi-Fi
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 configAP: 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. A seconda del collegamento si può invertirne la logica di lampeggio.
Reset:
In assenza di connessioni: Tempo (in secondo) trascorso il quale, in mancanza di connessioni, il dispositivo viene resettato.
Se il valore viene lasciato a “0”, il dispositivo non viene mai resettato.
Reset giornaliero: Se abilitato, il dispositivo viene resettato ogni 24 ore dall’avvio.
Input/Output:
Abilita la resistenza interna: Se abilitato, vengono usate le resistenze di PullUp interne all’ESP8266. Per mandare allo stato logico H, l’ingresso va connesso a GND.
Senza le resistenze interne abilitate ed in presenza di switch, agli ingressi vanno collegate delle resistenze esterne.
PullUp | PullDown |
Input invertiti: Inverte la logica di funzionamento degli ingressi.
Output invertiti: Inverte la logica di funzionamento delle uscite.
Abilita expander MCP23017 (I2C): abilita l’utilizzo degli expander per i GPIO.
Per usare i GPIO con l’MCP23017 bisogna inserirli in questo modo:
MCP23017 addr.0x20: inserire nei campi dei GPIO valori da 100 a 115
MCP23017 addr.0x21: inserire nei campi dei GPIO valori da 208 a 215
e cosi’ via, fino ad arrivare al
MCP23017 addr.0x27: inserire nei campi dei GPIO valori da 808 a 815
Addr(hex) GPIO
0x27 PA0-PA7 -> 800-807 – PB0-PB7 -> 808-815
0x26 PA0-PA7 -> 700-707 – PB0-PB7 -> 708-715
0x25 PA0-PA7 -> 600-607 – PB0-PB7 -> 608-615
0x24 PA0-PA7 -> 500-507 – PB0-PB7 -> 508-515
0x23 PA0-PA7 -> 400-407 – PB0-PB7 -> 408-415
0x22 PA0-PA7 -> 300-307 – PB0-PB7 -> 308-315
0x21 PA0-PA7 -> 200-207 – PB0-PB7 -> 208-215
0x20 PA0-PA7 -> 100-107 – PB0-PB7 -> 108-115
ESP8266 I/O ESP -> 0-15
Cambia GPIO I2C: Abilita l’utilizzo di GPIO alternativi a GPIO4 e GPIO5 per SDA e SCL del bus I2C.
Debug Serial, Serial1, Telnet: Indica dove viene pubblicato i debug di funzionamento del dispositivo.
Descrizione bottoni piè pagina:
Cancel: Ripristina ultimi valori salvati.
RESET configurazione: Cancella EEPROM, cancella file di configurazione e riavvia il dispositivo in modalità “configAP”.
REBOOT dispositivo: Riavvia il dispositivo.
Aggiornamento firmware: Aggiornamento firmware OTA da files .bin o .bin.gz .
Gestione files: Gestione files di configurazione salvati nel filesystem dell’ESP.
SAVE configurazione: Salva la configurazione nel dispositivo.
SAVE configurazione & RUN SmartHome: Salva la configurazione nel dispositivo e lo avvia in modalità “normal”.
Nodo Tapparella:
Il nodo “tapparella” serve per comandare tapparelle, serrande, tende, ecc.
Ad ogni nodo sono collegati:
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 “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 Interruttore:
Il nodo “interruttore” serve per comandare prese, luci, ecc.
Ad ogni nodo sono collegati:
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 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 Impulso:
Il nodo “impulso” serve per comandare portoni, cancelli, ecc.
Ad ogni nodo sono collegati:
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 “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 Temporizzatore:
Il nodo “temporizzatore” serve per comandare prese, luci, ecc.
Ad ogni nodo sono collegati:
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:
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 “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 Power:
Il nodo “power” serve per controllo carichi.
Sono utilizzabili i PZEM004 V1 e V3, prese BlitzWolf e SonoffPOW.
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, PZEM016, BlitzWolf o Sonoff POW).
Nel caso di PZEM004, PZEM004 V3o PZEM016 nel campo GPIO RX-TX mettere i gpio interessati.
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 Termostato:
Il nodo “termostato” serve per comandare caldaie, stufe, climatizzatori, ecc.
Ad ogni nodo sono collegati:
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 “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 Display:
Il nodo “display” serve per comandare un piccolo display.
Ad ogni nodo sono collegati:
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 “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 IR:
Il nodo “IR” serve per leggere e/o inviare segnale IR per televisori, condizionatori ecc. ecc..
Ad ogni nodo sono collegati:
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.
I campi fondamentali sono “Topic”, “GPIO TX” e/o “GPIO RX.
Nel campo “Topic” mettere il topic univoco che contraddistingue il singolo IR da configurate (es. “IR/sala”).
Ai campi GPIO TX e GPIO RX, vanno connessi il ricevitore o il trasmettitore.
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.
Ogni codice ricevuto verrà visualizzato nei campi superiori.
I campi inferiori vengono utilizzati per l’invio dei codici RAW (FREQ, RAW e RAW SIZE) e codici HEX ( PROTOCOL, HEX e HEX SIZE).
Nodo LED:
Il nodo “LED” serve per gestire singoli led, strisce a led RGB o strisce a led RGBW.
Ad ogni nodo sono collegati (a seconda dei casi):
Nella modalità di configurazione (“config” o “configAP”) completare i campi interessati.
Una volta premuto il pulsate “Save configurazione &RUN Smarthome”, il dispositivo si riavvierà in modalità “normal”.
Nella sezione Doc del suo GitHub troverete i comandi MQTT e qualsiasi aggiornamento di documentazione.
Ecco le guide dei miei progetti con ESP8266:
creazioni esp8266 firmware guida hassio HassioHelp Home Assistant Homeassistant mqtt nodemcu progetti sensori smarthome software wemos
© 2021 HassioHelp. Created by Nicolò Invernizzi Locknet.eu [DIVIETO DI RIPRODUZIONE].
2 risposte
salve, gran bel tutorial, come pochi e soprattutto in italiano, una cosa sola, ho notato che iniziando a configurare il primo sensore di temperatura e umidità con wemos d1 mini, non si collega alla rete, potrebbe essere un bug visto che su altre reti tipo quelle del cellulare in hotspot si collega, il bug lo vedo anche guardando da putty collegato in com, ho la password del wifi con un segno + e sul terminale putty non lo vede proprio, sembra esserci uno spazio al posto del segno +, ora non vorrei risolvere cambiando la password perchè ho una marea di dispositivi da riconfigurare se così mi toccherebbe risolvere il problema, c’è possibilità di ovviare al problema? grazie.
Non ho quel problema. Prova ad aggiornare smarthome o ad utilizzare intanto delle versioni precedenti e vedi se il problema persiste. Ma credo sia un problema della tua rete