
Un proyecto para leer las lecturas del medidor de un medidor inteligente, escribir en una base de datos y visualizar.



data carpeta con medidores antiguos privados que posteriormente se ingresaron en la base de datos. python contiene los scripts de Python que se utilizan para leer el soporte del medidor.
Se utiliza un modelo A de frambuesa Pi . Dos lectores IR están conectados a esto a través de USB. Pedido aquí: Weidmann Elektronik amuebló los medidores inteligentes son los EHZ de la Compañía EMH.
Instale la imagen de Raspberry Pi Raspberry Pi (Raspbian) en una tarjeta SD (min. 8GB). Las instrucciones realizan configuraciones estándar, como para ser el tiempo y expandir la memoria:
sudo raspi-config
sudo apt-get upgrade all Copie Python Scripts python a la Raspberry. Por ejemplo a través de FTP. Copié los datos en la carpeta homepiDocumentsEHZ .
Ahora todavía tienes que ajustar los scripts de Python. Para probar qué mensajes, el medidor de electricidad envía todo para que pueda llamar al script pythonSensortest.py . Antes de eso, debe asegurarse de que la conexión analógica correcta también se ingrese allí. Y, por supuesto, también debe prestar atención a la paridad y detener los bits. Por defecto, el cabezal de lectura IR está vinculado a devttyUSB0 . Para mirar, puede buscar frente a él bajo los siguientes dispositivos:
cd dev Después de pythonSensortest.py , deben llegar los diferentes mensajes. Sin embargo, solo se emite el escote relevante que incluye las lecturas del medidor.
# 77078181c78203ff0101010104454d4801
# 77070100000009ff010101010b06454d480104c56ec5bd01
# 77070100020800ff6400000001621e52ff5600020f37e201
# 77070100020801ff0101621e52ff5600020f37e201 //Zählerstand
# 77070100100700ff0101621b52ff550000000001 //momentaner Bezug / Leistung
# 77078181c78205ff01726201650136ece901018302739899a4350308b2be3a7022b69067cf0a021eb85e02a2f95810a06a6a1f5e48ed56bc3a53e771f68d66540c260e6d1c010101+ Ahora mira qué indicadores de Obis se reconocen allí. Normalmente, esto debería ser para referencia 01-08-01 y para la entrega 02-08-01 . En el ejemplo, esto está en el 3. Línea: 77070100 020801 FF0101621E5600020f37e201 El valor que desea es entre ff56 y 01 aquí: 00020f37e2 . Este valor hexadecimal se convierte en un valor entero en 10^4. Entonces tienes el resultado deseado.
Si ha encontrado su valor correspondiente, notará la secuencia de números que es el indicador OBIS. Aquí, por ejemplo: 77070100020801ff . Esto se ingresa en el script como parámetro de búsqueda. Mis guiones se basan en el guión de Alexander Kabza. Lo he procesado de tal manera que tan pronto como se ha leído un mensaje, el valor se escribe en una base de datos. Luego hago un script de shell ejecutable sobre el script de Python.
Script de shell:
#! /bin/bash
sudo python /home/pi/Documents/EHZ/strombezug.pyHacer ejecutable:
chmod +x strombezug.shLuego dejé que el guión se ejecute una vez a las 11:59 p.m. por Cronjob. Cronjobs leído con
crontab -eCrear / modificar. Y con
crontab -lPuede mostrar todos los cronjobs.
59 23 * * * /home/pi/Documents/EHZ/stromlieferung.sh
59 23 * * * /home/pi/Documents/EHZ/strombezug.shAsí que obtengo lo que el sistema fotovoltaico ha hecho un día o lo que la casa consume con electricidad por día y luego puede presentar todo visualizado más tarde.
sudo apt-get mysql-server mysql-client apache2 php5-cgi php5-mysql-MySQL User crea el usuario y crea la base de datos -create los datos de acceso SQL -MYSQL en los scripts / guardar / en el index.php y API.php
La base de datos contiene una tabla que guarda el contador. Un contador tiene una identificación, un nombre y un desplazamiento. El desplazamiento se usa para salvar el estado del mostrador cuando se usa un nuevo contador. Entonces crea un nuevo contador con la escala compensada = medidor del contador anterior. Entonces puede hacer el cálculo con precisión más tarde.
También hay una tabla para la cubierta y la entrega en la que se guarda la identificación del medidor, una marca de tiempo y el estado del medidor. Si lo desea, también puede ejecutar un script, que escribe el valor actual del mostrador, es decir, el rendimiento / referencia actual a una tabla cada segundo. Por supuesto, también puedes resolver eso de manera diferente.
TODO CREATE-SQL
Para la visualización, escribí una pequeña API que, por ejemplo, devuelve los valores por mes al año o los valores por año en el formato JSON. Para luego mostrar el conjunto, uso el OSS Chart.js. Y luego deje que la API obtenga los valores usando AJAX.
?q=yearly un valor por año (entrega)
?q=yearlybezug un valor por año (referencia)
?q=year&y=xxxx Un valor por mes para el año xxxx
?q=year un valor por mes para todos los años existentes
?q=c Devuelve los valores actuales de la escala del medidor (entrega + cobertura)
?q=w da los valores de los últimos 7 días atrás
http://wiki.volkszaehler.org/sml http://www.kabza.de/myhome/rpi.html https://github.com/chart.js/releases https://jquery.com