
Sebuah proyek untuk membacakan pembacaan meter meter pintar, menulis dalam database dan untuk memvisualisasikan.



data folder dengan meter lama pribadi yang kemudian dimasukkan ke dalam database. python berisi skrip Python yang digunakan untuk membacakan dudukan meter.
Model Raspberry Pi A digunakan. Dua pembaca IR terhubung dengan ini melalui USB. Pesanan di sini: Weidmann Elektronik melengkapi meter pintar adalah EHZ dari EMH Company.
Instal Raspberry Pi Image Raspberry Pi Image (Raspbian) pada kartu SD (Min. 8GB). Instruksi membuat pengaturan standar, untuk menjadi waktu dan memperluas memori:
sudo raspi-config
sudo apt-get upgrade all Salin skrip python python ke raspberry. Misalnya melalui FTP. Saya menyalin data ke homepiDocumentsEHZ folder.
Sekarang Anda masih harus menyesuaikan skrip Python. Untuk menguji pesan mana meter listrik mengirimkan semuanya sehingga Anda dapat memanggil skrip pythonSensortest.py . Sebelum itu, Anda harus memastikan bahwa koneksi analog yang tepat juga dimasukkan di sana. Dan tentu saja Anda juga harus memperhatikan paritas dan berhenti bit. Secara default, kepala pembacaan IR terikat pada devttyUSB0 . Untuk melihat Anda dapat mencari di depannya di bawah perangkat berikut:
cd dev Setelah pythonSensortest.py , pesan yang berbeda harus datang. Namun, hanya garis leher yang relevan yang mencakup pembacaan meter yang dikeluarkan.
# 77078181c78203ff0101010104454d4801
# 77070100000009ff010101010b06454d480104c56ec5bd01
# 77070100020800ff6400000001621e52ff5600020f37e201
# 77070100020801ff0101621e52ff5600020f37e201 //Zählerstand
# 77070100100700ff0101621b52ff550000000001 //momentaner Bezug / Leistung
# 77078181c78205ff01726201650136ece901018302739899a4350308b2be3a7022b69067cf0a021eb85e02a2f95810a06a6a1f5e48ed56bc3a53e771f68d66540c260e6d1c010101+ Sekarang Anda melihat indikator OBIS mana yang diakui di sana. Biasanya, ini harus untuk referensi 01-08-01 dan untuk pengiriman 02-08-01 . Dalam contoh, ini ada di 3. Baris: 77070100 020801 FF0101621E5600020F37E201 Nilai yang Anda inginkan adalah antara ff56 dan 01 di sini: 00020f37e2 . Nilai hex ini kemudian dikonversi menjadi nilai integer sebesar 10^4. Maka Anda memiliki hasil yang diinginkan.
Jika Anda telah menemukan nilai yang sesuai, Anda akan melihat urutan angka yang merupakan indikator OBIS. Di sini, misalnya: 77070100020801ff . Ini kemudian dimasukkan dalam skrip sebagai parameter pencarian. Script saya didasarkan pada naskah Alexander Kabza. Saya telah memprosesnya sedemikian rupa sehingga segera setelah pesan telah dibaca, nilainya ditulis dalam database. Saya kemudian membuat skrip shell yang dapat dieksekusi tentang skrip Python.
Skrip shell:
#! /bin/bash
sudo python /home/pi/Documents/EHZ/strombezug.pyBuat dieksekusi:
chmod +x strombezug.shSaya kemudian membiarkan skrip dijalankan sekali pada 11:59 malam oleh Cronjob. Cronjobs membaca dengan
crontab -eBuat / ubah. Dan dengan
crontab -lAnda dapat menampilkan semua cronjobs.
59 23 * * * /home/pi/Documents/EHZ/stromlieferung.sh
59 23 * * * /home/pi/Documents/EHZ/strombezug.shJadi saya mendapatkan apa yang telah dilakukan sistem fotovoltaik sehari atau apa yang dikonsumsi rumah pada listrik per hari dan kemudian dapat menyajikan semuanya divisualisasikan nanti.
sudo apt-get mysql-server mysql-client apache2 php5-cgi php5-mysql-Mysql pengguna Buat pengguna dan buat database -Merjakan data akses SQL -MySQL ke dalam skrip python / simpan / di index.php dan api.php
Basis data berisi tabel yang menyimpan penghitung. Penghitung memiliki ID, nama dan offset. Offset digunakan untuk menyimpan status konter ketika konter baru digunakan. Jadi Anda membuat penghitung baru dengan skala offset = meter penghitung lama. Jadi Anda dapat membuat perhitungannya nanti.
Ada juga tabel untuk penutup dan pengiriman di mana ID meter, cap waktu dan status meter disimpan. Jika Anda mau, Anda juga dapat menjalankan skrip, yang menulis nilai penghitung saat ini, yaitu kinerja / referensi saat ini ke tabel setiap detik. Tentu saja, Anda juga dapat menyelesaikannya secara berbeda.
TODO CREATE-SQL
Untuk visualisasi, saya menulis API kecil yang, misalnya, mengembalikan nilai per bulan per tahun atau nilai per tahun dalam format JSON. Untuk kemudian menampilkan keseluruhan, saya menggunakan OSS Chart.js. Dan kemudian biarkan API mendapatkan nilai menggunakan Ajax.
?q=yearly per tahun (pengiriman)
?q=yearlybezug satu nilai per tahun (referensi)
?q=year&y=xxxx satu nilai per bulan untuk tahun xxxx
?q=year nilai per bulan untuk semua tahun yang ada
?q=c Mengembalikan nilai saat ini dari skala meter (pengiriman + tutupan)
?q=w memberikan nilai 7 hari terakhir yang lalu
http://wiki.volkszaehler.org/sml http://www.kabza.de/myhome/rpi.html https://github.com/chart.js/releases https:/jquery.com