El último lanzamiento de Home Assistant y los disparatados precios de la luz me han hecho desempolvar un antiguo proyecto, el monitoreo del consumo energético doméstico desde Home Assistant.
El proyecto comenzó hace años, cuando todavía ejecutaba Domoticz como cerebro de mi hogar. Tras investigar un poco la monitorización energética, nuestro protagonista, la placa PZEM-004T v.3 llegó a mi pantalla, y unas semanas más tarde a mi buzón. Iba a ser pan comido, como muchos otros sensores sólo tendría que conectarlo a un Wemos D1 Mini para que los bytes comenzasen a fluir por MQTT. Que equivocado estaba.

El inicio
Por aquel entonces pocos se animaban a probar el sensor lo que provocaba una escasez de documentación en la red, además, la mayoría de los posts estaban basados en una Raspberry Pi y Python. Como herramienta me encantan las RPI, pero no estoy dispuesto a tener una anclada a mi cuadro eléctrico cuya única misión sea publicar datos por MQTT. Consideraba que esa era la tarea perfecta para un microcontrolador ESP8266. Por aquel entonces mi firmware de trote para dispositivos IOT era el longevo ESPEasy, conseguí encontrar en un foro una versión del firmware con las librerías del PZEM. Ya que no existía (y creo que sigue sin existir) soporte oficial del sensor no me quedó más opción que probarlo.
Nada, ni un solo número, lo único que fui capaz de obtener fue el típico Nan remarcando y haciendo evidente el fracaso. Supuse que se podría tratar de un problema con los voltajes lógicos, al ser el Wemos D1 Mini una placa 3.3V y el PZEM 5V supuse que podría ser parte del problema. Rebusqué modificaciones por internet y la mayoría indicaban la necesidad de una resistencia pull-up para aumentar el voltaje del canal Tx del PZEM. Por desgracia hace años no era tan hábil con el estaño como a día de hoy. Mis modificaciones dignas de Frankenstein se cobraron la vida del PZEM.
Segundo intento
Si avanzamos un año y unos meses, me dispuse a reintentar el proyecto. Tras recibir en mi buzón otra lustrosa placa PZEM añadí las correspondientes resistencias. Conecté el dispositivo a la red eléctrica y al ESP8266 y me dispuse a activar el montaje por primera vez. 💥 Conecté incorrectamente el lado de alto voltaje del sensor. Lo que resultó en un amperímetro en paralelo, mejor este intento lo olvidamos.
A la tercera….
Afortunadamente esto nos lleva al tercer intento. Por si todavía no estaba claro el patrón pedí esta vez un par de placas que recibí por correo apenas un par de semanas más tarde. Esta vez estaba dispuesto a llegar hasta el final del asunto. Habían cambiado muchas cosas desde el último intento, ahora mi sistema domótico era la última versión de Home Assistant y mi firmware predilecto EspHome. Me bastaron un par de palabras en Google para descubrir el soporte oficial y la documentación describiendo las líneas de configuración necesarias para implementar el sensor. Una vez cargado el firmware en la placa, nada! Otra vez! Absolutamente nada!!!!
La opción de la maldición empezaba a resonar fuertemente en mi cabeza. Eso no podía ser, es un sistema, un sensor, algo tiene que estar mal. Mi primera idea para hacer debugging fue conectar la placa a un Arduino para mostrar los datos por consola serial. Efectivamente, ante mis ojos pude ver voltaje, consumo, amperaje, factor de potencia y consumo acumulado. Gracias a esta prueba ya tuve claro que las placas funcionaban, no eran unidades defectuosas.
Lo siguiente que hice fue adaptar una de ellas a 5V. Instalando una resistencia de pull-up se podía conseguir tal efecto. Conecté el sensor modificado a una Wemos D1 Mini y me dispuse a recibir datos. Una vez más, ni medio bit 😂. Sin embargo si conectaba la placa modificada al Arduino todo seguía funcionando. Es entonces cuando decidí estudiar las cosas desde un nivel más bajo y conecté el osciloscopio.

Esto fue lo que me encontré, los voltajes estaban correctos. Pero esa señal no tiene nada que ver con i2c y muchísimo menos por comparación con la señal procedente del Arduino.

Esta es la señal que emitía el Arduino para obtener una lectura del sensor. Nada que ver con la anterior, las formas de las señales son menos puntiagudas.
Continuará…
Leave A Comment?