ESPHome: Crea tus sensores/actuadores con ESP32 o ESP8266 e intégralo en Home Assistant sin programar

esp32
esp8266
esp

#1

La familia de ESPs es altamente conocida en el mundo maker, ya que nos ofrece un sistema barato y sencillo con el cual crear «cacharros» con wifi haciendo uso de la plataforma arduino y su gran colección de bibliotecas para distintos sensores.

El problema es que no todo el mundo sabe/quiere programar, pero sí le gustaría crearse un dispositivo inicialmente sencillo, como un sensor de temperatura, pero que acaba complicándose cuando tenemos que añadir conexión con wifi, entrar en suspensión, conectarse por mqtt, verificar el estado de la conexión, descargar bibliotecas, añadir soporte OTA…

Por eso nace ESPHome.

Esta… ¿Biblioteca? ¿Compilador? ¿Conversor? Bueno, digamos «herramienta», nos permite diseñar que hará nuestro ESP con solo escribir un simple yaml, el cual él posteriormente convertirá a C++ e instalará en nuestro dispositivo.

Un ejemplo sencillo:

esphome:
  name: temperatura
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: WIFI
  password: CONTRASEÑA

logger:
  level: DEBUG

ota:

api:
  password: CONTRASEÑA

sensor:
  - platform: dht
    pin: D2
    temperature:
      name: "Temperatura"
    humidity:
      name: "Humedad"
    update_interval: 60s

Ale, con ese código (el cual salvo el bloque de sensor se genera a partir de un asistente) esphome instalará en nuestro ESP todo lo necesario para obtener:

  • Conexión verificada al wifi
  • Acceso mediante su API
  • Configuración del DHT
  • Comprobación del sensor cada minuto
  • Acceso a la informacción del logger de forma remota.
  • Actualización por OTA
  • Integración directa en Home Assistant (reconocerá los sensores e integrará junto al resto)

Y, para rizar más el rizo, tenemos un docker que nos monta un dashboard para no tener ni que instalar nada. El se ocupará de instalar el platformio y crearnos un acceso a cada uno de nuestros dispositivos para acceder a él de forma remota, usar un pequeño editor web que nos valida en tiempo real nuesto yalm, viendo sus trazas del logger o mandando una actualización por OTA:

Por supuesto, este docker también está disponible como addon para Hassio, lo que permite tener en tu sistema raspberry todo lo necesario para gestionarlo, sin tener que instalar nada extra. Bastará con conectar una vez el ESP para que instale la primera versión y después lo podremos hacer todo de forma remota.

Y para los más aventureros, ESPHome dispone de «customs components», dónde podremos escribir el código C++ que necesitemos para nuestro propio dispositivo si este no está soportado, pero aprovechando el resto del sistema, así, porque un sensor tuyo no esté soportado no te obligará a renunciar a ESPHome, solo tienes que hacerte el código para dicho sensor e integrar el resto.

Incluso existe la posibilidad en muchos casos de escribir código C++ directamente en el yalm en los llamados lambda, muy útil para cuando son fragmentos de código muy pequeños y sencillos.

Yo este fin de semana he creado un componente usando el componente base Climate para poder controlar mi aire acondicionado Haier (en unos días subiré el código). Solo he tenido que lidiar con con la conexión con el Haier, olvidándome de la conexión con Home Assistant, la actualizaciones por OTA o reconectar el wifi en caso de desconexión.