Se hai gia usato ESPHome per flashare un ESP32 o un ESP8266, sai bene quanto sia potente questa piattaforma. Ma c’e una funzionalita che in molti sottovalutano: la possibilita di creare una comunicazione bidirezionale tra il dispositivo e Home Assistant usando le API native di ESPHome.
In questo articolo vediamo come funziona, come si configura e — soprattutto — come puoi sfruttarla nei tuoi progetti di domotica.
Cos’e la comunicazione bidirezionale in ESPHome
Quando parliamo di comunicazione bidirezionale con ESPHome, intendiamo la capacita del dispositivo di:
- Ricevere comandi da Home Assistant (o da altri sistemi esterni)
- Rispondere attivamente con dati, stati o feedback
Di default, ESPHome comunica con Home Assistant tramite l’API nativa (porta 6053), che e piu efficiente rispetto a MQTT per gli scenari tipici di uso domestico. Questa API consente non solo di esporre sensori e interruttori, ma anche di ricevere e rispondere a chiamate di servizio in modo strutturato.
Come funziona l’API nativa di ESPHome
L’API nativa di ESPHome e un protocollo binario basato su Protocol Buffers. Non e una REST API classica — ma ESPHome mette a disposizione anche un endpoint HTTP per chi preferisce un approccio piu standard.
Ci sono due modalita principali:
1. API nativa (porta 6053)
E quella attivata di default con:
api:
password: "la_tua_password"Home Assistant la usa automaticamente per il discovery e la comunicazione real-time con il dispositivo.
2. Web Server / REST API (porta 80)
ESPHome include un componente web_server che espone un’API HTTP RESTful. Puoi abilitarla cosi:
web_server:
port: 80Questo ti permette di interagire con il dispositivo tramite semplici richieste HTTP GET e POST — utile per integrazioni con n8n, script Python, o altri sistemi esterni a Home Assistant.
Comunicazione bidirezionale: un esempio pratico
Immagina di voler controllare un relay e ricevere la conferma dello stato aggiornato. Con il componente web_server attivo, puoi:
Leggere lo stato di un sensore:
GET http://192.168.1.100/sensor/temperatura
Risposta JSON:
{
"id": "sensor-temperatura",
"value": 23.4,
"state": "23.4 °C"
}
Attivare un relay:
POST http://192.168.1.100/switch/relay_cucina/turn_on
Risposta:
{
"id": "switch-relay_cucina",
"state": "ON",
"value": true
}
In questo modo il dispositivo non si limita a ricevere un comando, ma risponde con lo stato effettivo — chiudendo il ciclo della comunicazione bidirezionale.
Usare le User-Defined Services per risposte personalizzate
ESPHome permette di definire servizi personalizzati che possono essere chiamati da Home Assistant come se fossero normali servizi HA. Questo e uno degli strumenti piu potenti per la comunicazione bidirezionale avanzata.
api:
services:
- service: imposta_luminosita
variables:
luminosita: int
then:
- light.turn_on:
id: luce_soggiorno
brightness: !lambda "return luminosita / 100.0;"Da Home Assistant puoi chiamare questo servizio con:
service: esphome.nome_dispositivo_imposta_luminosita
data:
luminosita: 75Il dispositivo esegue l’azione e aggiorna automaticamente lo stato nell’interfaccia di HA — bidirezionalita completa, senza polling.
Integrazione con sistemi esterni: n8n e REST
Se hai gia letto il nostro articolo sull’integrazione tra n8n e Home Assistant, sai quanto sia utile poter automatizzare flussi complessi. Le API HTTP di ESPHome si integrano perfettamente con n8n tramite il nodo HTTP Request:
- URL:
http://IP_DISPOSITIVO/switch/nome_switch/toggle - Metodo: POST
- Risposta: JSON con lo stato aggiornato
Questo apre scenari interessanti: puoi creare automazioni che leggono uno stato da ESPHome, lo elaborano in n8n, e poi inviano un comando di ritorno — tutto in modo asincrono e senza bisogno di scrivere codice su HA.
Sicurezza: autenticazione sulle API
Se esponi le API di ESPHome sulla rete locale (o peggio, verso l’esterno), e fondamentale proteggere gli endpoint. Con il componente web_server puoi abilitare l’autenticazione di base:
web_server:
port: 80
auth:
username: admin
password: "password_sicura"Per l’API nativa, invece, usa sempre una password robusta e considera l’uso di un certificato SSL se accedi da fuori rete.
Quando usare l’API nativa e quando la REST API
| Scenario | API consigliata |
|---|---|
| Integrazione con Home Assistant | API nativa (porta 6053) |
| Controllo da script Python / n8n | REST API (web_server) |
| Dashboard personalizzata esterna | REST API |
| Automazioni HA con feedback real-time | API nativa + User Services |
| Debug rapido da browser | REST API |
Conclusione
Le ESPHome API Responses sono uno strumento potente e spesso sottoutilizzato. Con poche righe di YAML puoi trasformare un semplice ESP32 in un nodo intelligente capace di comunicare attivamente con il tuo ecosistema domotico — non solo ricevendo comandi, ma anche rispondendo con dati precisi e in tempo reale.
Che tu voglia integrare n8n, costruire una dashboard esterna, o semplicemente avere piu controllo sui tuoi dispositivi, la comunicazione bidirezionale con ESPHome e la strada giusta.