Bicicleta do monitor de energia PZEM004T e ESP8266, com People's Monitoring

Eu me perguntava - para onde vai a corrente dos fios? Parece que afogamos a casa com gás, na casa todas as lâmpadas são diodo, acendemos a máquina de lavar louça à noite, ainda não há saunas com fogão elétrico e a eletricidade apaga o tempo todo. A bagunça. Seria necessário segui-lo.
Bem-vindo ao gato…


O primeiro passo é o monitoramento geral do consumo


As tarefas


Decidi começar uma caçada a um rebanho de lebres. As lebres foram selecionadas:

  • Monitoramento de eletricidade via Internet. Eu tenho monitoramento instantâneo dos parâmetros de rede - no corredor, no painel, há um monitor de energia PZEM061; na tela, você pode ver a tensão, corrente e potência. Mas no lugar de exibir a energia consumida - algum tipo de abstração, com poucos dígitos. Mas o corredor não é confortável. Eu quero na tela do telefone.
  • Gráfico de consumo de eletricidade. Gostaria de saber quando ocorre o consumo excessivo?
  • Leituras do medidor pela Internet. Essa dor é a transferência de leituras para vendas de energia. É necessário dar-lhes provas do dia 15 ao dia 25 do mês. Costumo esquecer isso e eles começam a ligar para o robô e escrever spam. Ao mesmo tempo, quando eles se lembram - geralmente estou no trabalho, e o balcão está no meu posto na rua. Eu quero na tela do telefone.
  • Monitore a temperatura do estabilizador. Em nossa vila no inverno, não há mais de 200v na entrada da casa, chega a 140v. Portanto, não tenho um estabilizador de 12kW, mas com esses parâmetros e uma longa carga de 2kW e levando em consideração a localização do estabilizador no nicho da parede, o estabilizador superaquece e desliga, tive que adicionar alguns ventiladores (com eles a temperatura permanece dentro dos limites aceitáveis) - eles foram ativados anteriormente constantemente, agora amassar - coloque termostatos KSD9700 em 65g, estamos esperando o inverno. Eu não quero monitorar esse parâmetro, porque Eu não posso influenciá-lo. Mas depois de adicionar termostatos - você precisa controlar o resultado.

Ferro


Para resolver as tarefas, foi escolhido:

  • PZEM004T - monitor de energia com UART. Ele permite que você obtenha os parâmetros da rede elétrica - um parâmetro a cada 0,6 segundos: tensão, corrente, potência, energia consumida, bem como a frequência e o fator de potência que eu não preciso. Usado com transformador de medição 1: 1000.
  • O ESP8266 NodeMCU - um microcontrolador universal com WiFi, que se adapta bem ao tamanho PZEM004T - pode ser conectado por racks, usando os orifícios disponíveis nas placas. Há também um botão Flash útil na placa NodeMCU (conectada ao GPIO0) - é conveniente usá-lo para controlar o modo de operação - por exemplo, para ativar o SoftAP.

Dado o fato de que o dispositivo será colocado na carcaça de metal do estabilizador - soldou uma antena externa ao ESP. Tentei ligar o ESP do PZEM004T (soldar os fios ao capacitor redondo - são cerca de 7V) - não funcionou. Quando liguei o ESP, a tensão cai para 2V. Mas o estabilizador já possui uma fonte de alimentação de 5V - para ventiladores, o que significa que será usado (eu pensei que era de 12v, então sofri por um longo tempo para conectar um ESP a ele) - não funcionou em nada, tentei vários conversores DC-DC até o virar BP e não leu a inscrição).



Firmware


Olhou disponível em uma rede. Como sempre, não encontrei um adequado e decidi escrever o meu.
Tomei meu próprio projeto para o relé Sonoff como base (a funcionalidade mais simples, liga e desliga via HTTP e por um botão, não pode fazer mais nada; é usada em conjunto com o MacroDroid para alimentar o telefone com moderação na tela - a bateria anterior foi explodida por uma carga constante e pressionou a tela ) Mas, além da funcionalidade do relé, a montagem possui um servidor http, configurações de WiFi, NTP, funciona com o botão GPIO0 - ações diferentes da duração do pressionamento, piscando sob qualquer luz (por exemplo, contando os segundos de pressionar um botão, refletindo o estado do relé e do WiFi) ...

Naturalmente, modifiquei levemente as configurações:



