Nell’articolo precedente abbiamo visto cos’è Home Assistant e come può gestire una casa intelligente.
Ma a un certo punto mi sono fatto una domanda:
e se volessi creare un dispositivo completamente mio? Non una presa smart comprata online, ma qualcosa di progettato su misura per le mie esigenze.
È qui che entra in gioco ESPHome.
Con ESPHome puoi trasformare un semplice microcontrollore come un ESP32 in un dispositivo perfettamente integrato con Home Assistant, senza dover scrivere firmware complessi o programmare tutto da zero.
ESPHome è un firmware personalizzato per microcontrollori come ESP8266 ed ESP32, ma supporta anche Raspberry Pi Pico.
.yaml, sebbene si possono aggiungere righe di codice C++ all'interno di esso per aumentarne le potenzialità.In pratica, invece di scrivere codice in C++ come con Arduino, descrivi cosa deve fare il dispositivo in modo dichiarativo:
Il sistema si occupa di generare automaticamente il firmware e renderlo compatibile con Home Assistant.
Una volta collegato alla rete, il dispositivo viene rilevato automaticamente e le entità vengono create senza configurazioni manuali complesse.
All’inizio avevo valutato anche l’approccio classico con Arduino IDE.
Ma mi sono reso conto che:
Con ESPHome invece:
Questo riduce drasticamente la complessità e rende il progetto molto più pulito.
Il flusso è sorprendentemente semplice:
.yaml con i componenti desideratiDa quel momento puoi usare le entità nelle dashboard e nelle automazioni come qualsiasi altro dispositivo commerciale.
La differenza è che lo hai costruito tu.
Ecco come si presenta la Dashboard di ESPHome
Nell'esempio sono già presenti alcuni dispositivi che tratterò nei prossimi articoli.
esphome:
name: "sensore"
area: Home
esp32:
board: esp32dev
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
enable_btm: True
enable_rrm: True
api:
encryption:
key: !secret api_key
ota:
esphome
In questa sezione puoi inserire il nome che preferisci assegnare al dispositivo, e l'area nel quale verrà usato se lo desiderate, ad esempio Cucina
esp32
In questa sezione si configura il tipo di microcontrollore che avete, in questo caso ESP32, ma esistono altre varianti, come ESP32-C3 e altre, e il framework, cioè la piattaforma usata come base per compilare il firmware, si può usare arduino e esp-idf
Personalmente preferisco esp-idf perché è il framework ufficiale di Espressif, più moderno e meglio ottimizzato rispetto ad arduino.
In progetti semplici anche arduino funziona perfettamente, ma se si vuole maggiore stabilità nel tempo, esp-idf è una scelta solida.
wifi
In questa sezione possiamo configurare il nome e la password della rete WiFi al quale l'ESP32 si collegherà, per questione di privacy e per evitare ogni volta se avete più dispositivi di riscriverli, questi dati vengono scritti un file a parte denominato secrets.yaml
Se avete una rete WiFi con più Access Point o ripetitori, consiglio di inserire le righe enable_btm: True e enable_rrm: True, questo abiliterà il supporto al roaming, utile specialmente se il vostro dispositivo sarà alimentato a batteria e viene spostato da una stanza all'altra della casa, in modo da avere sempre il segnale migliore possibile.
Non tutti gli access point supportano BTM e RRM, quindi è sempre bene verificare che siano abilitati nel proprio router o sistema mesh.
api
Questa sezione è fondamentale per la comunicazione con Home Assistant.
Permette l’integrazione nativa e la creazione automatica delle entità.
Senza api il dispositivo non potrà essere rilevato automaticamente.
ota
Questa riga abilita il supporto a gli aggiornamenti OTA, in modo che dopo la prima installazione via USB, i successivi aggiornamenti possono essere effettuati direttamente da Home Assistant senza collegare alcun cavo al PC.
Quando si inizia con ESPHome è facile concentrarsi solo sul “farlo funzionare”.
Con il tempo però ho capito che organizzare bene il file YAML fin dall’inizio evita molti problemi in futuro.
Ecco alcune buone pratiche che consiglio:
1. Usare sempre secrets.yaml
Separare credenziali WiFi e chiavi API dal file principale rende il progetto più pulito e riutilizzabile.
Se un giorno decidi di condividere la configurazione, non rischi di esporre dati sensibili.
ESPHome mette a disposizione un pulsante nella Dashboard che permette velocemente di accedere al file

Al suo interno se non ci sono già, dobbiamo scrivere quanto segue:
# Your Wi-Fi SSID and password
wifi_ssid: "Il nome della tua rete wifi"
wifi_password: "La password della tua rete wifi"
2. Abilitare sempre OTA
Dopo il primo caricamento via USB, aggiornare il firmware via rete è una comodità enorme.
Senza OTA ogni modifica richiederebbe di aprire il dispositivo e collegarlo fisicamente al PC.
Di default dovrebbe essere già attivo
3. Tenere attivo il logger durante i test
Il logger permette di vedere cosa sta facendo realmente il dispositivo.
Molti problemi di connessione o inizializzazione dei sensori si risolvono semplicemente leggendo i log.
Per abilitarlo, nel caso non fosse presente di default, inseriamo questa riga nel file .yaml
logger:
**4. Dare nomi coerenti ai dispositivi
Evita nomi generici come test o prova.
Usa nomi che descrivano funzione e posizione, ad esempio:
sensore_cucinadisplay_salonecontatore_energiaNel tempo ti ringrazierai.
ESPHome non è semplicemente un modo diverso di programmare un microcontrollore.
È un modo diverso di progettare dispositivi per la propria casa.
Permette di concentrarsi sulla funzione, non sull’infrastruttura.
Riduce la complessità senza sacrificare flessibilità.
Per chi usa Home Assistant e vuole andare oltre i dispositivi commerciali, è uno strumento estremamente potente.
Nel prossimo articolo vedremo un caso reale: la progettazione di un dispositivo basato su display E-Ink completamente integrato con Home Assistant.