Inicio/Monitores de Energía/Monitorización de Consumo Eléctrico con ESPHome: Proyecto DIY sin Nube para tu Hogar
Monitores de Energía

Monitorización de Consumo Eléctrico con ESPHome: Proyecto DIY sin Nube para tu Hogar

Alex R.Escrito por: Alex R.
Fecha: 30 Jun 2026
Lectura de 10 min
Monitorización de Consumo Eléctrico con ESPHome: Proyecto DIY sin Nube para tu Hogar

La monitorización del consumo eléctrico se ha convertido en una necesidad para hogares inteligentes que buscan eficiencia y ahorro. Sin embargo, la mayoría de las soluciones comerciales dependen de servicios en la nube, lo que implica riesgos de privacidad y dependencia de terceros. Este artículo te guía en la creación de un medidor de consumo eléctrico DIY utilizando ESPHome, un framework de código abierto que permite integrar sensores con Home Assistant y otros sistemas de automatización, manteniendo todos los datos en tu red local.

¿Qué es ESPHome y por qué usarlo para monitorizar el consumo eléctrico?

ESPHome es un framework que permite configurar microcontroladores ESP8266 y ESP32 mediante archivos YAML, generando firmware personalizado que se comunica directamente con Home Assistant a través de la API nativa. A diferencia de otras plataformas como Tasmota o Arduino puro, ESPHome ofrece una integración perfecta con Home Assistant, actualizaciones OTA (Over-The-Air) y una amplia biblioteca de componentes ya preparados. Para la monitorización eléctrica, ESPHome soporta sensores como el PZEM-004T, el SCT-013 (transformador de corriente) y el HLW8012, entre otros. La principal ventaja es que todo el procesamiento y almacenamiento de datos se realiza localmente, sin enviar información a servidores externos, garantizando la privacidad y la disponibilidad incluso sin conexión a internet.

Además, ESPHome permite personalizar la frecuencia de muestreo, aplicar filtros, calcular potencias acumuladas y enviar datos a sistemas de logging o bases de datos locales como InfluxDB. Esto lo convierte en una solución ideal para usuarios avanzados que desean un control total sobre su infraestructura de monitorización. En este proyecto utilizaremos el sensor PZEM-004T, que mide tensión, corriente, potencia activa, energía acumulada, frecuencia y factor de potencia, comunicándose mediante el protocolo Modbus RTU sobre RS485. Este sensor es económico, preciso y fácil de integrar con un ESP32.

Componentes necesarios para el proyecto

Para construir tu medidor de consumo eléctrico con ESPHome necesitarás los siguientes componentes. La lista está pensada para un montaje seguro y fiable, cumpliendo con las normativas básicas de baja tensión.

  • ESP32 (o ESP8266): Microcontrolador con conectividad Wi-Fi. Recomendamos ESP32 por su mayor memoria y capacidad de procesamiento. Modelos como el ESP32 DevKitC o NodeMCU-32S son ideales.
  • Sensor PZEM-004T V3.0: Módulo de medición de energía eléctrica con comunicación Modbus. Soporta hasta 100A (con transformador de corriente externo) y 230V AC. Incluye transformador de corriente de 100A y cable de comunicación.
  • Convertidor RS485 a UART (MAX485): Módulo para adaptar la señal RS485 del PZEM-004T a niveles lógicos TTL del ESP32. Necesitarás un módulo MAX485 o similar.
  • Fuente de alimentación 5V: Para alimentar el ESP32 y el módulo MAX485. Puedes usar un cargador USB o una fuente regulada.
  • Cables y protoboard: Para realizar las conexiones de prueba. Para instalación definitiva, se recomienda soldar o usar bornes.
AtenciónTrabajar con corriente eléctrica de red (220V AC) puede ser peligroso. Si no tienes experiencia en electricidad, contrata a un profesional. El transformador de corriente del PZEM-004T debe instalarse alrededor de uno de los conductores de fase, nunca alrededor del neutro. Asegúrate de que el circuito esté desconectado antes de realizar cualquier conexión.

Conexionado del hardware

