Programmare ESP32 in C++ con l'IDE Arduino richiede saper gestire Wi-Fi, MQTT, JSON, OTA... ESPHome riduce tutto a un file YAML di 20 righe e si integra automaticamente con Home Assistant senza nemmeno passare per MQTT.
1. Installazione
Due opzioni:
- Add-on Home Assistant: Settings → Add-ons → ESPHome → Install → Start. Apre una web UI integrata.
- CLI Python:
pip install esphome— utile se non hai HA o se vuoi flashare via USB con un solo PC.
2. Primo dispositivo: sensore DHT22
Esempio: ESP32 + sensore di temperatura/umidità DHT22 collegato al pin GPIO4.
Crea un nuovo dispositivo nella web UI ESPHome, seleziona la board, e sostituisci il YAML con:
esphome:
name: salotto-temp
friendly_name: "Salotto"
esp32:
board: esp32dev
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
encryption:
key: !secret api_key
logger:
ota:
- platform: esphome
password: !secret ota_password
sensor:
- platform: dht
pin: GPIO4
model: DHT22
temperature:
name: "Temperatura salotto"
humidity:
name: "Umidità salotto"
update_interval: 30s
3. Secrets
Crea il file secrets.yaml con:
wifi_ssid: "CasaWifi"
wifi_password: "..."
api_key: ""
ota_password: "..."
4. Compilazione e flash
Dal web UI: Install → Plug into computer per il primo flash (USB), Wirelessly per quelli successivi (OTA). La compilazione richiede 1-3 minuti.
5. Auto-discovery in Home Assistant
Subito dopo il primo boot connesso al Wi-Fi, Home Assistant lo trova in Settings → Devices & Services come dispositivo da configurare. Un click e ti compaiono le entità sensor.temperatura_salotto e sensor.umidita_salotto.
6. Componenti utili
| Cosa | Tipo |
|---|---|
| Relè (luce/tapparella) | switch: + platform: gpio |
| Pulsante | binary_sensor: + platform: gpio |
| Sensori I2C (BME280, BH1750) | i2c: + sensor platform |
| Display OLED | display: + platform: ssd1306_i2c |
| Striscia LED WS2812B | light: + platform: esp32_rmt_led_strip |
| Sensore di movimento PIR | binary_sensor: + device_class: motion |
7. Aggiornamenti OTA wireless
Una volta installato, ogni successiva modifica al YAML viene compilata e caricata sul dispositivo via Wi-Fi. Niente più cavi USB.