Display interactivo con ESPHOME


En un post anterior vimos como conectar con EspHome un modulo analizador de consumo eléctrico ultra famoso (el PZEM004 del que hemos hablado ya en numerosas ocasiones) y un sensor de temperatura y humedad ( el DHT11) conectado a un nodeMCU ESP32, para desde nuestro pc, tableta o telefono ,poder hacer un seguimiento del consumo eléctrico así como la temperatura y humedad.

Bueno quizás un ordenador o un móvil no sean el mejor sitio para ver el consumo eléctrico, temperatura o humedad, así que vamos a ver en este artículo cómo construir su propio medidor de temperatura y energía eléctrica de matriz LED basado en ESPHome (requiere un sistema Home Assistant ya existente y configurado , con el complemento ESPHome instalado como vimos en este post).

En esta nueva configuración que vamos a ver se mostrará la temperatura exterior y la potencia actual producida por una instalación de células solares, pero en realidad se puede personalizar para que muestre cualquier dato que exista en su sistema Home Assistant.

Este montaje incluso incluye el soporte de un botón que se puede utilizar para cambiar entre las diferentes fuentes de datos, o también puede hacer que cambie entre las fuentes de datos de forma automática mediante el ajuste del código.

La carcasa está impresa en 3D y se puede utilizar los archivos STL listos para imprimir o adaptar el archivo fuente (creado con Fusión 360) a sus propias necesidades. Obviamente si no se cuenta con una impresora 3D también se puede equipar en una caja ABS tradicional pues en realidad solo requiere la apertura de un rectángulo para el display de leds.

Componentes

Necesitará los siguientes elementos:

  • Lolin/Wemos D1 Mini Pro (también sirve un ESP8266 o mejor un ESP32 microcontrolador que funcionan con ESPHome)
  • MAX7219 LED módulo de matriz de puntos 8×32 puntos
  • Pulsador montado en PCB con tapa
  • Pequeño trozo de veroboard/stripboard con paso estándar de 0,1″, para montar el pulsador
  • Fuente de alimentación de 5V, cualquier cargador USB servirá.

Puede visitar https://web.esphome.io para configurar el D1 Mini Pro (o el microcontrolador que quiera utilizar). Dale un nombre que describa la función, en este caso se llama «solar-wattmeter».

Una vez que esté configurado y conectado a su red, también debe añadirlo a su sistema Home Assistant, esto permitirá que el dispositivo lea cualquier dato en tu sistema HA. Para añadirlo, siga las instrucciones que encontrará aquí: https://www.home-assistant.io/integrations/esphome/

Conexiones

Corte un trozo de verobord/stripboard con un tamaño e 10×5 agujeros (ver imagen), la longitud debe ser de unos 28,5 a 29 mm. Las líneas de conexión de la placa deben ir a lo largo del lado más largo de la placa (horizontal si la placa está orientada como en la imagen). Suelde el pulsador en el centro. A continuación suelde dos cables de unos 150 mm de longitud para que conecten con los dos conectores del pulsador de un lado.

A continuación, conecte la pantalla MAX7219 al D1 Mini Pro o a su microcontrolador favorito de la siguiente manera:

  • VCC a 5V
  • GND a GND
  • DIN a GPIO13 (D7)
  • CS a GPIO12 (D6)
  • CLK a GPIO14 (D5)

Asimismo conecte el botón usando el pin GPIO5 (D1) y GND.

Conecte la entrada de alimentación a los pines VCC y GND de la pantalla MAX7219 (también se puede conectar directamente al D1 Mini Pro, pero como la pantalla consumirá la mayor parte de la energía tiene más sentido conectarla allí y dejar que el D1 Mini Pro se alimente a través de la conexión entre la pantalla y el D1 Mini Pro).

Por favor, compruebe la imagen en el paso de montaje a continuación para ver aprox. la longitud de los cables que necesita entre la pantalla y el D1 Mini (Pro), y entre el interruptor y el D1 Mini (Pro). Alrededor de 10-15 cm debería estar bien.

Software

Como primer paso, necesita la fuente «Pixelmix» cargada en HomeAssistant, en la carpeta /homeassistant/esphome/fonts. Si la carpeta «fonts» no existe, créela (el complemento «File Editor» es una herramienta útil para ello). La fuente es gratuita para uso personal, y puede descargarse aquí: https://www.dafont.com/pixelmix.font

