Multipresa Smart con EspHome
.
Argomento: EspHome
Livello: Novizio (Novizio, Esperto, Pro)
Difficoltà: Media (Bassa, Media, Alta)
Home Assistant: v. 2020.12.2
EspHome: v. 1.15.3
Premessa
Esphome, con il diffondersi di Home Assistant, sta’ sempre prendendo più piede tra gli utenti, i quali si ingegnano per realizzare firmware personalizzati da inserire nei propri dispositivi smart.
In questo articolo vedremo come controllare la multipresa Wi-Fi Houzetek precedentemente recensita, tramite firmware realizzato con EspHome.
Un nostro utente di Telegram @davide_di_stefano ha realizzato il codice di base che ho adattato a questo modello.
Ho notato un funzionamento più fluido e reattivo con il firmware EspHome rispetto a quello Tasmota. Sicuramente perché molte automazioni presenti nel vecchio package sono state eliminate o realizzate internamente del firmware.
Analisi del codice sorgente
Con la variabile substitutions: è possibile creare delle etichette le quali, in fase di compilazione, si sostituiranno al valore dichiarato. Es. l’etichetta $host_name verrà sostituita da multi1 (attenzione che l’etichetta quando viene utilizzata all’interno del codice deve essere preceduta dal simbolo $). Possono essere seguite o precedute da altro testo in questo modo quando si andranno a creare le varie entità avranno sempre al suo interno la stessa etichetta, utile nel caso si debba riutilizzare lo stesso firmware per più dispositivi.
Ho aggiunto anche l’etichette dei GPIO del dispositivo, così da migliorarne la personalizzazione per differenti hardware.
esphome: vengono dichiarati il nome del progetto, la piattaforma e la scheda del dispositivo.
wifi: vengono dichiarate le credenziali della rete Wi-Fi. In questo caso è stato utilizzato la modalità secret uguale a quella utilizzata in Home Assistant. Nella stessa cartella di esphome si crea un file secret.yaml dove vengono salvate tutte le password o le cose che vogliamo celare per poi essere richiamate in modo più semplice.
logger: attivata la registrazione di tutti i messaggi del log
api: l’API nativa di Esphome vengono usate per la comunicazione con il dispositivo in questo modo non viene utilizzato il protocollo MQTT
ota: abilitata gli aggiornamenti via etere senza doversi collegare fisicamente al dispositivo
web_server: si abilita l’interfaccia web dove sarà possibile raggiungere il dispositivo digitando il suo IP nel browser
captive_portal: questo componente abilita un meccanismo di fallback per quando la connessione alla rete Wi-Fi fallisce.
Dopo 1 minuto di tentativi di connessione non riusciti, l’ESP avvierà un hotspot Wi-Fi (con le credenziali della configurazione). Connettendosi a questa rete che si è creata e portandosi all’indirizzo http://192.168.4.1 si potrà raggiungere l’interfaccia di configurazione. In questo modo, ad esempio, si potranno settare i nuovi parametri della rete Wi-Fi
Maggiori dettagli nella guida ufficiale.
https://esphome.io/components/captive_portal.html?highlight=captive_portal
Questi sono tre script: il primo verifica lo stato delle uscite e se sono spente spegne il led che illumina il tasto power. Gli altri due accendono o spengono tutte le uscite, serviranno come azioni associati al tasto power.
Questo codice definisce il comportamento del tasto power alla pressione ripetuta utilizzando la funzione on_multi_click. I commenti spiegano il loro funzionamento. Ho aggiunto come azione, oltre all’interazione con le varie uscite, una chiamata logger.log questo farà si che al compimento dell’azione scriverà la lable che ho dichiarato nel registro di sistema. In questo modo si facilitterà la parte di debug del codice. I log possono essere visualizzati nella web ui, se abilitata, raggiungibile all’indirizzo IP del dispositivo
Definizione degli switch:
La definizione dello switch.led è solo ad uso interno, segue la dichiarazione dei 4 relè e l’uscita USB. Infine uno switch template che restituisce l’interruttore del tasto power.
Nella dichiarazione dei relè è impostato il parametro restore_mode: RESTORE_DEFAULT_OFF questo controlla il modo in cui il GPIO tenta di ripristinare lo stato all’avvio:
RESTORE_DEFAULT_OFF tenta di ripristinare lo stato se non riesce lo porta a OFF
RESTORE_DEFAULT_ON tenta di ripristinare lo stato se non riesce lo porta a ON
ALWAYS_OFF porta sempre a OFF all’avvio
ALWAYS_ON porta sempre a ON all’avvio
Va specificato che lo stato, se non espressamente specificato, viene salvato nella memoria volatile dell’ESP e quindi non sarà mai possibile recuperare lo stato.
L’ESP per ripristinare gli stati dovrà salvare i dati nella memoria flash, la quale non si scancella al scollegamento elettrico, questo però ridurrà il numero di cicli di scrittura in memoria (solitamente 100.000 cicli di scrittura massimi).
Il parametro da dichiarare sotto è esp8266_restore_from_flash
Infine alcuni sensori come:
Livello segnale wi-fi
Sensore durata in attività del dispositivo
Versione di EspHome
Indirizzo IP del dispositivo.
L’intero codice lo potete scaricare da questo link
Package
Il package utilizzato precedentemente con Tasmota ha subito dei drastici tagli dato che molte automazioni sono state introdotte direttamente nel firmware della multipresa o eliminate perché non più necessarie. Anche tutta la dichiarazione dei sensori/interruttori MQTT sono stati eliminati dato che i parametri vengono acquisiti con l’API nativa di EspHome.
A questo link potete scaricare il package
Lovelace
Nella card in lovelace sono stati ritoccati alcuni nomi delle entità: lo switch del tasto power, dei relè e dell’USB e il sensore del wi-fi.
8 risposte
Salve, solo per avvisare che i link ai file ZIP del codice ESPHome e del package non sono raggiungibili. 🙂
Ciao Grande. Grazie per l’avviso, sistemiamo subito ?
Qualcuno è riuscito a flashare OTA questa ciabatta?
https://www.amazon.it/dp/B08GC2QJTZ/ref=cm_sw_r_u_apa_fabc_Wtl8FbXHQVT7B?tag=hassiohelp_bot-21
Ottimo lavoro! una domanda quando vado ad aggiungere l card mi dice:
Rilevati errori di configurazione:
duplicated mapping key (4:7)
1 | cards:
2 | – entities:
3 | – entity: input_boolean.att_prog …
4 | – entity: switch.multi1_power
———–^
5 | – style:
6 | background: ‘#62717b’
è possibile fare il primo flash via OTA? magari con Tuya Convert? esiste una guida? grazie.
Puoi provare e vedere se va, per la guida c’è su hassiohelp, altrimenti usa quella ufficila linkata sempre nell’articolo:
https://hassiohelp.eu/2019/03/22/tasmota-tuya-ota/
Flash fatto via OTA con successo. Grazie!
Ora le nuove ciabatte in commercio non hanno più il TYWE2S ma il CB2S. Sapete se cambia qualcosa?