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.
- Paso 1Device BuilderInstala la app ESPHome Device Builder en Home Assistant
- Paso 2YAMLCrea el dispositivo y configura Ethernet para el chip W5500
- Paso 3Primera grabaciónPor USB una vez, después actualizaciones por Ethernet
- 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:8123por 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".

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.


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

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).
| PLC | clk_pin | mosi_pin | miso_pin | cs_pin |
|---|---|---|---|---|
| Familia ESP32 PLC (19R a 58) | GPIO18 | GPIO23 | GPIO19 | GPIO15 |
| ESP32 PLC 14 | GPIO18 | GPIO23 | GPIO19 | GPIO14 |
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
.bincompilado 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.


Añadir el PLC a Home Assistant con la integración ESPHome
- Cuando el PLC está en la red, Home Assistant lo descubre por mDNS y muestra una notificación. Haz clic en Configure.
- 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. - Pega la clave de cifrado de la API del archivo YAML cuando Home Assistant la pida.
- 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 PLC | Chip | Dirección o pin | Componente ESPHome |
|---|---|---|---|
| Bus I2C | ESP32 | SDA GPIO21, SCL GPIO22 | i2c |
| I0.0 a I0.4 (entradas digitales) | MCP23008 | 0x21 | mcp23008 |
| I0.5 e I0.6 (entradas de interrupción) | ESP32 | GPIO27 y GPIO26 | binary sensor gpio |
| I0.7 a I0.12 (entradas analógicas o digitales) | ADS1015 | 0x48 y 0x49 | ads1115 con resolución de 12 bits |
| Q0.0 a Q0.7 (salidas, A0.5 a A0.7 analógicas) | PCA9685 | 0x40 | pca9685 |
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.
Más sobre el ESP32 PLC en red
- Conexión Ethernet con un ESP32 PLC o un PLC M-Duino
- MQTT sobre TLS en un ESP32 PLC
- Guía de WiFi, Bluetooth y BLE del ESP32 PLC
- Retrofit de un PLC antiguo para IIoT con un ESP32 PLC o GateBerry
- Cómo elegir un controlador industrial
Elige el modelo y la combinación de E/S en la familia ESP32 PLC.