Ir al contenido

Home Assistant y ESP32 PLC con ESPHome por Ethernet

Conecta un ESP32 PLC a Home Assistant por Ethernet con ESPHome: pines del W5500, YAML, primera grabación y mapa de E/S
5 de julio de 2024 por
Home Assistant y ESP32 PLC con ESPHome por Ethernet
Boot & Work Corp. S.L, Francesc Nosàs Moliner

Para conectar un ESP32 PLC a Home Assistant, instala la app ESPHome Device Builder en Home Assistant, crea un dispositivo para el PLC y sustituye la sección WiFi de su archivo YAML por un bloque ethernet: para el chip W5500 del PLC (SPI en GPIO18, GPIO23 y GPIO19, chip select en GPIO15). Grábalo una vez por USB y Home Assistant encuentra el PLC en la red con la integración ESPHome.

Home Assistant es una plataforma de automatización de código abierto con panel web, automatizaciones e histórico para muchos dispositivos. ESPHome convierte un ESP32 en un dispositivo de Home Assistant que se configura con un archivo YAML en lugar de escribir código. Un ESP32 PLC tiene un ESP32 y un puerto Ethernet, así que puede ejecutar ESPHome y comunicarse con Home Assistant por cable, que es más estable que el WiFi dentro de un armario eléctrico.

Esta guía se ha revisado con ESPHome 2026.10 y Home Assistant 2026. Las capturas son de 2024 (ESPHome 2024.3): algunos nombres han cambiado desde entonces, y el texto da los actuales.

¿Cómo se conecta un ESP32 PLC a Home Assistant?

ESPHome compila un firmware a partir de tu archivo YAML y lo graba en el ESP32 del PLC. A partir de ahí, el PLC ejecuta la API nativa de ESPHome en el puerto TCP 6053, y la integración ESPHome de Home Assistant se conecta a ella, lee los sensores y envía órdenes. El firmware de ESPHome sustituye cualquier sketch de Arduino que hubiera en el PLC.

  1. Paso 1Device BuilderInstala la app ESPHome Device Builder en Home Assistant
  2. Paso 2YAMLCrea el dispositivo y configura Ethernet para el chip W5500
  3. Paso 3Primera grabaciónPor USB una vez, después actualizaciones por Ethernet
  4. Paso 4Home AssistantAñade el PLC con la integración ESPHome

Qué necesitas

  • Un servidor Home Assistant con apps, es decir, Home Assistant OS. Para un servidor nuevo, consulta la guía de instalación de Home Assistant. El panel está en http://homeassistant.local:8123 por defecto.
  • Un ESP32 PLC con Ethernet, alimentado entre 12 y 24 Vdc, y un cable Ethernet a la misma red que Home Assistant.
  • Un cable USB para la primera grabación, y Chrome, Edge o un Firefox reciente si grabas desde el navegador.

Instalar ESPHome Device Builder en Home Assistant

Desde Home Assistant 2026.2, los complementos (add-ons) se llaman apps. Ve a Settings > Apps > Install app, abre ESPHome Device Builder, haz clic en Install, después en Start y en Open Web UI. En la captura de 2024, la misma app aún es el "complemento ESPHome".

Página del complemento ESPHome en Home Assistant 2024, con el botón Install, ahora llamado app ESPHome Device Builder

Crear el dispositivo ESP32 PLC en ESPHome

La primera vez, el panel de Device Builder está vacío. Crea un dispositivo nuevo, ponle un nombre (por ejemplo, el modelo del PLC) y elige ESP32 como placa. El asistente escribe un primer archivo YAML con la configuración WiFi, una clave de cifrado de la API y una contraseña OTA. Guarda la clave y la contraseña: necesitarás la clave en Home Assistant.

Panel de ESPHome vacío con el botón New device
Diálogo Create configuration de ESPHome con el nombre de dispositivo 14IOs

El dispositivo nuevo aparece en el panel como fuera de línea hasta que lo grabes.

Nuevo dispositivo 14IOs en el panel de ESPHome, fuera de línea antes de la primera instalación

Configuración Ethernet para el W5500 del ESP32 PLC