El siguiente paso es editar el archivo YAML para el dispositivo, utilizando el código de mas abajo. Todo lo que hay por encima del comentario «Todo lo que hay por encima…» no debe cambiarse, ya que esta parte se creó como parte de la instalación del dispositivo y su adición a HomeAssistant.

Otras partes deberá adaptarlas a sus necesidades, aquí tiene algunas pistas:

  • Sensor:Esta parte se debe adaptar, para obtener los datos que necesita, utilizando los nombres de los sensores de su sistema de HomeAssistant.
  • Mostrar lambda: Este es el código real que mostrará los datos. Realize los cambios que necesite, como mínimo cambie los nombres de los sensores para que coincidan con lo que ha definido en la parte «sensor:».Si deja todo lo demás sin cambiar, la pantalla comenzará mostrando la potencia del inversor (solar). Al pulsar el botón cambiará a mostrar la temperatura exterior, pulse de nuevo para volver a mostrar la potencia.
  • Intervalo: Descomente esta parte si desea que la pantalla cambie automáticamente entre los valores a mostrar. Si lo mantiene comentado, puede cambiar entre valores con el botón.

Este es el código a añadir al ESPHOME:

esphome:
  name: "solar-wattmeter"
  friendly_name: solar-wattmeter

esp8266:
  board: d1_mini_pro

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "********************************************"

ota:
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails

  ap:
    ssid: "Esphome-Web-Dae120"
    password: "************"


captive_portal:

# Everything above this line should be left un-changed, it was created during the install

# Everything below is the actual implementation 

spi:
  clk_pin: D5
  mosi_pin: D7

font:

  - file: 'fonts/pixelmix.ttf'
    id: digit_font
    size: 8

  - file: 'fonts/pixelmix.ttf'
    id: digit_font_sml
    size: 6

sensor:

  - platform: homeassistant
    entity_id: sensor.inverter_active_power
    id: active_power

  - platform: homeassistant
    entity_id: sensor.netatmo_hagby_hallen_utomhus_temperature
    id: outdoor_temp


binary_sensor:
  - platform: gpio

    pin:
      number: GPIO5
      mode: INPUT_PULLUP
      inverted: True

    name: "mode switch"

    filters:
      - delayed_on: 10ms

    on_click:
      min_length: 50ms
      max_length: 350ms
      then:

        - lambda: |-
            id(page) = (id(page) + 1);
            if (id(page) > 2) {
              id(page) = 1;
            }

display:

  - platform: max7219digit
    id: dmx
    cs_pin: D6
    num_chips: 4
    flip_x: False
    intensity: 1
    scroll_enable: False
    lambda: |-
      switch (id(page)){
        case 1:
           if(id(active_power).has_state()) { 
               it.printf(24,0,id(digit_font),TextAlign::TOP_RIGHT,"%.0f",id(active_power).state);
           } else {
             it.print(24, 0, id(digit_font), TextAlign::TOP_RIGHT, "----");
           }
           it.print(27, 0, id(digit_font), "W");
           break;
        case 2:
           if(id(outdoor_temp).has_state()) { 
             it.printf(24,0,id(digit_font),TextAlign::TOP_RIGHT,"%.1f",id(outdoor_temp).state);
           } else {
             it.print(24, 0, id(digit_font), TextAlign::TOP_RIGHT, "-.-");
           }  
           it.print(30, -1, id(digit_font_sml), TextAlign::TOP_RIGHT, "o");
           break;
      }

globals:

- id: page
  type: int
  initial_value: "1"

#interval:
#- interval: 2s
#  then:
#    - lambda: |-
#        id(page) = (id(page) + 1);
#        if (id(page) > 2) {
#          id(page) = 1;
#        }

Una vez actualizado el archivo YAML, guárdelo. Asegúrese de que su dispositivo está encendido y aparece en línea en HomeAssistant, a continuación, instale la nueva configuración. Una vez instalada, la pantalla debería cobrar vida y mostrar sus datos. Tenga en cuenta que mostrará «—-» durante los primeros segundos, hasta que se haya establecido una conexión entre HomeAssistant y el dispositivo.

