ESPHome%20logo

Introduzione

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.

Cos'è ESPHome

ESPHome è un firmware personalizzato per microcontrollori come ESP8266 ed ESP32, ma supporta anche Raspberry Pi Pico.

  • E' completamente integrato con Home Assistant
  • Non necessita di saper programmare, poiché basato su una configurazione su file .yaml, sebbene si possono aggiungere righe di codice C++ all'interno di esso per aumentarne le potenzialità.
  • Aggiornabile tramite OTA

In pratica, invece di scrivere codice in C++ come con Arduino, descrivi cosa deve fare il dispositivo in modo dichiarativo:

  • Quali sensori sono collegati
  • Quali pin vengono utilizzati
  • Quali dati devono essere inviati ad Home Assistant
  • Quali azioni deve eseguire

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.

Perché ho scelto ESPHome invece di Arduino

All’inizio avevo valutato anche l’approccio classico con Arduino IDE.

Ma mi sono reso conto che:

  • Avrei dovuto gestire manualmente la comunicazione con Home Assistant
  • Scrivere più codice
  • Occuparmi di aggiornamenti firmware via USB

Con ESPHome invece:

  • L’integrazione è nativa
  • Gli aggiornamenti avvengono via rete WiFi (OTA)
  • Le entità vengono create automaticamente
  • Il sistema è pensato specificamente per Home Assistant

Questo riduce drasticamente la complessità e rende il progetto molto più pulito.

Come funziona in pratica

Il flusso è sorprendentemente semplice:

  1. Si crea un nuovo dispositivo dall’interfaccia di ESPHome
  2. Si configura il file .yaml con i componenti desiderati
  3. Si compila il firmware
  4. Si carica sul microcontrollore
  5. Il dispositivo appare automaticamente in Home Assistant

Da quel momento puoi usare le entità nelle dashboard e nelle automazioni come qualsiasi altro dispositivo commerciale.

La differenza è che lo hai costruito tu.

Dashboard

Ecco come si presenta la Dashboard di ESPHome

Dashboard

Nell'esempio sono già presenti alcuni dispositivi che tratterò nei prossimi articoli.

Un esempio pratico di configurazione

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.

Buone pratiche quando si crea un dispositivo ESPHome

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

secret.yaml

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_cucina
  • display_salone
  • contatore_energia

Nel tempo ti ringrazierai.

Conclusione

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.