Leitor de medidor inteligente

Colocado sobre
Nesta 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:
  • 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.
Em uma postagem de blog de acompanhamento, mostrarei como podemos enviar os dados para um corretor MQTT e como configurar o Home-Assistant para apresentar esses dados no Home-Assistant.


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 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.

O hardware

Como prova de conceito, soldei uma primeira versão do registrador DSMR em uma placa experimental.
DSRM - Impressão experimental DSRM - Impressão experimental
Aqui você pode ver o resultado final conectado ao Smart Meter:
DSRM - Experimento PCB completo DSRM - Experimento PCB completo
Quando tudo funcionou conforme planejado, desenhei uma placa de circuito impresso com KiCAD.
Projetar registrador DSRM 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.
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:

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 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:
configuração wi-fi configuração wi-fi
Ponto de acesso de configuração WiFi 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:
Confirmação WiFi salvo 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.

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 DSMR GUI
Ao clicar nas guias, você pode visualizar diferentes tipos de dados.
Visão geral semanal do DSMR 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.local
Depois disso, você pode ver ao vivo o que o DSMRlogger está fazendo. Ao pressionar você verá um menu aparecer com o qual você pode organizar alguns assuntos domésticos. Você fecha a sessão telnet com a combinação de teclas ctrl+] q (mantenha pressionada a tecla control, pressione “]”, solte ambas e pressione “q”).
DSMR Telnet DSMR Telnet
NB! O DSMRlogger pode manipular apenas uma sessão telnet ativa.

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.json
O 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 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...

O kit do registrador DSRM

Não está mais disponível
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!
postado por Local na rede Internet Willem Aandewiel (1955) tem formação em eletrônica e técnicas digitais. No entanto, na maior parte de sua vida profissional, ele trabalhou em automação, onde trabalhou em praticamente todas as disciplinas, de programador a líder de projeto e gerente de projeto. Willem foi um dos primeiros holandeses com um microcomputador (KIM-1, 1976) numa época em que o PC ainda não havia sido inventado. Actualmente dedica-se principalmente à concepção e produção de pequenos circuitos electrónicos com microprocessadores. Sua 'missão na vida' é fazer as pessoas se entusiasmarem em fazer seus próprios circuitos eletrônicos, microcomputadores e programação.

Comentários

The Netherlands Verkenner
Aqui, o mesmo problema que Joahn Krabe escreveu em 12 de outubro de 2019. A conexão do telefone / PC DSMR (versão 4.5) funciona, mas os dados do medidor inteligente permanecem secretos, aqui também um medidor Kamstrup 382, fonte de alimentação de 5 volts fornecida, sem resultado. O que está errado? O medidor funciona com um monitor P1 com o TOON. Obrigado por sugestões.
Colocado sobre 
The Netherlands Johan Krabbe
Bart: https://github.com/mrWheel/DSMRlogger2HTTP" rel="nofollow" target="_blank">https://github.com/mrWheel/DSMRlogger2HTTP O arquivo KiCad contém os arquivos necessários para as impressões, funciona perfeitamente
Colocado sobre 
Belgium Bart De Pauw
Olá Willem, já procurei, também no seu site, mas não consegui encontrar se também pode ser usado para telegramas DSMR 5.0.2 P1 (na versão atual). Aparentemente os medidores digitais Fluvius/Eandis belgas são um pouco diferentes. então o DSMR holandês 4 https://www.feebel.be/data/content/file/201804-technische-specificaties-gebruikerspoorten-digitale-meters.pdf" rel="nofollow" target="_blank">https://www.feebel.be/data/content/file/201804-technische-specificaties-gebruikerspoorten-digitale-meters.pdf Talvez seja a hora de lançar uma v5? Sempre disposto a ajudar nos testes de versões (sou Engenheiro Eletrônico desde 1992) Aliás, vi que os kits DIY não estavam mais disponíveis? Existe uma maneira de liberar os arquivos da placa de impressão para que possamos fazê-los nós mesmos? Desde já agradeço por este projeto maravilhoso (e então vou esperar um pouco para começar um sozinho, seria inútil depois de todo o trabalho que você já colocou nele...)
Colocado sobre 
1
The Netherlands Wim
A impressão não está mais disponível. Existe outra maneira de obter a impressão? E mais uma pergunta: você está falando de um ESP-01, mas não quer dizer um ESP-01S? Possui o dobro de memória flash. Se ele quiser usar OTA, acho que você precisa disso. Ou estou errado agora?
Colocado sobre 
The Netherlands Wim Nijntjes
Question: Por que você não usa o pino 2 do medidor. Agora está conectado a 5 volts. Ele pode ser facilmente conectado ao GPIO-0/2 (acoplador óptico interno) e você tem um aperto de mão. Talvez o FTP funcione então.
Colocado sobre 
Webwinkelkeur Kiyoh Trustpilot Opencircuit