Si el dispositivo no funciona, compruebe el registro del complemento ESPHome en HomeAssistant, normalmente hay algunas pistas allí. También es posible que desee volver a comprobar el cableado.

Versión alternativa del código


Una opción a la configuración mencionada es cambiar el código para que sólo muestre la potencia actual cuando las células solares están produciendo electricidad, y de lo contrario sólo mostrar la temperatura exterior. El botón seguirá funcionando, si desea mostrar la temperatura cuando la energía está mostrando. Aquí está la parte cambiada del código para esta versión:

lambda: |-

      switch (id(page)){
        case 1:
           if(id(active_power).has_state()) { 
             if(id(active_power).state > 0) {
               it.printf(24,0,id(digit_font),TextAlign::TOP_RIGHT,"%.0f",id(active_power).state);
               it.print(27, 0, id(digit_font), "W");
             }
             else {
               it.printf(24,0,id(digit_font),TextAlign::TOP_RIGHT,"%.1f",id(outdoor_temp).state);
               it.print(30, -1, id(digit_font_sml), TextAlign::TOP_RIGHT, "o");
             } 
           } else {
             it.print(24, 0, id(digit_font), TextAlign::TOP_RIGHT, "----");
             it.print(27, 0, id(digit_font), "W");
           }
           break;
        case 2:
           if(id(outdoor_temp).has_state()) { 
             it.printf(24,0,id(digit_font),TextAlign::TOP_RIGHT,"%.1f",id(outdoor_temp).state);
           } else {
             it.print(24, 0, id(digit_font), TextAlign::TOP_RIGHT, "-.-");
           }  

           it.print(30, -1, id(digit_font_sml), TextAlign::TOP_RIGHT, "o");
           break;
      }

Carcasa en 3D

Los archivos STL y el archivo fuente de la carcasa pueden descargarse aquí: https://www.thingiverse.com/thing:6443928

No es necesario imprimir el «Stand L» y el «Stand R», a menos que desee que la carcasa pueda apoyarse sobre una superficie plana.

Hay dos versiones del fondo de la carcasa, una para la variante más grande del D1 Mini Pro (la que tiene un conector de batería) y otra para la variante más habitual del D1 Mini.

Nota: Cuando corte el fondo de la carcasa, asegúrese de que la primera capa es inferior a 0,2 mm. Lo recomendable es que la primera capa sea de 0,15 mm y el resto de capas de 0,20 mm. Si la primera capa es demasiado gruesa, no se imprimirá el «difusor» para la pantalla. El difusor es sólo una capa de espesor y debe cubrir la pantalla por completo, lo que hace que la pantalla más agradable a la vista.

Montaje

En primer lugar, retire los dos módulos LED exteriores y, a continuación, fije la placa de la pantalla al fondo de la carcasa con tornillos de 3 mm (5 mm de longitud). Vuelva a colocar los módulos e intente alinearlos en altura. Pruebe a colocar la parte superior de la carcasa y asegúrese de que los módulos de visualización están alineados con la parte superior de la carcasa (capa difusora). Si no es así, ajuste la altura de los módulos de visualización levantándolos ligeramente en sus conectores.

Fija el D1 Mini (Pro) a la parte inferior de la carcasa, con tornillos de 2 mm (también de 5 mm de largo) o simplemente deslízalo en su lugar (dependiendo de la versión de la carcasa que hayas impreso). Si su versión de microcontrolador no encaja, probablemente pueda fijarlo sólo en uno o dos de los agujeros de los tornillos.

Inserte con cuidado el conjunto de botones en la parte superior de la carcasa y atornille el fondo y la parte superior con tornillos de 3 mm, de unos 15 mm de largo.

Si es necesario, fije los soportes al fondo de la carcasa. Si se utilizan soportes, el cable de alimentación debe pasarse por uno de los orificios para tornillos de la parte posterior, en lugar de por el orificio de la parte inferior. Si quiere montarlo en la pared, cuélguelo de dos tornillos o utilice cinta adhesiva de doble cara.

Mas información en : https://www.instructables.com/Home-AssistantESPHome-LED-Matrix-Temperature-and-P

Monitorización del consumo eléctrico y de la temperatura y humedad(Parte 1)


