
โครงการเพื่ออ่านการอ่านมิเตอร์ของมิเตอร์อัจฉริยะเขียนในฐานข้อมูลและเพื่อแสดงภาพ



โฟลเดอร์ data กับมิเตอร์เก่าส่วนตัวที่ถูกป้อนเข้าสู่ฐานข้อมูลในภายหลัง python มีสคริปต์ Python ที่ใช้ในการอ่านขาตั้งมิเตอร์
ใช้ Raspberry Pi Model A ผู้อ่าน IR สองคนเชื่อมต่อกับสิ่งนี้ผ่าน USB คำสั่งซื้อที่นี่: Weidmann Elektronik เฟอร์นิเจอร์สมาร์ทมิเตอร์เป็น EHZ จาก บริษัท EMH
ติดตั้ง รูปภาพ Raspberry Pi Raspberry Pi (Raspbian) บนการ์ด SD (ขั้นต่ำ 8GB) คำแนะนำทำให้การตั้งค่ามาตรฐานเป็นเรื่องเกี่ยวกับเวลาและขยายหน่วยความจำ:
sudo raspi-config
sudo apt-get upgrade all คัดลอก Python Scripts python ไปยังราสเบอร์รี่ ตัวอย่างเช่นผ่าน FTP ฉันคัดลอกข้อมูลลงใน homepiDocumentsEHZ โฟลเดอร์
ตอนนี้คุณยังต้องปรับสคริปต์ Python ในการทดสอบข้อความใดที่เครื่องวัดไฟฟ้าส่งทุกอย่างเพื่อให้คุณสามารถเรียกสคริปต์ pythonSensortest.py ได้ ก่อนหน้านั้นคุณควรตรวจสอบให้แน่ใจว่ามีการเชื่อมต่อแบบอะนาล็อกที่เหมาะสม และแน่นอนคุณต้องให้ความสนใจกับความเท่าเทียมกันและหยุดบิต โดยค่าเริ่มต้นหัวการอ่าน IR จะถูกผูกไว้กับ devttyUSB0 หากต้องการดูที่คุณสามารถค้นหาด้านหน้าภายใต้อุปกรณ์ต่อไปนี้:
cd dev หลังจาก pythonSensortest.py ข้อความต่าง ๆ ควรมา อย่างไรก็ตามมีเพียงขอบเสื้อผู้หญิงตอนหน้าอกที่เกี่ยวข้องที่มีการอ่านมิเตอร์เท่านั้น
# 77078181c78203ff0101010104454d4801
# 77070100000009ff010101010b06454d480104c56ec5bd01
# 77070100020800ff6400000001621e52ff5600020f37e201
# 77070100020801ff0101621e52ff5600020f37e201 //Zählerstand
# 77070100100700ff0101621b52ff550000000001 //momentaner Bezug / Leistung
# 77078181c78205ff01726201650136ece901018302739899a4350308b2be3a7022b69067cf0a021eb85e02a2f95810a06a6a1f5e48ed56bc3a53e771f68d66540c260e6d1c010101+ ตอนนี้คุณดูว่าตัวบ่งชี้ OBIS ใดที่ได้รับการยอมรับที่นั่น โดยปกติแล้วควรอ้างอิง 01-08-01 และสำหรับการจัดส่ง 02-08-01 ในตัวอย่างนี้อยู่ใน 3 บรรทัด: 77070100 020801 FF0101621E5600020F37E201 ค่าที่คุณต้องการอยู่ระหว่าง ff56 และ 01 ที่นี่: 00020f37e2 ค่า hex นี้จะถูกแปลงเป็นค่าจำนวนเต็ม 10^4 จากนั้นคุณมีผลลัพธ์ที่ต้องการ
หากคุณพบค่าที่สอดคล้องกันของคุณคุณจะสังเกตเห็นลำดับตัวเลขที่เป็นตัวบ่งชี้ OBIS ที่นี่ตัวอย่าง: 77070100020801ff สิ่งนี้จะถูกป้อนในสคริปต์เป็นพารามิเตอร์การค้นหา สคริปต์ของฉันขึ้นอยู่กับสคริปต์ของ Alexander Kabza ฉันได้ประมวลผลในลักษณะที่ทันทีที่มีการอ่านข้อความค่าจะถูกเขียนในฐานข้อมูล จากนั้นฉันก็สร้างสคริปต์เชลล์ที่ใช้งานได้เกี่ยวกับสคริปต์ Python
เชลล์สคริปต์:
#! /bin/bash
sudo python /home/pi/Documents/EHZ/strombezug.pyทำให้สามารถดำเนินการได้:
chmod +x strombezug.shจากนั้นฉันก็ปล่อยให้สคริปต์ทำงานหนึ่งครั้งเวลา 23:59 น. โดย Cronjob Cronjobs อ่านด้วย
crontab -eสร้าง / แก้ไข และด้วย
crontab -lคุณสามารถแสดง cronjobs ทั้งหมด
59 23 * * * /home/pi/Documents/EHZ/stromlieferung.sh
59 23 * * * /home/pi/Documents/EHZ/strombezug.shดังนั้นฉันจึงได้รับสิ่งที่ระบบเซลล์แสงอาทิตย์ได้ทำหนึ่งวันหรือสิ่งที่บ้านใช้ไฟฟ้าต่อวันและจากนั้นสามารถนำเสนอสิ่งทั้งหมดที่มองเห็นได้ในภายหลัง
sudo apt-get mysql-server mysql-client apache2 php5-cgi php5-mysql-MYSQL ผู้ใช้สร้างผู้ใช้และสร้างฐานข้อมูล -Create SQL -MYSQL ข้อมูลการเข้าถึงลงในสคริปต์ Python / บันทึก / ใน index.php และ api.php
ฐานข้อมูลมีตารางที่บันทึกตัวนับ ตัวนับมี ID ชื่อและออฟเซ็ต ออฟเซ็ตใช้เพื่อบันทึกสถานะตัวนับเมื่อใช้ตัวนับใหม่ ดังนั้นคุณจึงสร้างตัวนับใหม่ด้วยสเกลออฟเซ็ต = เมตรของเคาน์เตอร์เก่า ดังนั้นคุณสามารถทำการคำนวณได้อย่างแม่นยำในภายหลัง
นอกจากนี้ยังมีตารางสำหรับฝาครอบและการส่งมอบที่ Meter ID การประทับเวลาและสถานะมิเตอร์จะถูกบันทึกไว้ หากคุณต้องการคุณสามารถเรียกใช้สคริปต์ซึ่งเขียนค่าปัจจุบันของตัวนับเช่นประสิทธิภาพ / การอ้างอิงปัจจุบันไปยังตารางทุกวินาที แน่นอนคุณสามารถแก้ปัญหาที่แตกต่างกันได้
todo create-sql
สำหรับการสร้างภาพข้อมูลฉันเขียน API ขนาดเล็กที่ตัวอย่างเช่นส่งคืนค่าต่อเดือนต่อปีหรือค่าต่อปีในรูปแบบ JSON เพื่อแสดงทั้งหมดฉันใช้ oss chart.js จากนั้นให้ API ได้รับค่าโดยใช้ AJAX
?q=yearly มูลค่าต่อปี (การจัดส่ง)
?q=yearlybezug หนึ่งค่าต่อปี (อ้างอิง)
?q=year&y=xxxx หนึ่งค่าต่อเดือนสำหรับปี xxxx
?q=year มูลค่าต่อเดือนสำหรับทุกปีที่มีอยู่
?q=c ส่งคืนค่าปัจจุบันของมาตราส่วนเมตร (ส่งมอบ + ปก)
?q=w ให้ค่าของ 7 วันสุดท้ายย้อนหลัง
http://wiki.volkszaehler.org/sml http://www.kabza.de/myhome/rpi.html https://github.com/chart.js/releases https://jquery.com