ESPHome su Home Assistant

ESPHome su Home Assistant: guida completa per creare sensori smart personalizzati fai-da-te

ESPHome è uno degli strumenti più potenti e versatili per chi vuole portare la propria smart home a un livello superiore creando dispositivi personalizzati basati su microcontrollori ESP32 ed ESP8266. A differenza di altre soluzioni che richiedono competenze avanzate di programmazione, ESPHome utilizza file di configurazione YAML semplici e intuitivi, permettendo anche ai principianti di realizzare sensori, attuatori e dispositivi IoT completamente personalizzati.

L’integrazione nativa con Home Assistant rende ESPHome la scelta ideale per chi vuole dispositivi su misura senza dover gestire broker MQTT complessi o protocolli proprietari. In questa guida esploreremo tutte le modalità di installazione, dalla più semplice (add-on Home Assistant) alla più flessibile (CLI), fornendo esempi pratici di configurazione per sensori di temperatura, umidità, movimento e relè intelligenti.


Perché scegliere ESPHome per la tua smart home

Vantaggi principali:

  • Integrazione nativa con Home Assistant: i dispositivi vengono rilevati automaticamente senza configurazioni complesse

  • Configurazione YAML semplice: non serve conoscere C++ o altri linguaggi di programmazione complessi

  • Aggiornamenti OTA (Over-The-Air): una volta programmato via USB, puoi aggiornare il firmware via WiFi

  • Ampia compatibilità hardware: supporta centinaia di sensori, display, attuatori e componenti

  • Costo ridotto: un ESP8266 costa circa 2-3€, un ESP32 circa 5-7€

  • Community attiva: documentazione completa e forum di supporto sempre disponibili


Hardware necessario

Prima di iniziare, procurati:

Microcontrollori:

  • ESP32: consigliato per progetti avanzati (dual-core, Bluetooth, più GPIO, maggiore memoria)

  • ESP8266: perfetto per progetti semplici (sensori temperatura, relè singoli, prese smart)

Sensori comuni:

  • DHT11/DHT22 (temperatura e umidità economici)

  • BME280/BMP280 (temperatura, umidità e pressione atmosferica precisi)

  • PIR HC-SR501 (sensore movimento infrarossi)

  • BH1750 (sensore luminosità digitale)

  • DS18B20 (temperatura digitale waterproof)

Altri componenti:

  • Relè (1, 2 o 4 canali per automazioni)

  • LED RGB/RGBW per illuminazione personalizzata

  • Display OLED SSD1306 per visualizzazione dati

  • Pulsanti, switch e potenziometri

Accessori necessari:

  • Cavo USB per programmazione iniziale

  • Alimentatore 5V per ESP (almeno 1A)

  • Breadboard e cavi jumper per prototipazione


Metodo 1: Installazione via Add-on Home Assistant (consigliato per principianti)

Questo è il metodo più semplice e immediato per chi usa Home Assistant OS o Home Assistant Supervised.

Procedura dettagliata:

  1. Apri Home Assistant e vai su Impostazioni > Componenti aggiuntivi

  2. Clicca su STORE COMPONENTI AGGIUNTIVI in basso a destra

  3. Cerca “ESPHome” nella barra di ricerca

  4. Clicca sull’add-on ESPHome ufficiale

  5. Clicca su INSTALLA e attendi il completamento (può richiedere 5-10 minuti)

  6. Una volta installato, abilita le opzioni:

    • Avvia all’avvio (start on boot)

    • Watchdog (riavvio automatico in caso di crash)

    • Mostra nella barra laterale (per accesso rapido)

  7. Clicca su AVVIA per lanciare l’add-on

  8. Dopo qualche secondo, l’icona ESPHome comparirà nella barra laterale di Home Assistant

Vantaggi di questo metodo:

  • Nessuna configurazione di rete necessaria

  • Interfaccia web integrata direttamente in Home Assistant

  • Aggiornamenti automatici dell’add-on

  • Accesso da qualsiasi dispositivo connesso a Home Assistant


Metodo 2: Installazione via Dashboard ESPHome (per utenti intermedi)

Se usi Home Assistant Container o preferisci un’installazione separata, puoi usare ESPHome Dashboard come container Docker indipendente.

Procedura con Docker:

  1. Assicurati di avere Docker installato sul sistema

  2. Crea una directory per i file di configurazione ESPHome:

    mkdir ~/esphome
    cd ~/esphome
    
  3. Esegui il container ESPHome Dashboard:
    docker run --rm --net=host -v "${PWD}":/config -it ghcr.io/esphome/esphome
    
  4. Apri il browser e vai su http://IP_DEL_TUO_SERVER:6052

  5. La dashboard ESPHome sarà accessibile per creare e gestire dispositivi

Vantaggi:

  • Maggiore controllo e isolamento

  • Funziona su qualsiasi sistema con Docker

  • Ideale per installazioni Home Assistant Container


Metodo 3: Installazione via CLI (per utenti avanzati)

L’installazione tramite Command Line Interface offre massima flessibilità ed è ideale per chi preferisce lavorare da terminale.