El esquema de conexión es relativamente sencillo. El PZEM-004T se comunica mediante RS485, por lo que necesitamos un convertidor a UART. Sigue estos pasos:

  1. 1
    Conexión del PZEM-004T al convertidor MAX485: Conecta el pin A (RS485 A) del PZEM al pin A del MAX485, y el pin B al pin B. Alimenta el MAX485 con 5V y GND desde el ESP32 o una fuente externa.
  2. 2
    Conexión del MAX485 al ESP32: Conecta el pin RO (Receiver Output) del MAX485 al pin RX del ESP32 (GPIO16 por ejemplo). Conecta el pin DI (Driver Input) al pin TX del ESP32 (GPIO17). Conecta RE y DE juntos a un GPIO del ESP32 (GPIO4) para control de dirección.
  3. 3
    Alimentación: Alimenta el ESP32 y el MAX485 con 5V. El PZEM-004T se alimenta directamente de la red eléctrica (fase y neutro) a través de sus bornes de entrada. No necesita alimentación externa.
  4. 4
    Instalación del transformador de corriente: Pasa el cable de fase (L) que quieres monitorizar a través del agujero del transformador de corriente. Asegúrate de que la flecha del transformador apunte hacia la carga (dirección del flujo de corriente). Conecta el conector del transformador al PZEM-004T.

Una vez conectado todo, verifica las conexiones antes de energizar. El PZEM-004T debe conectarse en paralelo a la red: sus bornes de entrada (fase y neutro) se conectan a la red, y los bornes de salida (carga) se conectan a la carga que deseas medir. El transformador de corriente se coloca en el conductor de fase de la carga.

Configuración de ESPHome

Una vez montado el hardware, procedemos a configurar ESPHome. Si aún no tienes ESPHome instalado, puedes hacerlo mediante el add-on de Home Assistant o de forma independiente con Python. Creamos un nuevo dispositivo y editamos su configuración YAML.

El siguiente fragmento YAML configura la comunicación UART con el MAX485 y el sensor PZEM-004T. Ajusta los pines según tu conexión:

uart:
  id: uart_bus
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600
  stop_bits: 1

modbus:
  id: modbus1
  uart_id: uart_bus

sensor:
  - platform: pzemac
    modbus_id: modbus1
    address: 1
    voltage:
      name: "Tensión"
      unit_of_measurement: "V"
      accuracy_decimals: 1
    current:
      name: "Corriente"
      unit_of_measurement: "A"
      accuracy_decimals: 2
    power:
      name: "Potencia Activa"
      unit_of_measurement: "W"
      accuracy_decimals: 0
      id: power
    energy:
      name: "Energía Total"
      unit_of_measurement: "kWh"
      accuracy_decimals: 2
    frequency:
      name: "Frecuencia"
      unit_of_measurement: "Hz"
      accuracy_decimals: 1
    power_factor:
      name: "Factor de Potencia"
      accuracy_decimals: 2

Además, para el control de dirección del MAX485, necesitas configurar un switch en el YAML que active los pines RE y DE. Añade lo siguiente:

switch:
  - platform: gpio
    pin: GPIO4
    id: rs485_direction
    name: "Dirección RS485"
    restore_mode: ALWAYS_ON

Luego, en la sección `on_boot` del ESPHome, puedes activar el switch para poner el MAX485 en modo transmisión/recepción. Sin embargo, la mayoría de las implementaciones de Modbus en ESPHome ya manejan el control de dirección automáticamente si configuras el pin de control. Para simplificar, puedes omitir el switch y conectar RE y DE directamente a 3.3V (modo siempre receptor) y usar solo el pin DI para transmisión. Pero para un funcionamiento robusto, es mejor usar el control de dirección. Consulta la documentación de ESPHome para más detalles.

Integración con Home Assistant y visualización

Una vez que el firmware se ha compilado y subido al ESP32 (ya sea por USB o OTA), el dispositivo aparecerá automáticamente en Home Assistant si tienes la integración ESPHome configurada. Podrás ver todas las entidades: tensión, corriente, potencia, energía, frecuencia y factor de potencia. Puedes agregar estas entidades al panel de energía de Home Assistant para obtener un desglose detallado del consumo.

Además, puedes crear automatizaciones: por ejemplo, enviar una notificación si la potencia supera un umbral, o registrar los datos en una base de datos local como InfluxDB para análisis histórico. La energía acumulada se puede resetear mediante un servicio de ESPHome si es necesario.

Comparativa: PZEM-004T vs SCT-013 vs HLW8012

