Leitor de medidor inteligente
Colocado sobreNesta postagem do blog, descrevo como você pode facilmente e por pouco dinheiro fazer você mesmo este registrador DSMR (DSMR é um acrônimo para “Requisitos Holandeses do Medidor Inteligente") pode fazer. Ao desenvolver o registrador DSMR, queremos alcançar o seguinte:
Com este documento em mãos e um pouco de pesquisa no Google, você logo encontrará mais informações. Não somos os primeiros e certamente não os únicos que sentem necessidade de ler o Smart Meter.
Por exemplo, Matthijs Kooijman escreveu um software verdadeiramente sublime para analisar os telegramas do medidor e armazená-los em variáveis pequenas. Claro que vamos usar esta biblioteca. você pode ele aqui baixar.
Se você não quiser usar o PCB do registrador DSMR, também precisará de um pedaço de placa experimental.
Os custos totais são cerca de € 20,-
- O hardware deve ser simples e barato de fazer;
- O firmware do registrador DSMR deve poder ser atualizado “Over The Air”;
- O histórico limitado deve ser armazenado e retido internamente;
- O registrador DSMR deve ser acessível por meio de um terminal externo (telnet);
- Os dados (históricos) devem poder ser recuperados do registrador DSMR via FTP para possível processamento externo;
- O registrador DSMR deve apresentar os dados do Smart Meter por meio de um navegador;
- Os dados devem poder ser solicitados por meio de uma API REST;
- Os dados lidos devem ser fáceis de processar posteriormente.
A tecnologia do Smart Meter
O Smart Meter envia dados através da porta P1 (RJ12) na forma de um telegrama. Como o Smart Meter faz isso e como um telegrama é estruturado é descrito em esse documento. O Capítulo 5 é particularmente interessante porque descreve como a interface física é construída. Isso mostra, entre outras coisas, que o Smart Meter deve ser capaz de fornecer 5 volts a 250mA, com uma redução de corrente de pico de curto prazo de 300mA. O Capítulo 6 descreve o protocolo e os vários campos.Com este documento em mãos e um pouco de pesquisa no Google, você logo encontrará mais informações. Não somos os primeiros e certamente não os únicos que sentem necessidade de ler o Smart Meter.
Por exemplo, Matthijs Kooijman escreveu um software verdadeiramente sublime para analisar os telegramas do medidor e armazená-los em variáveis pequenas. Claro que vamos usar esta biblioteca. você pode ele aqui baixar.
Suprimentos
A parte mais importante do registrador DSMR é o processador. Usamos um ESP8266 para isso porque, além de ser rápido e dotado de memória suficiente, também pode se comunicar via WiFi. Para manter os custos baixos, assumimos uma placa ESP-01 (black edition) com 1 MB de memória. Além disso, além de seis resistores e três capacitores (C4 não é realmente necessário, mas você pode adicioná-lo se tiver problemas para se conectar à sua rede WiFi), precisamos de um transistor NPN (BC547) e um regulador de tensão (MCP1700-3302E). Para conectar o registrador DSMR ao medidor inteligente, você precisa de um plugue RJ12 com um pedaço de fio. Comprei um cabo RJ12 na internet (com dois conectores RJ12 macho) e cortei ao meio.Se você não quiser usar o PCB do registrador DSMR, também precisará de um pedaço de placa experimental.
Os custos totais são cerca de € 20,-
Esquema do registrador DSMR
Abaixo você pode ver o esquema do logger DSMR: Esquema DSMR Logger
Grosso modo, o esquema consiste em quatro partes (a quinta, contendo os 5 volts e GND PWR_FLAGs, é tecnicamente exigida pelo KiCAD, mas na verdade não faz parte do esquema).
Em primeiro lugar, a conexão entre o Smart Meter e o registrador DSMR. É mais fácil soldar o cabo diretamente ao registrador DSMR, mas você também pode usar um conector macho Molex. Você não pode conectar os conectores Molex “ao contrário” (isso seria irritante porque então você conecta os 5 volts e o terra do Smart Meter ao terra e 5 volts do registrador DSMR, respectivamente, aos quais o ESP-01 definitivamente não sobreviverá! ). As conexões no registrador DSMR são as mesmas do plugue RJ12 (1 é conectado a 1, 2 a 2, etc.).
A segunda parte consiste no regulador de tensão que converte os 5 volts do Smart Meter em 3v3 para o ESP-01. Segundo o datasheet do ESP-01, ele normalmente usa 80mA e tem pico de 200-250mA. O MCP1700 utilizado pode fornecer no máximo 250mA. Suficiente para esta aplicação.
O próprio ESP-01 possui apenas 8 conexões. Dois para alimentação (Vcc e GND), um para comunicação com o Smart Meter (TxD) e três pinos que devem estar “altos” durante a inicialização (CH_PD, GPIO0 e GPIO2). Os dois últimos pinos (RST e TxD) não são usados.
A última parte do circuito, em torno do transistor BC547, tem duas funções. Em primeiro lugar, garante que os dados de 5 volts do Smart Meter não sobrecarreguem a entrada de 3,3 volts do ESP8266. Portanto, é principalmente um Level-Shifter. Mas também é um inversor que converte o sinal invertido do Smart Meter em um sinal não invertido para o ESP8266.
Em primeiro lugar, a conexão entre o Smart Meter e o registrador DSMR. É mais fácil soldar o cabo diretamente ao registrador DSMR, mas você também pode usar um conector macho Molex. Você não pode conectar os conectores Molex “ao contrário” (isso seria irritante porque então você conecta os 5 volts e o terra do Smart Meter ao terra e 5 volts do registrador DSMR, respectivamente, aos quais o ESP-01 definitivamente não sobreviverá! ). As conexões no registrador DSMR são as mesmas do plugue RJ12 (1 é conectado a 1, 2 a 2, etc.).
A segunda parte consiste no regulador de tensão que converte os 5 volts do Smart Meter em 3v3 para o ESP-01. Segundo o datasheet do ESP-01, ele normalmente usa 80mA e tem pico de 200-250mA. O MCP1700 utilizado pode fornecer no máximo 250mA. Suficiente para esta aplicação.
O próprio ESP-01 possui apenas 8 conexões. Dois para alimentação (Vcc e GND), um para comunicação com o Smart Meter (TxD) e três pinos que devem estar “altos” durante a inicialização (CH_PD, GPIO0 e GPIO2). Os dois últimos pinos (RST e TxD) não são usados.
A última parte do circuito, em torno do transistor BC547, tem duas funções. Em primeiro lugar, garante que os dados de 5 volts do Smart Meter não sobrecarreguem a entrada de 3,3 volts do ESP8266. Portanto, é principalmente um Level-Shifter. Mas também é um inversor que converte o sinal invertido do Smart Meter em um sinal não invertido para o ESP8266.
O hardware
Como prova de conceito, soldei uma primeira versão do registrador DSMR em uma placa experimental. DSRM - Impressão experimental
Aqui você pode ver o resultado final conectado ao Smart Meter:
DSRM - Experimento PCB completo
Quando tudo funcionou conforme planejado, desenhei uma placa de circuito impresso com KiCAD.
Projetar registrador DSRM
Instalar firmware no ESP-01
Um dos objetivos do projeto é que o firmware “sobre o ar” (pelo ar) deve poder ser colocado no registrador DSMR. Também deu certo, mas você sempre terá que colocar um firmware no ESP-01 que ofereça essa funcionalidade pela primeira vez. Portanto, você não pode evitar enviar o firmware por meio de um meio com fio para o registrador DSMR pelo menos uma vez. Além disso, durante o desenvolvimento do software, várias vezes aconteceu comigo de introduzir um bug que fazia o upload OTA não funcionar mais. Mesmo assim, a única maneira é enviar o firmware, sem bug, para o registrador DSMR por fio.Você precisa de um programador para programar o ESP-01. Outra solução barata é carregar um programa especial em um Arduino UNO e então fazer uma série de conexões entre o Arduino e a placa ESP-01.
A maneira mais fácil é comprar um “Adaptador ESP-01 para USB ” e fazer uma pequena modificação (veja minha postagem no blog).
O software
Em princípio, o software é muito simples (veja o exemplo que acompanha a biblioteca DMSR). No entanto, se você quiser mais algumas opções, rapidamente se torna um projeto e tanto!O registrador DSMR usa as seguintes bibliotecas:
Estes devem, portanto, ser instalados em seu ambiente Arduino -IDE.
Também usamos o servidor FTP simples de David Paiva. Isso é incluído como fonte diretamente no esboço DSMRlogger2HTTP (duas guias) e, portanto, você usa aspas (“) em vez de sinais de menor e maior que para a inclusão.
Também usamos o servidor FTP simples de David Paiva. Isso é incluído como fonte diretamente no esboço DSMRlogger2HTTP (duas guias) e, portanto, você usa aspas (“) em vez de sinais de menor e maior que para a inclusão.
O tratamento especial foi necessário porque fiz pequenas alterações na fonte e não quero que sejam perdidas em uma atualização da biblioteca.
O esboço consiste em um total de oito guias. O programa principal, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff e menuStuff. Você pode baixar o software como um arquivo ZIP em GitHub e, em seguida, descompacte na pasta de projetos Arduino . Se você tiver o git instalado em sua máquina, também pode clonar o repositório com o comando:
Ele então criará, no diretório onde você executar o comando (de preferência a pasta de projetos Arduino ), uma pasta chamada “DSMRlogger2HTTP” contendo todo o código, inclusive um diretório “data” para armazenar o sistema de arquivos ESP. -01 (este também contém o arquivo “index.html”).
Em pseudocódigo, o programa se parece com isso:
O esboço consiste em um total de oito guias. O programa principal, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff e menuStuff. Você pode baixar o software como um arquivo ZIP em GitHub e, em seguida, descompacte na pasta de projetos Arduino . Se você tiver o git instalado em sua máquina, também pode clonar o repositório com o comando:
git clone https://github.com/mrWheel/DSMRlogger2HTTP.git
Ele então criará, no diretório onde você executar o comando (de preferência a pasta de projetos Arduino ), uma pasta chamada “DSMRlogger2HTTP” contendo todo o código, inclusive um diretório “data” para armazenar o sistema de arquivos ESP. -01 (este também contém o arquivo “index.html”).
Em pseudocódigo, o programa se parece com isso:
O programa principal é repetido infinitamente e consiste nas seguintes etapas:
Comece a usar o DSMRlogger
Antes de poder usar o DSMRlogger, você precisa carregar não apenas o firmware, mas também um sistema de arquivos com conteúdo para o DSMRlogger. Por uma questão de conveniência, vou assumir que você sabe como fazer o upload do firmware e me limitarei a explicar como obter o sistema de arquivos no DSMRlogger.Se não, leia meu outro blog sobre isso tornando o ArduinoIDE adequado para o ESP8266.
No Arduino IDE, clique na seguinte opção de menu:
Upload de dados Arduino IDE
Todos os arquivos que estão no diretório “data” deste projeto agora são colocados em uma parte especial da memória do ESP-01.
NB! O upload do sistema de arquivos dá errado se você tiver o “Serial Monitor” aberto!
Agora você pode conectar o DSMRlogger ao Smart Meter, mas ele não conhece os dados da sua rede WiFi. Portanto, ele cria um ponto de acesso (AP) no qual você deve registrar seu computador. Você pode reconhecer o AP pelo nome “ESP01‑DSMR‑xx‑”. Quando você estiver conectado ao AP, inicie seu navegador e vá para o conforme indicado no nome do AP. Você entrará no menu de configuração WiFi:
NB! O upload do sistema de arquivos dá errado se você tiver o “Serial Monitor” aberto!
Agora você pode conectar o DSMRlogger ao Smart Meter, mas ele não conhece os dados da sua rede WiFi. Portanto, ele cria um ponto de acesso (AP) no qual você deve registrar seu computador. Você pode reconhecer o AP pelo nome “ESP01‑DSMR‑xx‑
configuração wi-fi
Ponto de acesso de configuração WiFi
Clique no botão [Configurar WiFi], após o qual aparecerá uma página conforme mostrado à direita.
Nesta página, selecione a rede WiFi que pertence a você e digite a senha. Em seguida, pressione o botão [salvar].
Se tudo correu bem, você verá o seguinte texto:
Nesta página, selecione a rede WiFi que pertence a você e digite a senha. Em seguida, pressione o botão [salvar].
Se tudo correu bem, você verá o seguinte texto:
Confirmação WiFi salvo
O DSMRlogger agora irá reiniciar e se conectar à sua rede WiFi. Durante a inicialização, você pode ver no LED azul o que o DSMRlogger está fazendo
1. 3 flashes lentos - início inicial
2. 5 piscadas rápidas - conectado à rede WiFi
3. Depois disso, o LED azul pisca toda vez que um novo telegrama é processado
Se o LED permanecer aceso após as três primeiras piscadas lentas, o DSMRlogger não conseguiu se conectar à sua rede WiFi e reiniciará seu próprio AP. Isso pode ocorrer porque sua rede estava temporariamente indisponível ou difícil de acessar ou porque você não inseriu os detalhes da sua rede WiFi corretamente. Nesse caso, o DSMRlogger reinicia automaticamente após alguns minutos e tenta se reconectar à sua rede WiFi. Este processo é repetido até que uma conexão seja estabelecida ou até que você insira novamente os detalhes de sua rede WiFi conforme descrito acima.
1. 3 flashes lentos - início inicial
2. 5 piscadas rápidas - conectado à rede WiFi
3. Depois disso, o LED azul pisca toda vez que um novo telegrama é processado
Se o LED permanecer aceso após as três primeiras piscadas lentas, o DSMRlogger não conseguiu se conectar à sua rede WiFi e reiniciará seu próprio AP. Isso pode ocorrer porque sua rede estava temporariamente indisponível ou difícil de acessar ou porque você não inseriu os detalhes da sua rede WiFi corretamente. Nesse caso, o DSMRlogger reinicia automaticamente após alguns minutos e tenta se reconectar à sua rede WiFi. Este processo é repetido até que uma conexão seja estabelecida ou até que você insira novamente os detalhes de sua rede WiFi conforme descrito acima.
A Interface da Web do DSMRlogger
Quando o DSMRlogger estiver conectado à sua rede WiFi, você pode acessar o endereço com seu navegador:http://ESP01-DSMR.local/A página abaixo aparecerá em seu navegador. Os dados que você vê são atualizados automaticamente.
DSMR GUI
Ao clicar nas guias, você pode visualizar diferentes tipos de dados.
Visão geral semanal do DSMR
sessão telnet:
Para se conectar ao DSMRlogger via telnet, digite o seguinte comando em uma janela de terminal:telnet ESP01-DSMR.localDepois disso, você pode ver ao vivo o que o DSMRlogger está fazendo. Ao pressionar
DSMR Telnet
NB! O DSMRlogger pode manipular apenas uma sessão telnet ativa.
Em uma postagem de blog de acompanhamento, mostrarei como usar esses dados no Home-Assistant.
API REST
Se você deseja usar os dados do Smart Meter de outro programa, pode recuperá-los solicitando esta URL:http://ESP01-DSMR.local/getActual.jsonO DSMRlogger então retorna uma string json que se parece com esta:
>
Em uma postagem de blog de acompanhamento, mostrarei como usar esses dados no Home-Assistant.
Atualizar firmware
Chegará um momento em que você desejará ajustar o firmware do DSMRlogger de acordo com suas próprias percepções e necessidades.Fica então chato ter que ir até o armário do medidor a cada ajuste para desconectar o DSMRlogger, retirar o ESP-01 do logger e fornecer um novo firmware com um programador de sua preferência. Felizmente, você não precisa. No IDE Arduino , você não pode selecionar apenas as portas seriais às quais o DSMRlogger está conectado. O menu de seleção também contém “Portas de rede”:
Seleção de porta IDE Arduino
No meu caso, a porta de rede “ESP01‑DSMR em 192.168.12.142” é a porta de rede do meu DSMRlogger. Ao selecionar esta porta e compilar e carregar o novo firmware, ele será enviado sem fio para o DSMRlogger (você notará que isso é ainda mais rápido do que com um cabo USB !).
Apenas certifique-se de que o firmware que você carregou não contém nenhum bug irritante. Já me aconteceu várias vezes introduzir um bug que faz com que o upload de firmware Over The Air pare de funcionar (geralmente todo o DSMRlogger para de funcionar em tal caso) para que eu ainda tenha que ir ao armário do medidor...
Apenas certifique-se de que o firmware que você carregou não contém nenhum bug irritante. Já me aconteceu várias vezes introduzir um bug que faz com que o upload de firmware Over The Air pare de funcionar (geralmente todo o DSMRlogger para de funcionar em tal caso) para que eu ainda tenha que ir ao armário do medidor...
O kit do registrador DSRM
A versão 3 tem a mesma funcionalidade da versão 1, mas também possui algumas atualizações que facilitam a soldagem.
Opencircuit juntamente com Willem Aandewiel, montou um kit com PCB e todas as peças necessárias para construir você mesmo este registrador DSMR.
Com este kit, você mesmo pode construir o registrador DSRM em um PCB claramente estruturado. Isso não apenas economiza tempo, mas também fica muito mais bonito!
Com este kit, você mesmo pode construir o registrador DSRM em um PCB claramente estruturado. Isso não apenas economiza tempo, mas também fica muito mais bonito!