El YAML por defecto conecta la placa a WiFi. En un PLC, usa el puerto Ethernet: haz clic en Edit, borra las secciones wifi: y captive_portal: y añade el bloque ethernet:. Los ESP32 PLC usan un chip Ethernet W5500 en el bus SPI. Los pines SPI son los mismos en todos los modelos, y el pin chip select depende de la familia (fuente: los archivos de variante del paquete de placas ESP32 de Industrial Shields).

PLCclk_pinmosi_pinmiso_pincs_pin
Familia ESP32 PLC (19R a 58)GPIO18GPIO23GPIO19GPIO15
ESP32 PLC 14GPIO18GPIO23GPIO19GPIO14

Este es un archivo YAML completo para un PLC de la familia ESP32 PLC. Mantén la clave de api y la contraseña de ota que ha generado el asistente, y cambia cs_pin para el ESP32 PLC 14.

esphome:
  name: esp32-plc-21

esp32:
  board: esp32dev
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: "KEY_GENERATED_BY_THE_WIZARD"

ota:
  - platform: esphome
    password: "PASSWORD_GENERATED_BY_THE_WIZARD"

ethernet:
  type: W5500
  clk_pin: GPIO18
  mosi_pin: GPIO23
  miso_pin: GPIO19
  cs_pin: GPIO15   # ESP32 PLC family. GPIO14 on the ESP32 PLC 14
  # Optional static IP. Delete manual_ip to use DHCP.
  manual_ip:
    static_ip: 10.10.10.20
    gateway: 10.10.10.1
    subnet: 255.255.255.0

sensor:
  - platform: uptime
    name: "Uptime"

text_sensor:
  - platform: ethernet_info
    ip_address:
      name: "IP address"

El archivo pasa esphome config con ESPHome 2026.10.0. El sensor de tiempo de funcionamiento y la dirección IP están ahí solo para ver el PLC en Home Assistant desde el primer minuto.

Mantén el framework ESP-IDF. ESP-IDF es el framework por defecto del ESP32 desde ESPHome 2026.1. Sin interrupt_pin, ESPHome lee el W5500 en modo de sondeo SPI (cada 10 ms por defecto), que necesita ESP-IDF 5.1.4 o posterior.

El aviso de GPIO15. ESPHome avisa de que GPIO15 es un pin de arranque (strapping pin). En la familia ESP32 PLC es el chip select del W5500, como en el paquete de placas, así que el aviso es normal.

WiFi y Ethernet a la vez. Las versiones antiguas de ESPHome no podían usar los dos. Las actuales sí pueden en el ESP32, con una lista de prioridad de red. Para un PLC en un armario, solo Ethernet es más sencillo. Sin manual_ip, el PLC toma una dirección por DHCP.

Primera grabación por USB y después actualizaciones por Ethernet

Guarda el archivo y haz clic en Install. La primera instalación tiene que ser por USB, porque el PLC aún no ejecuta ESPHome. Las opciones son:

  • USB al ordenador del navegador. El navegador graba el PLC con Web Serial, que funciona en Chrome, Edge y Firefox reciente y necesita HTTPS. Si abres el panel por HTTP, ESPHome te envía a su grabador web. La grabación en sí es local, por USB.
  • USB al servidor de Home Assistant. Útil cuando el PLC está junto al servidor.
  • Descarga manual. Descarga el archivo .bin compilado y grábalo con ESPHome Web (haz clic en Connect, elige el puerto serie e instala el archivo) o con esptool.
  • Por la red (OTA). Para todos los cambios posteriores, cuando el PLC ya ejecuta ESPHome por Ethernet.

Los nombres de estas opciones han cambiado en las versiones recientes. El diálogo de 2024 muestra los mismos cuatro caminos.

Opciones de instalación de ESPHome: inalámbrica, conectar a este ordenador, conectar al ordenador del panel de ESPHome y descarga manual
Página de ESPHome Web con el botón Connect para grabar un ESP32 por USB desde el navegador

