[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