[vz-dev] Anleitung zum konfigurieren eines IR Lesekopf am Rpi
Ludger Bremenkamp
bremenkamp.ludger at t-online.de
Sat May 17 13:55:18 CEST 2014
Hallo Wolfgang,
was macht Dein Script genau?
Ich habe ein RPi mit Udo Erweiterung und den IR Lesekopf von Udo der 4 Draht
massig an der Erweiterung an geklemmt wird!
Ich benutze das Fertige Image S0 Zähler kein Problem!
Mein/EVU`s Landis&Gyr ZMD120APECS da wackelt mein Wissen, da ich eher Linux
User bin.
Auslesen auf der Konsole klappt mit folgenden Befehlen :
Aber alles schön nach der Reihe eingegeben!
stty -F /dev/ttyAMA0 sane
stty -F /dev/ttyAMA0 300 parenb -parodd cs7 -cstopb raw -echo
COUNTER=1
while [ $COUNTER -le 5 ]
do
( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyAMA0 ) &
#sende "/?!" mit Return an Raspi (Udo's Erweiterung + IR-Kopf seriell)
while read -t8 line
do
echo $line # > /home/pi/lgread.log
done < /dev/ttyAMA0
while read -t8 line
do
echo $line # >> /home/pi/lgread.log
done < /dev/ttyAMA0
echo "COUNTER: " $COUNTER
let COUNTER=COUNTER+1
done
Antwort vom Zähler:
[1] 3369
/?!
/LGZ42ZMD120APt.G03
F.F(00000000)
0.0.0(05004486)
0.0.1(797023)
0.0.2(93264980)
0.2.0(G03)
0.2.1(0AM26)
1.8.1(0041751*kWh)
2.8.1(0005389*kWh)
C.4(00008000)
C.5(000080E0)
!
COUNTER: 1
[2] 3371
/?!
/LGZ42ZMD120APt.G03
F.F(00000000)
0.0.0(05004486)
0.0.1(797023)
0.0.2(93264980)
0.2.0(G03)
0.2.1(0AM26)
1.8.1(0041752*kWh)
2.8.1(0005389*kWh)
C.4(00008000)
C.5(000080E0)
!
COUNTER: 2
[3] 3373
/?!
/LGZ42ZMD120APt.G03
F.F(00000000)
0.0.0(05004486)
0.0.1(797023)
0.0.2(93264980)
0.2.0(G03)
0.2.1(0AM26)
1.8.1(0041752*kWh)
2.8.1(0005389*kWh)
C.4(00008000)
C.5(000080E0)
!
COUNTER: 3
[4] 3375
/?!
/LGZ42ZMD120APt.G03
F.F(00000000)
0.0.0(05004486)
0.0.1(797023)
0.0.2(93264980)
0.2.0(G03)
0.2.1(0AM26)
1.8.1(0041752*kWh)
2.8.1(0005389*kWh)
C.4(00008000)
C.5(000080E0)
!
COUNTER: 4
[5] 3377
/?!
/LGZ42ZMD120APt.G03
F.F(00000000)
0.0.0(05004486)
0.0.1(797023)
0.0.2(93264980)
0.2.0(G03)
0.2.1(0AM26)
1.8.1(0041752*kWh)
2.8.1(0005389*kWh)
C.4(00008000)
C.5(000080E0)
!
COUNTER: 5
[1] Done ( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" >
/dev/ttyAMA0 )
[2] Done ( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" >
/dev/ttyAMA0 )
[3] Done ( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" >
/dev/ttyAMA0 )
[4] Done ( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" >
/dev/ttyAMA0 )
[5]+ Done ( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" >
/dev/ttyAMA0 )
Nun die Frage bekomme ich mit Deinem Scipt den Zähler ans tippeln
Gruß
Ludger
PS: Ich ärgere mich zusätzlich mit den Intenso micro SD Karten 8GB rum, die
von Pollin in dem Set für den RPI für die Unterverteilung mitgeliefert
werden, die geben schon nach ca. 5 Tagen den Geist auf!
Pollin ist da zwar sehr kulant und ich habe schon die vierte Karte im
Rennen, mal sehen wahrscheinlich in 5 Tagen wieder fertig.
Von: volkszaehler-dev-bounces at demo.volkszaehler.org
[mailto:volkszaehler-dev-bounces at demo.volkszaehler.org] Im Auftrag von
Wolfgang Fahl
Gesendet: Dienstag, 13. Mai 2014 11:12
An: volkszaehler.org
Betreff: Re: [vz-dev] Anleitung zum konfigurieren eines IR Lesekopf am Rpi
Hallo Ludger,
hier findest Du meine notizen und unten ein script mit dem ich gerade
experimentiere. Bitte gib mir feedback dazu. Kannst mich auch gerne per
Telefon anrufen- Angaben sind
unten in der Signature.
Wenn die Infos was taugen würde ich sie gerne auf die Wikiseite bringen -
was muss ich dafür tun?
Udo's Lesekopf
* Bus 001 Device 012: ID 10c4:ea60 Cygnal Integrated Products, Inc.
CP210x UART Bridge / myAVR mySmartUSB light
Middleware
* http://wiki.volkszaehler.org/software/middleware/installation
apt-get update
sudo apt-get install git-core libapache2-mod-php5 php5-cli php5-mysql
php-apc mysql-server mysql-client
sudo bash install.sh
and apache configuration
anschliessend geht:
http://rpi.bitplan.com
add S0-Impulszähler 10000 Impulse pro kwh
uuids
mysql> select * from entities;
+----+--------------------------------------+-------+---------+
| id | uuid | type | class |
+----+--------------------------------------+-------+---------+
| 1 | a301d8d0-903b-1234-94bb-d943d061b6a8 | power | channel |
| 2 | 38c6fb60-d9f9-11e3-aa75-7509b3b28371 | power | channel |
| 3 | 89f3ff60-da16-11e3-9b7d-615684429384 | power | channel |
| 4 | f2184180-da16-11e3-9709-7f3f3c090c10 | power | channel |
+----+--------------------------------------+-------+---------+
38c6fb60-d9f9-11e3-aa75-7509b3b28371 is the S0-Impuls for the digital meter
vzlogger
*
http://www.goller-online.de/index.php/raspberry-pi/vzlogger/91-vzlogger-mit-
apt-get-installieren
Ihr könnt das einbinden, indem Ihr folgenden Eintrag zu
/etc/apt/sources.list hinzufügt:
deb http://packages.volkszaehler.org/vz/ wheezy main
Damit die Prüfung der Paket-Signatur klappt, müsst Ihr den Signierschlüssel
importieren (als root):
wget -O- http://packages.volkszaehler.org/vz/justinotherguy.asc | apt-key
add -
Jetzt noch ein
apt-get update
und ein
apt-get install vzlogger
- das war's.
Entpacken von vzlogger (aus .../vzlogger_0.3.3-rc3_armhf.deb)
vzlogger konfigurieren
* http://www.lexxi.at/2013/05/02/start-und-kontrolle-von-vzlogger/
* http://wiki.volkszaehler.org/howto/emh_pv-anlage
udevadm info --query=all --name=/dev/ttyUSB0 | grep -i serial_short
E: ID_SERIAL_SHORT=0079E5B9
Troubleshooting
get rid of invalid data
mysql> select count(*),channel_id from data group by channel_id order by 1
desc;
+----------+------------+
| count(*) | channel_id |
+----------+------------+
| 21345 | 1 |
| 575 | 3 |
| 575 | 4 |
+----------+------------+
mysql> delete from data where channel_id>1;
Zähler
*
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/edl21-eh
z
*
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/emh-ehz-
h1
hier findest Du ein Script, dass ich gerade auf dem raspberry teste
#!/bin/bash
# install script for vzlogger
# WF 2014-05-12
# $Header:
/media/fdf64846-7c1a-4a44-8ef6-b4f9177e893e/home/wf/volkszaehler/RCS/vzlinst
all.sh,v 1.10 2014/05/13 07:07:43 wf Exp wf $
#set -x
#
# error
#
error() {
local l_msg="$1"
local l_hint="$2"
echo "error: $l_msg" 1>&2
echo " you might want to $l_hint" 1>&2
exit 1
}
#
# install vzlogger from debian package
#
vzlogger_install() {
vzl=`which vzlogger`
if [ $? -eq 0 ]
then
echo "vzlogger is already installed at $vzl"
return
fi
package="deb http://packages.volkszaehler.org/vz/ wheezy main"
srclist=/etc/apt/sources.list
# check that source.list exists
if [ ! -f $srclist ]
then
error "$srclist is missing" "install apt"
fi
# check that package.volkszaehler.org ist in source.list
grep "$package" $srclist > /dev/null
# if not we need to add it
if [ $? -ne 0 ]
then
echo "adding $package to $scrlist ..."
sudo echo "$package" >> $scrlist
echo "importing key for apt"
sudo wget -O- http://packages.volkszaehler.org/vz/justinotherguy.asc |
apt-key add -
echo "running apt-get update"
sudo apt-get update
echo "installing vzlogger"
sudo apt-get install vzlogger
else
error "vzlogger not available but $scrlist already modified" "check
apt-get update/install"
fi
}
#
# add udev rules to the given udev rules file
# param 1: the rules file
# param 2: the serial number
# param 3: the usb number
#
addrules() {
local l_rules="$1"
local l_serial="$2"
local l_usb="$3"
local l_symlink="usb-ir-lesekopf$l_usb"
echo "adding rule for $l_serial/USB$l_usb to $l_rules"
echo 'SUBSYSTEM=="tty", ENV{ID_SERIAL_SHORT}=="'$l_serial'",
SYMLINK+="'$l_symlink'"' >> "$l_rules"
udevadm trigger
ls -la /dev/$l_symlink
if [ ! -h /dev/$l_symlink ]
then
error "symbolic link $l_symlink was not created" "check udevadm trigger
worked"
fi
}
#
# configure udevrules for vzlogger
#
vzlogger_udevrules() {
rules=/etc/udev/rules.d/99-usb-ir-lesekopf.rules
lsusb | grep CP210x
if [ $? -ne 0 ]
then
error "no CP210x USB device found" "check Lesekopf/USB connected"
else
# check IR Lesekopf
for usb in 0 1
do
query="udevadm info --query=all --name=/dev/ttyUSB$usb"
$query 2>&1 | grep -i serial_short > /dev/null
if [ $? -eq 0 ]
then
serial=`$query | grep -i serial_short | cut -f2 -d=`
echo "device with serial $serial at USB$usb"
if [ ! -f $rules ]
then
addrules $rules $serial $usb
else
grep $serial $rules > /dev/null
if [ $? -ne 0 ]
then
addrules $rules $serial $usb
else
echo "$serial/USB$usb already installed in udev rules"
fi
fi
fi
done
fi
}
#
# stty settings for the given usb device
#
stty_usb() {
local l_usb="$1"
stty -F /dev/ttyUSB$l_usb
1:0:8bd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0
:0:0:0
}
#
# test the given usb device
#
test_usb() {
local l_usb="$1"
local l_expected="1b 1b 1b 1b"
stty_usb $l_usb
timeout 2 cat /dev/ttyUSB$l_usb | od -tx1 | grep "$l_expected"
if [ $? -eq 0 ]
then
echo "USB$l_usb sends expected data $l_expected"
else
error "USB$l_usb sends unexpected data" "check stty settings"
fi
}
#
# vzlogger test
#
vzlogger_test() {
cat << EOF
/**
* vzlogger configuration
*
* use proper encoded JSON with javascript comments
*
* take a look at the wiki for detailed information:
* http://wiki.volkszaehler.org/software/controller/vzlogger#configuration
*/
{
"retry" : 30, /* how long to sleep between failed
requests, in seconds */
"daemon": false, /* run periodically */
"foreground" : true, /* dont run in background (prevents forking)
*/
"verbosity" : 15, /* between 0 and 15 */
"log" : "/var/log/vzlogger.log",/* path to logfile, optional */
"local" : {
"enabled" : false, /* should we start the local HTTPd for
serving live readings? */
"port" : 8080, /* the TCP port for the local HTTPd */
"index" : true, /* should we provide a index listing of
available channels? */
"timeout" : 30, /* timeout for long polling comet requests,
0 disables comet, in seconds */
"buffer" : 600 /* how long to buffer readings for the local
interface, in seconds */
},
"meters" : [{
"enabled" : true, /* disabled meters will be ignored */
"protocol" : "sml", /* use 'vzlogger -h' for list of available
protocols */
"device" : "/dev/usb-ir-lesekopf0",
}
]}
EOF
}
#
# test the device
#
vzlogger_test() {
local l_usb="$1"
test_usb $l_usb
tst_conf=/etc/vzlogger.test
if [ ! -f $tst_conf ]
then
# only usb0
echo "creating $tst_conf (only USB$l_usb!)"
vzlogger_test > $tst_conf
else
echo "$tst_conf already exists"
fi
timeout 5 vzlogger -c $tst_conf
}
#
# output a vzlogger configuration
#
vzlogger_config() {
local l_mode="$1"
local l_uuid="$2"
local l_id="$3"
local l_comment="$4"
local l_delim="$5"
case $l_mode in
header)
cat << EOF
/**
* vzlogger configuration
*
* use proper encoded JSON with javascript comments
*
* take a look at the wiki for detailed information:
* http://wiki.volkszaehler.org/software/controller/vzlogger#configuration
*/
{
"retry" : 30, /* how long to sleep between failed requests, in seconds */
"daemon": true, /* run as server */
//"foreground" : true, /* dont run in background (prevents forking) */
"verbosity" : 5, /* between 0 and 15 */
"log" : "/var/log/vzlogger.log", /* path to logfile, optional */
"local" : {
"enabled" : true, /* should we start the local HTTPd for serving live
readings? */
"port" : 8080, /* the TCP port for the local HTTPd */
"index" : true, /* should we provide a index listing of available
channels if no UUID was requested? */
"timeout" : 30, /* timeout for long polling comet requests, 0 disables
comet, in seconds */
"buffer" : 600 /* how long to buffer readings for the local interface,
in seconds */
},
"meters" : [{
"enabled" : true, /* disabled meters will be ignored */
"protocol" : "sml", /* see 'vzlogger -h' for list of available prot$ */
"device" : "/dev/usb-ir-lesekopf0",
"channels": [
EOF
;;
channel)
cat << EOF
$l_delim{
"uuid" : "$l_uuid",
"middleware" : <http://localhost/middleware.php>
"http://localhost/middleware.php",
"identifier" : "1-0:$l_id", /* $l_comment */
}
EOF
;;
footer)
cat << EOF
]
}
]}
EOF
;;
esac
}
#
# configure vzlogger
#
vzlogger_configure() {
vz_conf=/etc/vzlogger.conf
if [ ! -f $vz_conf ]
then
# only usb0
echo "creating $vz_conf (only USB$l_usb!)"
vzlogger_config header > $vz_conf
local l_delim=""
while read l_uuid l_id l_comment
do
vzlogger_config channel $l_uuid $l_id $l_comment $l_delim >> $vz_conf
l_delim=", "
done
vzlogger_config footer >> $vz_conf
else
echo "$vz_conf already exists"
fi
}
#
# get the sqlquery
#
sql_query() {
cat << EOF
select e.uuid,p.value from entities e join properties p on
e.id=p.entity_id where pkey='title';
EOF
}
#
# configure vzlogger
#
configure() {
rm /etc/vzlogger.conf
# configure vzlogger
# anpassen!
cat << EOF | vzlogger_configure
949808f0-da6f-11e3-9d0e-6757e6f50dbd 15.7.0 Haus-15.7.0_Wirkleistung
4e57e880-da74-11e3-8ea0-2743cd8e7e3f 1.8.0 Haus-1.8.0_EVU_Bezug
f2184180-da16-11e3-9709-7f3f3c090c10 2.8.0 Haus-2.8.0_PV_Einspeisung
b657c960-da69-11e3-be9c-830351251385 2.7.0 Haus-2.7.0-Leistung
EOF
# efaaee80-da67-11e3-9d0e-f36cf67c5b5b 16.7.0 "Leistung_Verbrauch"
# b657c960-da69-11e3-be9c-830351251385 2.7.0 "Leistung_Lieferung"
}
restart() {
pid=`pgrep -l vzlogger`
if [ $? -eq 0 ]
then
echo "killing vzlogger $pid"
pkill vzlogger
fi
vzlogger
}
# auskommentieren was Du brauchst!
# first install vzlogger / check if it is already installed
vzlogger_install
# configure vzlogger
vzlogger_udevrules
# test the usb devices directly and with vzlogger
vzlogger_test 0
sql_query | mysql -u vz --password='demo' volkszaehler
#uuid value
#38c6fb60-d9f9-11e3-aa75-7509b3b28371 S0-Impulse
#949808f0-da6f-11e3-9d0e-6757e6f50dbd Haus 15.7.0 Wirkleistung
#a301d8d0-903b-1234-94bb-d943d061b6a8 S0-Zaehler
#b657c960-da69-11e3-be9c-830351251385 Haus 2.7.0 Leistung
#efaaee80-da67-11e3-9d0e-f36cf67c5b5b Haus 16.7.0 Leistung
#f2184180-da16-11e3-9709-7f3f3c090c10 Haus 2.8.0 (Lieferung -A)
#stty_usb 0
#service vzlogger start
Am 10.05.14 17:50, schrieb Ludger Bremenkamp:
Hallo zusammen,
ich möchte meinen Landis&Gyr ZMD120APECS mit der Raspberry Pi Erweiterung +
Lesekopf von Udo auslesen und suche nach einer Anleitung!
Ich kann im Netz nichts finden hat jemand einen Link oder eine Anleitung!
Danke!!
Grüße Ludger
--
BITPlan - smart solutions
Wolfgang Fahl
Pater-Delp-Str. 1, D-47877 Willich Schiefbahn
Tel. +49 2154 811-480, Fax +49 2154 811-481
Web: http://www.bitplan.de
BITPlan GmbH, Willich - HRB 6820 Krefeld, Steuer-Nr.: 10258040548,
Geschäftsführer: Wolfgang Fahl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-dev/attachments/20140517/1fdfcfa7/attachment-0001.html>
More information about the volkszaehler-dev
mailing list