Dado el incremento histórico en los costos de la electricidad y la previsión de un continuo aumento, consideramos esencial contar con un método para evaluar el consumo eléctrico y identificar las áreas de la casa con mayor gasto energético. Esto nos permitirá optimizar el uso de la electricidad y, en última instancia, reducir nuestra factura. Una manera efectiva de lograr este objetivo es la instalación de medidores de consumo, ya sea a nivel de dispositivo o de la casa en su totalidad. En este post nos enfocaremos en la colocación de un medidor de consumo en el cuadro eléctrico para monitorizar el consumo de toda la vivienda , pues aunque hay numerosos dispositivos disponibles en el mercado para este propósito no siempre estan accesibles en tiempo real las medidas. Además adoptaremos una solución abierta  económica y no invasiva (esto significa que no es necesario que la línea eléctrica que se va a medir pase a través del dispositivo, lo cual hace que su instalación y uso sean más seguros).

Los componentes

El corazón del montaje es un Pzem004 , un módulo de prueba de monitorización eléctrica de alta precisión que viene además ya calibrado , muy económico ( unos 13€ en amazon) , autoalimentado ( ca 220v) y que incluye un transformador de corriente ( cerrado o con clip) para la medida de la corriente. Este mismo módulo incluso puede usarse para medir la energía, el voltaje y la corriente, y luego mostrarlo en un PC u otros terminales ofreciendo una precisión del 1%..

Ciertamente existen varias versiones con display que incluyen un botón de restablecimiento que puede restablecer los datos de energía simplemente pulsándolo, pero para el cometido de este post es mucho mejor usar la versión sin display dado que la idea es conectarlo a un microcontrolador y enviar las medidas para su análisis posterior (ya que de no ser así solo podemos verlas in situ y nos perderemos los valores históricos)

Gracias a que todas las versiones equipan un interfaz de comunicación de datos serie TTL, se puede leer y configurar los parámetros relevantes a través del puerto serie que podemos capturar con un microcontrolador como por ejemplo un potente ESP32, como vamos a ver en este post con una versión de los mas vendida: el ESP32 WROOM-32 (unos 12€ en amazon).

El AZDelivery ESP32 Dev Kit C V4, que corresponde al fabricante Espressif, combina en un solo microcontrolador una CPU con 2 núcleos de Tensilica LX6, con una frecuencia de reloj de hasta 240 MHz, y 512 kilobytes de SRAM. Para ello integra un aparato de radio para WLAN (802.11b/g/n) y Bluetooth (Classic y LE).

Con la nueva distribución de la placa, tanto la alimentación como el circuito de reset para la programación automática han sido mejorados significativamente. La versión  Dev-Kit está equipado con el ESP32-WROOM-32., módulo que a sido reposicionado por Espressif para lograr un aumento significativo en la calidad de transmisión y recepción, sin aumentar el rendimiento.

La función WLAN es compatible con todos los métodos de cifrado habituales, como WPA2. También puede actuar como punto de acceso o sniffer en la WLAN. Entre los más de 32 pines GPIO están disponibles: UART, I2C, SPI, DAC, ADC (12 Bit), todos los pines GPIO pueden utilizarse como entrada o salida.

Conectándolo todo

Usando la Biblioteca Arduino para Peacefair  en un ESP32 y un PZEM-004T-100A v3.0 podemos construir un Monitor de energía usando la interfaz ModBUS.

Antes de empezar ,debemos saber que la versión 3.0 PZEM es una versión mejorada de la anterior PZEM-004T, siendo las principales características de este módulo son las siguientes;

  • Mide voltaje, corriente, potencia, energía, factor de potencia y frecuencia (nuevo en la versión 3.0).
  • 247 direcciones esclavas programables únicas.
  • Permite que múltiples esclavos usen la misma interfaz serial PZEM MulitDevice Demo
  • Contador de energía interna hasta 9999.99kWh.
  • Alarma de sobrealimentación.
  • Puesta a cero del contador de energía.
  • Suma de comprobación CRC16.
  • Mejor, pero no perfecto aislamiento de red.

También destacar que existe ya actualmente una nueva versión versión con exactamente las mismas especificaciones pero con soporte de RS485 ( como tratamos en este post) , lo cual a efectos prácticos nos puede interesar en caso de necesitar usar múltiples dispositivos de medidas sobre el mismo bus de medidas.

