community italiana di domotica personale
 
⭐️ Firmware: “ESPHome”, il modulare perfetto per la domotica personale

⭐️ Firmware: “ESPHome”, il modulare perfetto per la domotica personale

Siluppatore: Open Home Foundation
Categoria: Software
Tipologia: Custom firmware modulare
Tecnologia: SOC ESP8266 e ESP32
Difficoltà d’installazione: Medio/Bassa
Semplicità d’uso: Media
Disponibilità: sito ufficiale
Revisione scheda: 2.2

 

ESPHome Logo

 

ESPHome è uno straordinario firmware Open Source concepito espressamente per l’uso in domotica personale.
Dispositivi compatibili sono ad esempio quelli della linea ITEAD “Sonoff Smart Home”, quelli della Shelly “Home Automation Systems”, il NodeMCU e a seguire tantissimi altri, tanto da non poterli elencare tutti: sono davvero innumerevoli. Possibiamo affermare che, sostanzialmente, qualsiasi componente basato su chip ESP32 e ESP8266 è compatibile con ESPHome.

Ciò che differenzia questo firmware da altri, anche molto noti (uno su tutti, Tasmota), e che spinge inDomus a interessarsene è il concept che sta alla base di questo software: a differenza degli altri, ESPHome è infatti modulare, in quanto può essere modellato a monte della sua compilazione (e della sua installazione sul componente). Altri firmware, infatti, vengono messi a disposizione completi, “così come sono”, dotati quindi di tutte le possibili funzionalità previste dallo sviluppatore, il che appesantisce il firmware e riduce sensibilmente lo spazio in memoria utile per sviluppi di nuovi funzionalità e servizi.

ESPHome mette a disposizione un enorme elenco di funzionalità (componenti) di diversa natura (di base, ma anche più strutturati come interruttori, sensori, unità clima e molto altro) che possono essere, come mattoncini da costruzioni, selezionate e aggiunte a monte, compilate e infine collocate sul componente in modo da controllarlo come meglio si crede.

In pratica, si realizza una “ricetta” ad hoc per il proprio dispositivo target, dopodichè la si “cucina” (la si compila) e la si “serve a tavola” (la si installa sul dispositivo target).

Poniamo di voler riprogrammare, quale dispositivo target, un Sonoff Basic: trattandosi di un semplice interruttore intelligente Wi-Fi a singolo relè sarà sufficiente aggiungere alla “ricetta” le funzioni basilari (come le caratteristiche della board, username e password d’accesso alla Wi-Fi), la funzionalità “interruttore”, quella “pulsante” (per governare il pulsante presente sull’attuatore), un “sensore” che fornisca la lettura di potenza di segnale Wi-Fi leggendola all’interno dell’attuatore e poco altro: al termine della configurazione il firmware viene compilato ed è pronto per essere installato sul componente.

D’ACCORDO, MA COME SI PREPARA “LA RICETTA”?

Semplice: è sufficiente redigere un semplice file in notazione YAML nel quale inserire (un po’ come si fa con il file di configurazione di Home Assistant) le chiavi relative ai vari componenti che si vogliono inserire relative al dispositivo target.

Un esempio degli elementi essenziali, di base, per il sopracitato Sonoff Basic esemplificativo, potrebbero essere le sequenti:

esphome:
  name: sonoff_basic
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: "il_nome_della_propria_wifi"
  password: "la_password_della_wifi"

  # Abilita la creazione di un AP Wi-Fi in caso di caduta della rete domestica
  ap:
    ssid: "Sonoff Basic"
    password: "una_propria_password"

Una volta completato il file YAML (che spesse volte può essere scaricato direttamente già bello e pronto da Internet) è sufficiente salvarlo.


Per modellare il proprio file YAML si utilizza, solitamente, un’intuitiva interfaccia web la quale consente di modellare il proprio file YAML tramite procedura passo-passo. Di questo parleremo più nello specifico a seguire.