Añadir el PLC a Home Assistant con la integración ESPHome

  1. Cuando el PLC está en la red, Home Assistant lo descubre por mDNS y muestra una notificación. Haz clic en Configure.
  2. Si el mDNS no llega al PLC (otra VLAN, IP fija), ve a Settings > Devices & services > Add integration > ESPHome e introduce la dirección IP del PLC, por ejemplo 10.10.10.20, y el puerto 6053.
  3. Pega la clave de cifrado de la API del archivo YAML cuando Home Assistant la pida.
  4. Abre la página del dispositivo: el tiempo de funcionamiento y la dirección IP del PLC aparecen como entidades.

Dónde están las E/S del ESP32 PLC para ESPHome

Con ESPHome, las librerías Arduino de Industrial Shields no están en el PLC, así que a las E/S se llega chip por chip. En la familia ESP32 PLC, la mayoría de entradas y salidas están en expansores I2C. Este mapa sale del paquete de placas de los ESP32 PLC 21, 42, 58 y 38AR:

E/S del PLCChipDirección o pinComponente ESPHome
Bus I2CESP32SDA GPIO21, SCL GPIO22i2c
I0.0 a I0.4 (entradas digitales)MCP230080x21mcp23008
I0.5 e I0.6 (entradas de interrupción)ESP32GPIO27 y GPIO26binary sensor gpio
I0.7 a I0.12 (entradas analógicas o digitales)ADS10150x48 y 0x49ads1115 con resolución de 12 bits
Q0.0 a Q0.7 (salidas, A0.5 a A0.7 analógicas)PCA96850x40pca9685

Los modelos de relés (19R, 38R, 57R) y el ESP32 PLC 14 usan otros pines. Antes de mapear una entrada o una salida, comprueba el rango de tensión de entrada y el tipo de salida en el datasheet de tu modelo, y prueba cada canal con Home Assistant antes de conectar una carga.

Home Assistant y un PLC: supervisión, no el lazo de control

Home Assistant va bien para paneles, histórico, notificaciones y automatización de edificios: luces, zonas de climatización, contadores, alarmas. Deja en el PLC la lógica que debe funcionar sin red. Las automatizaciones de ESPHome se ejecutan en el dispositivo, así que un enclavamiento o un temporizador siguen funcionando si Home Assistant se reinicia. Para un SCADA u otro PLC, Modbus TCP o MQTT sobre TLS son las opciones habituales, y el ESP32 PLC admite las dos con las librerías Arduino.

Mira datos remotos de PLC en un panel. El simulador de telemetría de instalaciones remotas reproduce un día de una red de agua con estaciones de bombeo, depósitos y alarmas de fuga. En el caso del pozo de petróleo, un ESP32 PLC lee presión, temperatura y caudal y los envía por 4G.

Abrir el simulador de telemetríaLeer el caso del pozo de petróleo

Preguntas frecuentes sobre Home Assistant y el ESP32 PLC

¿Puede un ESP32 PLC ejecutar ESPHome?

Sí. Tiene un ESP32 y un chip Ethernet W5500, y ESPHome admite los dos. Usa board: esp32dev, el framework ESP-IDF y los pines Ethernet de tu modelo.

¿ESPHome admite Ethernet con el chip W5500?

Sí, con type: W5500 en la sección ethernet:, los tres pines SPI y el pin chip select. El pin de interrupción es opcional con ESP-IDF 5.1.4 o posterior.

¿Puedo mantener mi programa Arduino y usar Home Assistant?

No con ESPHome, porque su firmware sustituye el sketch. Para mantener el programa Arduino, publica los datos por MQTT y usa la integración MQTT de Home Assistant.

¿Por qué Home Assistant no encuentra el PLC?

Revisa el cable y el LED de enlace, el cs_pin de tu modelo y la IP fija. Si el PLC está en otra VLAN, el mDNS no pasa: añádelo por dirección IP con la integración ESPHome.

¿Cómo actualizo el PLC después de la primera grabación?

Edita el YAML en Device Builder y haz clic en Install por la red. La actualización OTA va por Ethernet con la contraseña de la sección ota.

Buscar en nuestro blog

Home Assistant y ESP32 PLC con ESPHome por Ethernet
Boot & Work Corp. S.L, Francesc Nosàs Moliner 5 de julio de 2024
Compartir esta publicación
Etiquetas

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.

Comparativa de PLCs