Existen varias alternativas para medir consumo eléctrico con ESPHome. A continuación, una tabla comparativa con los sensores más populares:

CaracterísticaPZEM-004TSCT-013HLW8012
Medición de tensiónNoNo
Medición de corriente
Potencia activaRequiere cálculo
Energía acumuladaNo
Factor de potenciaNoNo
ComunicaciónRS485 (Modbus)AnalógicaPulsos / UART
Precio aproximado15-20 €8-12 €5-10 €

El PZEM-004T es la opción más completa para una monitorización precisa, ya que mide tensión y factor de potencia, algo que los otros no hacen. El SCT-013 es más barato pero requiere un circuito adicional para medir tensión y calcular potencia. El HLW8012 es usado en muchos enchufes inteligentes, pero su precisión es limitada y no mide factor de potencia. Para un proyecto DIY sin nube, el PZEM-004T es la mejor elección.

Errores comunes y solución de problemas

Durante la puesta en marcha pueden surgir varios problemas. Aquí los más frecuentes:

  • No se reciben datos del sensor: Verifica la conexión de los cables RS485 (A y B) y que el MAX485 esté correctamente alimentado. Comprueba que los pines TX/RX del ESP32 estén bien configurados y que la velocidad de baudios coincida (9600).
  • Lecturas erráticas o cero: Asegúrate de que el transformador de corriente esté correctamente instalado y que la carga esté conectada. Si la corriente es muy baja (menos de 0.1A), el sensor puede no detectarla. Prueba con una carga mayor.
  • Error de comunicación Modbus: Añade un resistor de terminación de 120 ohmios entre los pines A y B del bus RS485 si el cable es largo. También puedes reducir la velocidad de baudios a 2400.
  • El ESP32 se reinicia cíclicamente: Puede deberse a un consumo excesivo de corriente. Alimenta el MAX485 con una fuente externa en lugar de desde el ESP32.

Preguntas frecuentes

¿Puedo usar este proyecto sin Home Assistant?
Sí, ESPHome puede funcionar de forma independiente. Puedes configurar el ESP32 para que publique los datos vía MQTT a cualquier broker, o simplemente mostrar las lecturas en una pantalla OLED. Sin embargo, la integración con Home Assistant es la más potente y sencilla.
¿Es seguro dejar el PZEM-004T conectado permanentemente?
Sí, el PZEM-004T está diseñado para uso continuo. Sin embargo, es recomendable colocarlo dentro de un cuadro eléctrico con protección (magnetotérmico) y asegurar todas las conexiones. Además, el transformador de corriente no debe estar en contacto con otros cables.
¿Puedo medir varios circuitos con un solo ESP32?
Sí, puedes conectar varios PZEM-004T en el mismo bus RS485, cada uno con una dirección Modbus diferente (configurable mediante los pines de dirección del módulo). ESPHome permite definir múltiples sensores con distintas direcciones. Necesitarás una fuente de alimentación más potente.
¿Qué precisión tiene el PZEM-004T?
El fabricante declara una precisión del 1% para la potencia activa y del 0.5% para la tensión y corriente. En la práctica, es más que suficiente para monitorización doméstica. Para aplicaciones de facturación, se requieren contadores certificados.

Conclusiones y plan de acción

La monitorización del consumo eléctrico con ESPHome y un PZEM-004T es un proyecto DIY accesible, económico y totalmente local. Te permite tomar el control de tus datos energéticos sin depender de servicios cloud, integrándolo perfectamente con Home Assistant para crear automatizaciones y paneles de control. Además, es una excelente forma de aprender sobre electrónica, comunicaciones serie y domótica.

RecomendaciónSi quieres dar el primer paso, adquiere un ESP32, un PZEM-004T V3.0 y un módulo MAX485. Sigue la guía de conexión y configuración YAML proporcionada. En menos de una hora tendrás tu medidor funcionando. Para una instalación permanente, utiliza una caja estanca y bornes de conexión. No olvides tomar todas las precauciones eléctricas necesarias.
TRANSPARENCIA INFORMATIVA

Este análisis técnico es independiente. No recibimos pagos de fabricantes para alterar valoraciones. Si realizas una compra a través de enlaces en este sitio, podríamos percibir una comisión de afiliación que ayuda a mantener el servidor activo, sin coste extra para ti.