N.b. Abbiamo redatto un articolo ad hoc che spiega quali elementi imprescindibili inserire in praticamente qualsiasi “ricetta” per i propri componenti. È disponibile qui.
COME LA SI “CUCINA”, OVVERO COME SI COMPILA IL FIRMWARE?

Come sempre, un firmware per esser installato dev’essere prima compilato in un file binario che sia poi caricato e interprestato dal processore del dispositivo target, ESP8266 o ESP32 che sia. Anche in questo ESPHome si differenzia da molti altri firmware: primariamente è disponibile un tool da riga di comando che, sulla base del file YAML precedentemente definito, produce in output il firmware compilato. Tale tool, volendo, istanzia anche un’interfaccia web per la modellazione dei propri file YAML di configurazione ESPHome nonché, appunto, per la loro compilazione.

Se invece si utilizza Home Assistant OS (aka HASSOS, o HASSIO) e quindi l’add-on di ESPHome (da non confondersi con l’integrazione, cosa che vedremo in seguito), la compilazione si effettua facilmente al termine della definizione di ogni file YAML, fornendo in output appunto il file binario (.bin) pronto per esser installato sul dispositivo target.

Home Assistant HASSIO - ESPHome Add-on
l’add-on Home Assistant.
COME SI INSTALLA (LA PRIMA VOLTA) SUL DISPOSITIVO TARGET?

Per installare ESPHome esistono varie tecniche, le quali si distinguono in base al dispositivo target da riprogrammare. Questi i casi:

  • se il dispositivo è dotato di una porta USB, allora per lo più è sufficiente collegarlo tramite cavo al proprio computer, aprire la dashboard web di ESPHome, compilare e poi scaricare il proprio file binario e poi, tramite il sito web ESPHome Web (o altre tecniche), provvedere alla riprogramazione;
  • USB/TTLse il dispositivo non è dotato di porta USB, allora è necessario adottare un adattatore USB/TTL (FTDI) e relativo cavo di connessione USB così da collegarlo al computer di appoggio e poi provvedere al flash via riga di comando oppure tramite il sopracitato sito web ESPHome Web;
  • se il dispositivo prevede di fabbrica il flashing direttamente OTA (tipo il Sonoff Mini, per capirci), non serve né adattatore né cavo USB, in quanto basta la propria rete Wi-Fi: sempre tramite la dashboard web di ESPHome (oppure via riga di comando) è possibile ompilare e poi scaricare il proprio file binario dopodiché “passarlo” all’interfaccia OTA del dispositivo e provvedere così alla prima riprogrammazione.

Un’altra ipotesi (valida per i soli componenti ESP8266, non gli ESP32) è quella per la quale è possibile, al termine della compilazione, interrompere la procedura, scaricare semplicemente il firmware precompilato binario e provvedere, in altro modo (come spiegato in questa nostra guida) alla riprogrammazione. In questa modalità possono essere utilizzati anche altri tool, come l’ESPTool Flasher.

Una volta installato ESPHome sul dispositivo (configurato aggiungendo tutti i componenti di base consigliati), ogni aggiornamento successivo potrà venire effettuato direttamente over-the-air (OTA), ovvero via Wi-Fi.

Tasmota Full LogoN.b. In caso il dispositivo target sia già dotato di firmware Tasmota, per riprogrammarlo con ESPHome non è necessario collegarlo fisicamente al prorpio computer di appoggio. È infatti sufficiente compilare normalmente il firmare ESPHome, scaricare il precompilato e, tramite interfaccia web di Tasmota, aggiornare il firmware usando quel precompilato ESPHome. Maggiori dettagli sono disponibili qui.

Come adottarlo