Especificaciones del fabricante para el PZEM004 v3
FUNCIÓNRANGO DE MEDICIÓNRESOLUCIÓNPRECISIÓN
Voltaje80~260V0.1V0,5%
Actual0~10A o 0~100A*0.01A o 0.02A*0,5%
Poder activo0~2,3kW o 0~23kW*0.1W0,5%
energía activa0~9999.99kWh1Wh0,5%
Frecuencia45~65Hz0,1 Hz0,5%
Factor de potencia0,00~1,000.011%
*Uso del transformador de corriente externo en lugar del derivador incorporado

Este módulo, es una versión mejorada del PZEM-004T con funciones de medición de frecuencia y factor de potencia, disponible en los lugares habituales. Se comunica mediante una interfaz TTL a través de un protocolo de comunicación similar a Modbus-RTU, pero es incompatible con la biblioteca @olehs anterior que se encuentra aquí: https://github.com/olehs/PZEM004T

Para hacer mas interesante la propuesta además al circuito un simple medidor de temperatura y humedad «clásico» como el módulo DHT11. Este sensor lee la temperatura y humedad del lugar donde está el sensor. Tiene dos pines para alimentación («-» para la tierra, el pin central es VCC). El pin con la etiqueta «S» es la entrada de pin. Las lecturas se reciben a través de este pin.

Los componentes empleados necesarios para el montaje propuesto pues son los siguientes:

  • Modulo Esp32 genérico : ESp32 WROOM3
  • Modulo PZEM004
  • Modulo DHT11
  • Fuente encapsulada de 5v : módulo 220AC /5vDC
  • Cablecillo hembra-hembra y cable de ca
  • Caja

El circuito

En cuanto a las conexiones, seguiremos un esquema bastante simple que puede ajustarse a diversas necesidades y configuraciones. Se ha optado además del citado modulo PZEM004, añadir un sensor de temperatura y humedad (el DHT11 ) así como para darle mayor estabilidad un fuente sellada de 5V ultra-miniatura ( aunque un cargador USB debería también ser suficiente).

El esquema propuesto del montaje queda como en la siguiente imagen :

A continuación para que quede mas claro exponemos las principales conexiones con el ESp32:

NodeMCU ESP32SPZEM004-T V3Fuente 5v DCDHT11
5V5VRojo/+/VCC/5V 5V
GNDGNDNegro/-/GND GND
GPIO16TX  
GPIO17RX  
GPIO 5 DATA (PIN CENTRAL)
Resumen de conexiones importantes del ESP32 con el DHT11 y PZEM004

ATENCION: La Fase y el Neutro se conectarán a la corriente directa de la casa. Dentro del anillo toroidal para la medición de la corriente ( que puede ser en forma de pinza o no ), deberemos pasar el cable de la Fase (color Negro) sobre el cual deseamos llevar a cabo las mediciones, que puede ser el mismo que utilizamos para suministrar corriente al circuito o no.

Debemos destacar la importancia de verificar si los módulos ESP permiten la salida de corriente de 5V por el pin, ya que esto puede variar según el modelo. En caso de alimentar el módulo ESP desde un cable USB y suministrar energía al módulo PZEM-004T mediante sus pines 5V/VCC y GND, es esencial confirmar que estos pines puedan proporcionar la corriente necesaria. Mencionar además la intención de llevar a cabo pruebas según el esquema propuesto y luego realizar un montaje más seguro dentro del cuadro eléctrico.

MUCHO CUIDADO: Para que ciertamente este montaje no conlleve ningún peligro, dado qeu va alñimentado directamente con ca 220V , debemos aislar ambas placas (por ejemplo en una caja de conexiones) para asegurarnos de que no recibimos ninguna descarga eléctrica fortuita especialmente del PZEM004 .

Código Arduino

Una vez tengamos listo el montaje, antes de incluso integrarlo en Home Assistant que veremos en un nuevo post, es muy interesante cerciorarnos que el montaje funciona correctamente, para lo cual en el ambiente de Arduino deberíamos probar algún mínimo código que nos ratifique que el montaje es correcto.

Teniendo el montaje bien revisado, debemos seleccionar desde el interface de Arduino «ESP Dev Module» y asegurarnos de haber configurado el puerto serie correcto.