Eu olhei para a biblioteca existente para trabalhar com o PZEM004T - não gostei. Ela envia uma solicitação e, em um circuito fechado, aguarda uma resposta. Isso não está certo. Escrevi minha biblioteca, assíncrona - digo a partir do programa principal quais parâmetros quero obter e depois verifico periodicamente se os dados necessários são recebidos:

Código
static PZEM004Tnb::flags flags = PZEM004Tnb::flags::all; static unsigned long lastReadEnergyTime = 0; if (Pzem004t.isDataUpdated()) { setLedState(3); //       // ... unsigned long currentTime = millis(); if ((currentTime - lastReadEnergyTime) > 6000) { //   1    flags = PZEM004Tnb::flags::all; lastReadEnergyTime = currentTime; }else{ flags = (PZEM004Tnb::flags)(PZEM004Tnb::flags::all ^ PZEM004Tnb::flags::energy); } } Pzem004t.updateData(flags); 


Levei em consideração que o PZEM004T considera um máximo de 9999 kW * h, depois é redefinido - implementei a contabilidade de excesso. Implementou uma conta de duas taxas. Também implementei a contabilização dos valores médios dos parâmetros - as leituras são lidas aproximadamente uma vez a cada 2 segundos, e no People's Monitoring é necessário transmitir dados a cada 5 minutos, naturalmente na média.

Adicionado ao sistema, trabalho com uma série de sensores DS18B20. Os dados são lidos por sua vez com um período de 2 segundos por sensor. I.e. estamos procurando um sensor, descobrimos - estamos recebendo dados, depois de 2 segundos estamos procurando o próximo, etc. Sensores terminados - comece do começo. I.e. ao usar apenas um sensor, seu período de pesquisa é de 4 segundos. Para esses sensores, os valores médios também foram calculados.

Os dados atuais do monitor de energia podem ser obtidos via HTTP:



Todos os dados são armazenados em números inteiros quando necessário (por exemplo, quando transferidos para o People's Monitoring ) - um ponto é adicionado à posição desejada.

Implementou a publicação de dados usando o protocolo MQTT / UDP . Adicionado suporte para este protocolo e sensor PZEM004T no meu monitor :


Este é meu projeto de controlador de temperatura com falha ( Fiasco. A história de um produto caseiro de IoT ), que decidi deixar como apenas um monitor.

Implementou a publicação de dados no People's Monitoring :



Os caras do People's Monitoring têm muito respeito! A transferência de dados para o serviço é elementar, existe um meio de ver os dados recebidos para depurar a interação, você pode simplesmente gerenciar os dados do sensor.
O sistema pode criar gráficos de teste (abaixo está uma bagunça dos gráficos, apenas um exemplo):


Também é possível notificar sobre o status dos sensores (transmissão de dados temporariamente desativada para o teste):


Naturalmente, adicionei configurações de publicação de dados:


Sumário


Como resultado do monitoramento em tempo real, ele já desligou um dos dois minicomputadores constantemente ativados, configurou a hibernação no computador do bebê e reconfigurou o modo de suspensão no BD player (usado apenas para karaokê).

Quando as estatísticas são coletadas para os gráficos, darei mais passos.

Quem quer se apossar desse monitor de energia - em uma conta pessoal de firmware (Freebie, senhor!).

PS


Ao desenvolver o dispositivo, me deparei com o misticismo - quando o ESP é alimentado por um computador USB, por qualquer carga de telefone, tudo funciona. Quando alimentado por uma PSU incorporada - não funciona. Usei um analisador lógico e um simplescópio para investigação - a energia do bloco azul parece estar em ordem, os sinais do ESP estão corretos e o silêncio volta. Outra fonte de alimentação - tudo funciona bem.

Pelo método da cutucada científica, percebi que, quando uso a PSU embutida, conecto-a à fonte de alimentação PZEM004T, ou seja, neste caso, dois dispositivos iniciam simultaneamente (com outras PSUs, a ativação simultânea não é possível). E eu uso o hardware UART para comunicação, no qual o ESP lança muito lixo na inicialização. O PZEM004T não pode digerir isso na inicialização e congela. Se o PZEM004T já estiver ativado, ele iniciará o ESP e o lixo na porta sem problemas.
A solução foi usar o SoftwareSerial, tudo funciona bem com ele.

PPS


Para aqueles que querem se tornar um dispositivo desse tipo (e existem heróis!):
Descrição no catálogo de dispositivos de monitoramento nacional

Source: https://habr.com/ru/post/pt453472/


All Articles