
Un projet pour lire les lectures du compteur d'un compteur intelligent, écrire dans une base de données et visualiser.



data dossier avec de vieux compteurs privés qui ont ensuite été entrés dans la base de données. python contient les scripts Python qui sont utilisés pour lire le support du compteur.
Un modèle Raspberry Pi A est utilisé. Deux lecteurs IR sont connectés à cela via USB. Commandez ici: Weidmann Elektronik meublé des compteurs intelligents est l'EHZ de la société EMH.
Installez l'image Raspberry Pi Image Raspberry Pi (Raspbian) sur une carte SD (min. 8 Go). Les instructions font des paramètres standard, pour être au moment du temps et élargir la mémoire:
sudo raspi-config
sudo apt-get upgrade all Copiez Python Scripts python sur la framboise. Par exemple via FTP. J'ai copié les données dans le dossier homepiDocumentsEHZ .
Vous devez maintenant ajuster les scripts Python. Pour tester les messages, le compteur d'électricité envoie tout afin que vous puissiez appeler le script pythonSensortest.py . Avant cela, vous devez vous assurer que la bonne connexion analogique y est également entrée. Et bien sûr, vous devez également faire attention à la parité et à arrêter les bits. Par défaut, la tête de lecture IR est liée à devttyUSB0 . Pour regarder, vous pouvez rechercher devant cela sous les appareils suivants:
cd dev Après le pythonSensortest.py , les différents messages devraient venir. Cependant, seul l'encolure pertinente qui comprend les lectures du compteur est émise.
# 77078181c78203ff0101010104454d4801
# 77070100000009ff010101010b06454d480104c56ec5bd01
# 77070100020800ff6400000001621e52ff5600020f37e201
# 77070100020801ff0101621e52ff5600020f37e201 //Zählerstand
# 77070100100700ff0101621b52ff550000000001 //momentaner Bezug / Leistung
# 77078181c78205ff01726201650136ece901018302739899a4350308b2be3a7022b69067cf0a021eb85e02a2f95810a06a6a1f5e48ed56bc3a53e771f68d66540c260e6d1c010101+ Vous regardez maintenant quels indicateurs OBIS y sont reconnus. Normalement, cela devrait être pour la référence 01-08-01 et pour la livraison 02-08-01 . Dans l'exemple, c'est dans la ligne 3.: 77070100 020801 FF0101621E5600020F37E201 La valeur que vous voulez est entre le ff56 et 01 ici: 00020f37e2 . Cette valeur hexagonale est ensuite convertie en une valeur entière de 10 ^ 4. Ensuite, vous avez le résultat souhaité.
Si vous avez trouvé votre valeur correspondante, vous remarquerez la séquence numérique qui est l'indicateur OBIS. Ici, par exemple: 77070100020801ff . Ceci est ensuite entré dans le script en tant que paramètre de recherche. Mes scripts sont basés sur le script d'Alexander Kabza. Je l'ai traité de telle manière que dès qu'un message a été lu, la valeur est écrite dans une base de données. Je fais ensuite un script shell exécutable sur le script Python.
Script shell:
#! /bin/bash
sudo python /home/pi/Documents/EHZ/strombezug.pyRendre exécutable:
chmod +x strombezug.shJ'ai ensuite laissé le script s'exécuter une fois à 23 h 59. par Cronjob. Cronjob lus avec
crontab -eCréer / modifier. Et avec
crontab -lVous pouvez afficher tous les cronjobs.
59 23 * * * /home/pi/Documents/EHZ/stromlieferung.sh
59 23 * * * /home/pi/Documents/EHZ/strombezug.shJe comprends donc ce que le système photovoltaïque a fait un jour ou ce que la maison consomme en électricité par jour et peut ensuite présenter le tout visualisé plus tard.
sudo apt-get mysql-server mysql-client apache2 php5-cgi php5-mysql-MySQL User Créer un utilisateur et créer une base de données -Create SQL -MySQL Accès aux données dans les scripts Python / Save / dans l'index.php et api.php
La base de données contient une table qui enregistre le compteur. Un compteur a un ID, un nom et un décalage. Le décalage est utilisé pour enregistrer l'état du compteur lorsqu'un nouveau compteur est utilisé. Vous créez donc un nouveau compteur avec l'échelle OFFSET = METER de l'ancien compteur. Vous pouvez donc effectuer le calcul précisément plus tard.
Il y a aussi un tableau pour la couverture et la livraison dans lesquels l'ID du compteur, un horodatage et l'état du compteur sont enregistrés. Si vous le souhaitez, vous pouvez également exécuter un script, qui écrit la valeur actuelle du compteur, c'est-à-dire les performances / référence actuelles à un tableau chaque seconde. Bien sûr, vous pouvez également résoudre ce problème différemment.
Todo Create-SQL
Pour la visualisation, j'ai écrit une petite API qui, par exemple, renvoie les valeurs par mois par an ou les valeurs par an au format JSON. Pour ensuite afficher l'ensemble, j'utilise le graphique OSS.js. Puis laissez l'API obtenir les valeurs en utilisant AJAX.
?q=yearly par an (livraison)
?q=yearlybezug une valeur par an (référence)
?q=year&y=xxxx une valeur par mois pour l'année xxxx
?q=year une valeur par mois pour toutes les années existantes
?q=c renvoie les valeurs actuelles de l'échelle du compteur (livraison + couverture)
?q=w donne les valeurs des 7 derniers jours en arrière
http://wiki.volkszaehler.org/sml http://www.kabza.de/myhome/rpi.html https://github.com/chart.js/releases https://jquery.com