Monitorización de Consumo Eléctrico con ESPHome: Proyecto DIY sin Nube para tu Hogar
Escrito por: Alex R.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.
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:
- 1Conexió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.
- 2Conexió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.
- 3Alimentació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.
- 4Instalació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: 2Ademá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_ONLuego, 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ística | PZEM-004T | SCT-013 | HLW8012 |
|---|---|---|---|
| Medición de tensión | Sí | No | No |
| Medición de corriente | Sí | Sí | Sí |
| Potencia activa | Sí | Requiere cálculo | Sí |
| Energía acumulada | Sí | No | Sí |
| Factor de potencia | Sí | No | No |
| Comunicación | RS485 (Modbus) | Analógica | Pulsos / UART |
| Precio aproximado | 15-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?
¿Es seguro dejar el PZEM-004T conectado permanentemente?
¿Puedo medir varios circuitos con un solo ESP32?
¿Qué precisión tiene el PZEM-004T?
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.
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.