Me preguntaba: ¿a dónde va la corriente de los cables? Parece que ahogamos la casa con gas, en la casa todas las lámparas son de diodo, encendemos el lavavajillas por la noche, todavía no hay saunas con una estufa eléctrica y la electricidad se apaga todo el tiempo. El desastre Sería necesario seguirlo.
Bienvenido al gato ...
El primer paso es el monitoreo general del consumo.
Las tareas
Decidí comenzar una búsqueda de una manada de liebres. Las liebres fueron seleccionadas:
- Monitoreo de electricidad a través de Internet. Tengo un monitoreo instantáneo de los parámetros de red: en el corredor, en el panel hay un monitor de energía PZEM061, en la pantalla puede ver el voltaje, la corriente y la potencia. Pero en el lugar de exhibición de la energía consumida, algún tipo de abstracción, muy pocas descargas. Pero el corredor no es cómodo. Quiero en la pantalla del teléfono.
- Gráfico de consumo de electricidad. Me gustaría saber cuándo se produce un consumo excesivo.
- Lecturas de medidor a través de Internet. Este dolor es la transferencia de las lecturas del medidor a las ventas de energía. Es necesario darles evidencia del 15 al 25 de cada mes. A menudo lo olvido y comienzan a llamar al robot y a escribir spam. Además, cuando se recuerdan a sí mismos, generalmente estoy en el trabajo y tengo un mostrador en una publicación en la calle. Quiero en la pantalla del teléfono.
- Monitorear la temperatura del estabilizador. En nuestro pueblo en invierno no hay más de 200v en la entrada de la casa, llega a 140v. Por lo tanto, no tengo un estabilizador de 12kW, pero con tales parámetros y una larga carga de 2kW y teniendo en cuenta la ubicación del estabilizador en el nicho de la pared, el estabilizador se sobrecalienta y se apaga, tuve que agregar un par de ventiladores (con ellos, la temperatura permanece dentro de los límites aceptables). constantemente, ahora amasando: coloque los termostatos KSD9700 en 65 g, estamos esperando el invierno. No quiero monitorear este parámetro, porque No puedo influenciarlo. Pero después de agregar termostatos, debe controlar el resultado.
Hierro
Para resolver las tareas se eligió:
- PZEM004T - monitor de energía con UART. Le permite obtener los parámetros de la red eléctrica: un parámetro cada 0.6 segundos: voltaje, corriente, potencia, energía consumida, así como la frecuencia y el factor de potencia que no necesito. Utilizado con transformador de medida 1: 1000.
- ESP8266 NodeMCU, un microcontrolador universal con WiFi, que se adapta bien al tamaño PZEM004T, se puede conectar mediante bastidores utilizando los orificios disponibles en las placas. También hay un botón Flash útil en la placa NodeMCU (conectado a GPIO0); es conveniente usarlo para controlar el modo de funcionamiento, por ejemplo, para habilitar SoftAP.
Dado que el dispositivo se colocará en la carcasa metálica del estabilizador, soldará una antena externa al ESP. Traté de alimentar el ESP desde el PZEM004T (soldar los cables al condensador redondo, tiene alrededor de 7 V), no funcionó, cuando conecté el ESP, el voltaje cayó a 2 V. Pero el estabilizador ya tiene una fuente de alimentación de 5 V: para los ventiladores, lo que significa que se usará (pensé que era de 12 V, así que sufrí durante mucho tiempo para conectarle el ESP). No funcionó en ninguno, probé un montón de convertidores DC-DC hasta que lo entregué BP y no leyó la inscripción en él).

Firmware
Visto disponible en una red. Como de costumbre, no encontré uno adecuado y decidí escribir el mío.
Tomé mi propio proyecto para el relé Sonoff como base (la funcionalidad más simple, se enciende y apaga a través de HTTP y mediante un botón, no puede hacer nada más; se usa junto con
MacroDroid para
alimentar con
moderación el teléfono con una pantalla constantemente: la batería anterior explotó con una carga constante y se exprimió en la pantalla ) Pero además de la funcionalidad del relé, el ensamblaje tiene un servidor http, WiFi, configuración NTP, funciona con el botón GPIO0: diferentes acciones desde la duración de presionar, parpadear en cualquier luz (por ejemplo, contar los segundos de presionar un botón, reflejando el estado del relé y WiFi) ...
Naturalmente, modifiqué ligeramente la configuración:

Miré la biblioteca existente para trabajar con PZEM004T, no me gustó. Ella envía una solicitud, y luego en un bucle cerrado espera una respuesta. Esto no esta bien. Escribí mi biblioteca, asíncrona: le digo desde el programa principal qué parámetros quiero obtener, y luego verifico periódicamente si se reciben los datos requeridos:
Códigostatic PZEM004Tnb::flags flags = PZEM004Tnb::flags::all; static unsigned long lastReadEnergyTime = 0; if (Pzem004t.isDataUpdated()) { setLedState(3);
Tomé en cuenta que el PZEM004T considera un máximo de 9999 kW * h, luego se reinicia: implementé la contabilidad de desbordamiento. Implementado una cuenta de dos tasas. También implementé la contabilidad de los valores promedio de los parámetros: las lecturas se leen aproximadamente una vez cada 2 segundos, y en el
Monitoreo de las
personas es necesario transmitir datos cada 5 minutos, naturalmente promedio.
Añadido al sistema funciona con una serie de sensores DS18B20. Los datos se leen a su vez con un período de 2 segundos por sensor. Es decir hemos encontrado un sensor, hemos encontrado: estamos recibiendo datos, después de 2 segundos estamos buscando el siguiente, etc. Sensores terminados: comience desde el principio. Es decir cuando se usa solo un sensor, su período de sondeo es de 4 segundos. Para estos sensores, también se calcularon los valores promedio.
Los datos actuales del monitor de energía se pueden obtener a través de HTTP:

Todos los datos se almacenan en enteros cuando es necesario (por ejemplo, cuando se transfieren a
Monitoreo de personas ): se agrega un punto a la posición deseada.
Implementé la publicación de datos utilizando el
protocolo MQTT / UDP . Se agregó soporte para este protocolo y sensor PZEM004T a mi
monitor :

Este es mi proyecto de controlador de temperatura fallido (
Fiasco. La historia de un producto casero de IoT ), que decidí dejar solo como monitor.
Implementé la publicación de datos sobre
Monitoreo de personas :

¡Los muchachos de
People's Monitoring tienen mucho respeto! La transferencia de datos al servicio es elemental, hay un medio de ver los datos entrantes para depurar la interacción, simplemente puede administrar los datos del sensor.
El sistema puede construir gráficos de prueba (a continuación se muestra un desastre de los gráficos, solo un ejemplo):

También es posible notificar sobre el estado de los sensores (transmisión de datos deshabilitada temporalmente para la prueba):

Naturalmente, agregué la configuración de publicación de datos:

Resumen
Como resultado del monitoreo en tiempo real, ya apagó una de las dos minicomputadoras encendidas constantemente, configuró la hibernación en la computadora del bebé y reconfiguró el modo de suspensión en el reproductor de BD (utilizado solo para karaoke).
Cuando se recopilen estadísticas para los gráficos, tomaré más medidas.
¿Quién quiere hacerse con ese monitor de energía? En una cuenta personal para firmware (¡Freebie, señor!).
PS
Al desarrollar el dispositivo, me encontré con misticismo: cuando ESP funciona con una computadora USB, desde cualquier carga del teléfono, todo funciona. Cuando funciona con una fuente de alimentación integrada, no funciona. Utilicé un analizador lógico y un
simple alcance para la investigación: el poder del bloque azul parece estar en orden, las señales del ESP son correctas y el silencio posterior. Otra fuente de alimentación: todo funciona bien.
Por el método de búsqueda científica, me di cuenta de que cuando uso la fuente de alimentación integrada, la conecto a la fuente de alimentación PZEM004T, es decir, en este caso dos dispositivos se inician simultáneamente (con otras unidades de alimentación, no es posible el encendido simultáneo). Y uso el hardware UART para la comunicación, en el que ESP arroja mucha basura al inicio. PZEM004T no puede digerir esto al inicio y se congela. Si PZEM004T ya está encendido, iniciará ESP y basura en el puerto sin ningún problema.
La solución fue utilizar SoftwareSerial, todo funciona bien con él.
PPS
Para aquellos que quieren hacerse un dispositivo (¡y hay héroes!):
Descripción en el catálogo de dispositivos de vigilancia nacional