
스마트 미터의 미터 판독 값을 읽고 데이터베이스를 작성하고 시각화하는 프로젝트.



데이터베이스에 입력 한 비공개 구식 미터가있는 data 폴더. python 에는 미터 스탠드를 읽는 데 사용되는 Python 스크립트가 포함되어 있습니다.
라즈베리 파이 모델 A가 사용됩니다. 두 명의 IR 독자가 USB를 통해 이에 연결되어 있습니다. 주문 : Weidmann Elektronik 가구 가구 스마트 미터는 EMH 회사의 EHZ입니다.
SD 카드 (최소 8GB)에 Raspberry Pi Image Raspberry Pi Image (Raspbian)를 설치하십시오. 지침은 시간에 관한 표준 설정을 만들고 메모리를 확장합니다.
sudo raspi-config
sudo apt-get upgrade all 파이썬 스크립트 python 를 라즈베리에 복사하십시오. 예를 들어 FTP를 통해. 데이터를 homepiDocumentsEHZ 폴더에 복사했습니다.
이제 여전히 파이썬 스크립트를 조정해야합니다. 어떤 메시지를 테스트하기 위해 전기계 미터가 모든 것을 보내므로 스크립트 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 . 그런 다음이 16 진수 값은 정수 값으로 10^4로 변환됩니다. 그런 다음 원하는 결과가 있습니다.
해당 값을 찾은 경우 OBIS 표시기 인 숫자 순서가 표시됩니다. 예를 들어, 77070100020801ff . 그런 다음 스크립트에 검색 매개 변수로 입력됩니다. 내 스크립트는 Alexander Kabza의 스크립트를 기반으로합니다. 메시지가 읽히 자마자 값이 데이터베이스에 기록되는 방식으로 처리했습니다. 그런 다음 Python 스크립트에 대한 실행 가능한 쉘 스크립트를 만듭니다.
쉘 스크립트 :
#! /bin/bash
sudo python /home/pi/Documents/EHZ/strombezug.py실행 가능 :
chmod +x strombezug.sh그런 다음 오후 11시 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 사용자를 생성하고 데이터베이스 생성 -SQL -mysql 데이터를 Python Scripts / Save / In Index.php 및 api.php로 액세스합니다.
데이터베이스에는 카운터를 저장하는 테이블이 포함되어 있습니다. 카운터에는 ID, 이름 및 오프셋이 있습니다. 오프셋은 새 카운터를 사용할 때 카운터 상태를 저장하는 데 사용됩니다. 따라서 이전 카운터의 오프셋 = 미터 스케일로 새 카운터를 만듭니다. 따라서 나중에 계산을 할 수 있습니다.
미터 ID, 타임 스탬프 및 미터 상태가 저장되는 표지 및 전달 테이블도 있습니다. 원하는 경우 카운터의 현재 값, 즉 초마다 테이블에 대한 현재 성능 / 참조를 작성하는 스크립트를 실행할 수도 있습니다. 물론, 당신은 그것을 다르게 해결할 수도 있습니다.
todo create-sql
시각화를 위해, 예를 들어, 매년 한 달에 값을 반환하는 작은 API를 작성했습니다. 그런 다음 전체를 표시하려면 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