Procedura su Linux/Mac:

  1. Installa Python 3 (se non già presente):

    python3 --version
    
  2. Installa ESPHome via pip:
    pip3 install esphome
  3. Verifica l’installazione:
    esphome version
  4. Crea una directory per i progetti:
    mkdir ~/esphome-configs
    cd ~/esphome-configs
    

Procedura su Windows:

  1. Installa Python 3 da python.org

  2. Apri il Prompt dei comandi o PowerShell

  3. Installa ESPHome:

    pip install esphome
  4. Verifica:
    esphome version

Vantaggi:

  • Controllo completo da terminale

  • Ideale per scripting e automazioni build

  • Nessun overhead di interfacce web

  • Perfetto per CI/CD pipelines


Creare il primo dispositivo ESPHome

Indipendentemente dal metodo di installazione scelto, la procedura per creare un dispositivo è simile.

Tramite Dashboard (Add-on o Docker):

  1. Clicca su + NUOVO DISPOSITIVO

  2. Scegli un nome (es: “sensore_temperatura_cucina”)

  3. Seleziona il tipo di scheda:

    • ESP32 (per dispositivi con chip ESP32)

    • ESP8266 (per NodeMCU, Wemos D1 Mini, ecc.)

  4. ESPHome genererà automaticamente un file di configurazione base

  5. Clicca su MODIFICA per personalizzare la configurazione

Tramite CLI:

esphome wizard sensore_temperatura_cucina.yaml

Segui le istruzioni guidate per:

  • Nome dispositivo

  • Tipo di scheda (ESP32/ESP8266)

  • Credenziali WiFi

  • Password OTA


Esempio di configurazione completa: sensore temperatura e umidità

Ecco un esempio pratico di configurazione YAML per un sensore DHT22 connesso a un ESP8266:

esphome:
  name: sensore_cucina
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "Nome_Rete_WiFi"
  password: "Password_WiFi"
  
  # IP statico opzionale (consigliato per stabilità)
  manual_ip:
    static_ip: 192.168.1.50
    gateway: 192.168.1.1
    subnet: 255.255.255.0

# Abilita logging via seriale
logger:

# Abilita API per Home Assistant
api:
  encryption:
    key: "chiave_generata_automaticamente"

# Abilita aggiornamenti OTA
ota:
  password: "password_sicura"

# Sensore DHT22 su pin D4
sensor:
  - platform: dht
    pin: D4
    temperature:
      name: "Temperatura Cucina"
      unit_of_measurement: "°C"
      accuracy_decimals: 1
    humidity:
      name: "Umidità Cucina"
      unit_of_measurement: "%"
      accuracy_decimals: 0
    update_interval: 60s
    model: DHT22

Caricare il firmware sul dispositivo

Prima programmazione (via USB):

  1. Collega l’ESP al computer via cavo USB

  2. Nella Dashboard ESPHome, clicca sui tre puntini del dispositivo

  3. Seleziona INSTALL > Plug into this computer

  4. Seleziona la porta seriale corretta (es: COM3 su Windows, /dev/ttyUSB0 su Linux)

  5. Attendi il completamento del caricamento (2-5 minuti)

Aggiornamenti successivi (via WiFi – OTA):

  1. Clicca su INSTALL > Wirelessly

  2. ESPHome compilerà il firmware e lo invierà via WiFi

  3. Il dispositivo si riavvierà automaticamente con il nuovo firmware

Troubleshooting comune:

  • Porta non rilevata: installa driver CH340 o CP2102 per la porta USB

  • Errore di connessione: premi il pulsante BOOT/FLASH sull’ESP durante la programmazione

  • WiFi non si connette: verifica SSID e password, controlla che la rete sia 2.4GHz


Integrazione automatica in Home Assistant

Una volta che il dispositivo ESP è connesso alla rete WiFi:

  1. Home Assistant rileverà automaticamente il nuovo dispositivo ESPHome

  2. Vai su Impostazioni > Dispositivi e servizi

  3. Clicca su CONFIGURA nella notifica ESPHome

  4. Inserisci la chiave API (se richiesta, la trovi nel file YAML)

  5. Tutte le entità (sensori, switch, ecc.) saranno disponibili immediatamente


Esempi di configurazioni avanzate

Sensore movimento PIR con automazione:

binary_sensor:
  - platform: gpio
    pin: D2
    name: "Movimento Ingresso"
    device_class: motion

Relè controllabile:

switch:
  - platform: gpio
    pin: D1
    name: "Luce Garage"
    id: relay_garage

Display OLED per visualizzazione dati:

i2c:
  sda: D2
  scl: D1

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    lambda: |-
      it.printf(0, 0, id(font), "Temp: %.1f°C", id(temperatura).state);
      it.printf(0, 20, id(font), "Umid: %.0f%%", id(umidita).state);

Consigli pratici e best practices

  • Usa IP statici per i dispositivi ESP per evitare problemi di riconnessione

  • Documenta i pin usati per ogni sensore per future modifiche

  • Testa su breadboard prima di saldare componenti

  • Usa alimentatori adeguati: ESP32 può richiedere fino a 500mA in picchi WiFi/Bluetooth

  • Backup delle configurazioni: i file YAML sono testuali, usa Git per versionarli

  • Monitora i log durante la fase di test per diagnosticare problemi

  • Aggiorna ESPHome regolarmente per nuove funzionalità e bugfix