
Um projeto para ler as leituras do medidor de um medidor inteligente, escrever em um banco de dados e visualizar.



data Pasta com medidores antigos privados que foram posteriormente inseridos no banco de dados. python contém os scripts Python que são usados para ler o suporte do medidor.
Um modelo A Raspberry Pi é usado. Dois leitores de RI estão conectados a isso via USB. Ordem aqui: Weidmann Elektronik mobiliou os medidores inteligentes são o EHZ da empresa EMH.
Instale a imagem Raspberry Pi Image Raspberry Pi (Raspbian) em um cartão SD (min. 8 GB). As instruções fazem configurações padrão, como sobre o tempo e expandir a memória:
sudo raspi-config
sudo apt-get upgrade all Copie os scripts Python python para a framboesa. Por exemplo, via FTP. Copiei os dados na pasta homepiDocumentsEHZ .
Agora você ainda precisa ajustar os scripts do Python. Para testar quais mensagens o medidor de eletricidade envia tudo para que você possa chamar o script pythonSensortest.py . Antes disso, você deve garantir que a conexão analógica certa também seja inserida lá. E é claro que você também precisa prestar atenção à paridade e parar os bits. Por padrão, o chefe de leitura do IR está vinculado a devttyUSB0 . Para olhar para você, você pode pesquisar na frente, sob os seguintes dispositivos:
cd dev Após o pythonSensortest.py , as diferentes mensagens devem vir. No entanto, apenas o decote relevante que inclui as leituras do medidor é emitido.
# 77078181c78203ff0101010104454d4801
# 77070100000009ff010101010b06454d480104c56ec5bd01
# 77070100020800ff6400000001621e52ff5600020f37e201
# 77070100020801ff0101621e52ff5600020f37e201 //Zählerstand
# 77070100100700ff0101621b52ff550000000001 //momentaner Bezug / Leistung
# 77078181c78205ff01726201650136ece901018302739899a4350308b2be3a7022b69067cf0a021eb85e02a2f95810a06a6a1f5e48ed56bc3a53e771f68d66540c260e6d1c010101+ Agora você olha para quais indicadores OBIs são reconhecidos lá. Normalmente, isso deve ser para referência 01-08-01 e para entrega 02-08-01 . ff56 exemplo, isso está 01 020801 00020f37e2 Esse valor hexadecimal é então convertido em um valor inteiro por 10^4. Então você tem o resultado desejado.
Se você encontrou o seu valor correspondente, notará a sequência numérica que é o indicador OBIS. Aqui, por exemplo: 77070100020801ff . Isso é então inserido no script como um parâmetro de pesquisa. Meus scripts são baseados no roteiro de Alexander Kabza. Eu o processei de tal maneira que, assim que uma mensagem for lida, o valor é gravado em um banco de dados. Em seguida, faço um script de shell executável sobre o script python.
Script de shell:
#! /bin/bash
sudo python /home/pi/Documents/EHZ/strombezug.pyFazer executável:
chmod +x strombezug.shEntão deixei o script funcionar uma vez às 23h59. por Cronjob. Cronjobs lê com
crontab -eCriar / modificar. E com
crontab -lVocê pode exibir todos os Cronjobs.
59 23 * * * /home/pi/Documents/EHZ/stromlieferung.sh
59 23 * * * /home/pi/Documents/EHZ/strombezug.shEntão, recebo o que o sistema fotovoltaico fez um dia ou o que a casa consome com eletricidade por dia e pode apresentar tudo visualizado posteriormente.
sudo apt-get mysql-server mysql-client apache2 php5-cgi php5-mysql-MySQL Usuário Crie usuário e crie banco de dados -Create SQL -MYSQL Access Data nos scripts python / salvar / no index.php e api.php
O banco de dados contém uma tabela que salva o contador. Um contador tem um ID, um nome e um deslocamento. O deslocamento é usado para salvar o estado do contador quando um novo contador é usado. Então você cria um novo contador com a escala de deslocamento = medidor do contador antigo. Assim, você pode fazer o cálculo com precisão mais tarde.
Há também uma tabela para a cobertura e a entrega na qual o ID do medidor, um registro de data e hora e o estado do medidor são salvos. Se desejar, você também pode executar um script, que grava o valor atual do contador, ou seja, o desempenho / referência atual a uma tabela a cada segundo. Obviamente, você também pode resolver isso de maneira diferente.
TODO create-sql
Para a visualização, escrevi uma pequena API que, por exemplo, retorna os valores por mês por ano ou os valores por ano no formato JSON. Para exibir o todo, eu uso o OSS Chart.js. E então deixe a API obter os valores usando AJAX.
?q=yearly um valor por ano (entrega)
?q=yearlybezug um valor por ano (referência)
?q=year&y=xxxx um valor por mês para o ano xxxx
?q=year um valor por mês para todos os anos existentes
?q=c retorna os valores atuais da escala do medidor (entrega + tampa)
?q=w dá os valores dos últimos 7 dias atrás
http://wiki.volkszaehler.org/sml http://www.kabza.de/myhome/rpi.html https://github.com/chart.js/releases https://jquery.com.com