En esta oportunidad integraremos nuestro medidor de potencia activa o consumo electrico, Pzem-004 de Peacefair con la plataforma integradora IoT Node-RED utilizada en tutoriales anteriores, utilizaremos un modulo ESP8266 configurado como Modbus TCP/IP esclavo, posteriormente visualizaremos las mediciones en Node-RED Dashboard para visualizar las 4 variables disponibles tales como potencia activa, consumo electrico acumulado, voltaje y corriente.
Tutoriales Anteriores Recomendados
Medidor PZEM-004T con Arduino ESP32 ESP8266 Python & Raspberry Pi
Revisión Inicial Medidor PZEM-016 Modbus RTU RS485 de PeaceFair
Instalacion de Plataforma Node-Red
En el siguiente tutorial se indicara como instalar Node-RED para linux y en caso de otros SO recomendamos Virtualbox.
Actualizacion ESP8266 Industrial Modbus TCP IP V2.0
Hace mucho tiempo realice algunas pruebas de ESP8266 como esclavo Modbus TCP/IP, el siguiente tutorial se puede tomar como antecedentes de las pruebas actuales.
Medidor de consumo electrico Peacefair PZEM 004 + ESP8266 & Arduino Nano
Si quieren conocer mas sobre El medidor de consumo electrico Pzem-004 de Peacefair recomiendo el siguiente tutorial:
Características, conexiones Arduino yESP8266.
Medidor de consumo electrico Peacefair PZEM 004 + ESP8266 & Arduino Nano
Pruebas Realizadas
Realizaremos la medición de consumo eléctrico de una resistencia para calentar agua, consume aproximadamente 920 Watts y visualizaremos las mediciones en un dashboard creado en Node-RED Dashboard y la comunicación implementado Modbus TCP/IP.
Materiales y donde comprarlos muy baratos!!
- Medidor PZEM 004 con display
- Medidor PZEM 004T & Medidores Trifasicos
- Resistencia Calentadora de agua
- ESP8266 NodeMCU
Otros Equipos Recomendados
- Transformador de corriete nucleo partido
- Medidores de Consumo electrico Monofasico – Por pulsos
- Tranformadores de Voltaje para Aislamiento
- MPPT Controlador Regulador para panel Solar
- Paneles Solares 10W 18v
- Matrix Led x4 Max7219
Simple Test Meter PZEM-004 & ESP8266 Platform IoT Node-RED Dashboard Modbus TCP/IP
Conexiones
Nota: El medidor PZEM-004 requiere una adaptación para la comunicación a 3.3v, mayor información referencias abajo.
Codigo Arduino IDE
La rutina creada en Arduino IDE, el esp8266 realiza la lectura del medidor PZEM-004 a través del puerto serial, de pruebas anteriores con Modbus TCP/IP se creo una rutina recortada para envió y recepción de Holding Registers.
Se han definido 4 variables en 5 Holding Registers:
- Vacio = Holding Register[0].
- Voltaje instantaneo = Holding Register[1].
- corriente instantanea = Holding Register[2].
- potencia instantanea = Holding Register[3].
- potencia acumulada = Holding Register[4].
Solucion rapida a envio de Float en Int
Los valores del medidor son tipo flotantes, los Holding Registers son Enteros de 16 bits, en este caso por practicidad simplemente multiplicando por 10 realizamos el envio del valor, en proximas pruebas realizaremos el envio en 2 enteros de 16bits.
Nota: Enlaces de descarga y/o github mas abajo.
Node-RED
Se han descargarlos e instalado nodos utilizados en esta prueba, simplemente se deben buscar en la paleta de Node-RED «Manage palette».
- Nodos Modbus TCP/IP, Node-RED sera maestro Modbus TCP/IP
- Nodos Node-RED Dashboard, paquete de visualización.
En este caso se recibe un Arreglo de 5 posiciones [0,1,2,3,4] la primera posicion en 0 y el resto contiene los valores de voltaje, Corriente, Potencia, Consumo Acumulado.
Utilizando algunos nodos Script se separan los valores y se realiza haciendo lo inverso de Arduino IDE se divide en 10 los valores recibidos para convertirlos de Int a Float en los casos requeridos, técnicamente todo esto de realiza para la correcta visualizacion.
Nota: Enlaces de descarga y/o github mas abajo.
Node-RED Dashboard
Paquete de visualización en tiempo real.
- Vista desde PC
- Vista desde Android
La resistencia consume aproximadamente 922 Vatios.
Conclusiones & Consideraciones
Bueno en esta oportunidad probé una alternativa a el conocido protocolo MQTT, esta versión Modbus TCP/IP funciono muy bien, claro tener en cuenta que esta aplicación solo funciona a nivel de nuestra RED local.
Estas aun son pruebas iniciales, dado que no he conectado multiples esclavos, supongo funcionara bien dado que Node-RED es el maestro, dependeria mas de la Maquina sobre la cual corra Node-RED ya sea un PC u otra plataforma como Raspberry pi o Beaglebone Black etc.
En esta implementacion no se debe utilizar el Puerto serial del ESP8266 dado que se utiliza para comunicar con el Medidor de Consumo electrico PZEM-004.
En proximas mejoras pendientes:
- Actualizacion ESP8266 OTA
- WifiManager
- Servidor Web
Github/Descargas
- Librerias comunicacion PZEM004T
- Libreria SoftwareSerial para ESP8266
- Ejemplo Importacion Node-RED
- Codigo Arduino IDE Ejemplo PZEM-ESP8266-ModbusTCP_B
Referencias
- Medidor de consumo electrico Peacefair PZEM 004 + ESP8266 & Arduino Nano
- Actualizacion ESP8266 Industrial Modbus TCP IP V2.0
- Instalacion de Plataforma Node-Red
- Nodos Modbus TCP/IP, Node-RED sera maestro Modbus TCP/IP
- Nodos Node-RED Dashboard, paquete de visualización.