Come spiegato, ESPHome offre una suite di strumenti concepiti per configurare, compilare e installare il firmware, tra i quali appunto la comodissima dashboard web. Tali strumenti possono essere installati ed eseguiti su sistemi operativi dotati di ambiente Docker (vedi documentazione ufficiale) o in altre modalità:

  • gli utenti Home Assistant OS/Supervised possono beneficiare dell’esistenza di un praticissimo add-on il quale, una volta configurato, consente di eseguire le più comuni operazioni ESPHome direttamente da interfaccia web. A tale declinazione degli strumenti ESPHome abbiamo dedicato una guida ad hoc;
  • gli utenti Mini PC/Intel NUC (o computer tradizionali) che vogliano utilizzare container Docker su sistema operativo Linux Debian (e comunque agli utenti Docker su Linux in genere) possono beneficiare di una suite di tool messi a disposizione da ESPHome che, una volta installati, permettono di modellare i propri progetti, compilarli e installarli sui dispositivi target. Anche a tale declinazione degli strumenti ESPHome abbiamo dedicato una guida ad hoc, valida comunque anche per altri sistemi operativi Linux;
  • gli utenti Raspberry Pi con sistema operativo Raspberry Pi OS (e comunque agli utenti Linux in genere) possono beneficiare di una suite di tool messi a disposizione da ESPHome che, una volta installati, permettono di modellare i propri progetti, compilarli e installarli sui dispositivi target. A tale declinazione degli strumenti ESPHome abbiamo dedicato una guida ad hoc, valida comunque anche per altri sistemi operativi Linux;
  • gli utenti Raspberry Pi che vogliano utilizzare container Docker su sistema operativo Raspberry Pi OS possono beneficiare di una suite di tool messi a disposizione da ESPHome che, una volta installati, permettono di modellare i propri progetti, compilarli e installarli sui dispositivi target. Anche a tale declinazione degli strumenti ESPHome abbiamo dedicato una guida ad hoc;
  • altri sistemi sui quali eseguire con ESPHome.

Automazioni

Una delle caratteristiche più interessanti di ESPHome – a di là di quanto già descritto – è l’esistenza di automazioni, vale a dire la possibilità di definire come un dato componente dotato di tale firmware debba comportarsi al presentarsi di determinate condizioni.

Rimane pur vero ciò che sosteniamo da sempre, ovvero che la centralità delle automazioni debba rimanere presso l’HUB personale della propria domotica; nel caso delle automazione di ESPHome il discorso però è leggermente diverso. Poniamo per esempio di avere un attuatore che, alla sua attivazione, debba aprire/chiudere il contatto per un breve lasso di tempo, come per esempio nel caso degli attuatori a contatto pulito per domotizzare telecomandi. Sicuramente potrebbe essere centralizzato in domotica personale, ma trattandosi di un comportamento specifico dell’attuatore (praticamente una funzione), è bene che sia lui a comportarsi così e sempre così.

Per farlo, con ESPHome, si usano per l’appunto le automazioni, ovvero dei comportamenti predeterminati definiti sempre nel solito file YAML che si usa per compilare il firmware. Di contro,  in presenza di altri firmware l’esecuzione di scenari come quello (per esempio) sopra descritto non prevede l’eventuale ripogrammazione (necessaria con ESPHome) in caso di modifiche – si pensi al banale comando PULSETIME di Tasmota: solitamente basta eseguirlo e la modifica comportamentale è attuata.

Integrazioni

Infine, un tema molto caro a questa community, ovvero l’integrabilità domotica.
ESPHome nasce con l’integrabilità nel sangue: Home Assistant (il più adottato tra gli HUB personali) è dotato di un’integrazione nativa che sfrutta le API presenti sui dispositivi dotati di firmware ESPHome (purché abbiano tra i componenti inclusi nella compilazione le API ESPHome); stessa cosa vale per openHAB, Domotiz e altri, sempre tramite API. I più affezionati allo standard MQTT non devono temere: includendo nella compilazione il componente client MQTT  è possibile praticamente integrare con qualsiasi altra realtà che supporti questo standard.


Su inDomus abbiamo dedicato una serie di schede di progetto, guide, news ed altro dedicate all’uso di ESPHome, dalla configurazione all’uso quotidiano nella propria domotica.

Contenuti inDomus sul firmware ESPHome
Guide
Progetti
FOCUS
Formazione

inDomus AWARD


Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.