Con el siguiente código lo cargaremos y los desplegaremos en el microcontrolador pulsando la flecha derecha ( deploy) y ya podemos probar las funcionalidades abriendo el monitor serie.

#include <PZEM004Tv30.h>
#include "DHT.h"

#define DHTPIN 4 // Digital pin connected to the DHT sensor

// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --

// Pin 15 can work but DHT must be disconnected during program upload.



// Uncomment whatever type you're using!

#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)



// Connect pin 1 (on the left) of the sensor to +5V

// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1

// to 3.3V instead of 5V!

// Connect pin 2 of the sensor to whatever your DHTPIN is

// Connect pin 4 (on the right) of the sensor to GROUND

// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor



// Initialize DHT sensor.

// Note that older versions of this library took an optional third parameter to

// tweak the timings for faster processors. This parameter is no longer needed

// as the current DHT reading algorithm adjusts itself to work on faster procs.

DHT dht(DHTPIN, DHTTYPE);




//inicializacion de los contadores

PZEM004Tv30 pzem0(Serial2, 16, 17);

float puerto;



String Imprimir3;

/**variables genericas para capturar todas las medidas*/

float voltage,current ,power, frequency,pf;



void setup() {


Serial.begin(9600);

Serial.println(F("DHTxx test!"));


dht.begin();

pinMode(2,OUTPUT);

// Uncomment in order to reset the internal energy counter

pzem0.resetEnergy();



}





void loop() {



Serial.print("Custom Address:");

//Serial.println(pzem.readAddress(), HEX);

//Serial.println(pzem.readAddress());


Serial.println(pzem0.getAddress());

//Custom Address:248

//Error reading voltage



puerto=pzem0.getAddress();


Serial.print("Read Custom Address:");

Serial.println(puerto);


if (puerto>0)

{


digitalWrite(2,HIGH);

Serial.print("Medidor 0 :( ");

Serial.print(pzem0.readAddress(), HEX);

Serial.print(") Medidas: ");


// Read the data from the sensor

voltage = pzem0.voltage(); //Volt

current = pzem0.current(); //Amp

power = pzem0.power(); //watt

//float energy = pzem0.energy(); //kwh

frequency = pzem0.frequency(); //hz

pf = pzem0.pf();




Serial.print ("M0 AGREGADO I=");

Serial.print (current);


Serial.print (" W=");

Serial.print (power);


Serial.print (" pf=");

Serial.print (pf);


Serial.print (" V=");

Serial.print (voltage);



Serial.print (" f=");

Serial.print (frequency);


// Serial.println ((String)voltage+";"+(String)current+";"+(String)power+";"+(String)frequency+";"+(String)pf);

// Wait a few seconds between measurements.

delay(2000);


// Reading temperature or humidity takes about 250 milliseconds!

// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)

float h = dht.readHumidity();

// Read temperature as Celsius (the default)

float t = dht.readTemperature();

// Read temperature as Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature(true);



// Check if any reads failed and exit early (to try again).

if (isnan(h) || isnan(t) || isnan(f)) {

Serial.println(F("Failed to read from DHT sensor!"));

return;

}



// Compute heat index in Fahrenheit (the default)

float hif = dht.computeHeatIndex(f, h);

// Compute heat index in Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex(t, h, false);



Serial.print(F("Humidity: "));

Serial.print(h);

Serial.print(F("% Temperature: "));

Serial.print(t);

Serial.print(F("°C "));

Serial.print(f);

Serial.print(F("°F Heat index: "));

Serial.print(hic);

Serial.print(F("°C "));

Serial.print(hif);

Serial.println(F("°F"));

}

}

Destacar que aunque este código no será necesario en la integración con Home Assitant, pero si es conveniente antes de desplegarlo en el ESP32 , para probar que el montaje funciona correctamente y que no nos hemos equivocado en nada , ya que el código Arduino anterior es funcional al 100% .

Os mostramos como hemos probado el montaje antes de llevarlo su ubicación junto al cuadro de distribución de ca:

Si hemos desplegado el código anterior correctamente los dos leds TX/RX del PZEM004 deberían parpadear al unísono y desde la consola serie de Arduino ver todas la lecturas de tensión, corriente, potencia, frecuencia, factor de potencia así como la temperatura y la humedad. !buena suerte!.