[vz-users] Itron ACE3000 Type 260 -> Abfrage mit Bash-Script
D. Greulich
d.greulich at 5systems.de
Sat Apr 8 09:15:42 CEST 2017
Guten Morgen alle miteinander.
Ich habe meinen VZ mal einen IR-Schreib- und Lesekopf gegönnt und bin damit
auch recht zufrieden. Dazu habe ich mir das Script auf folgender Quelle (
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/itron_ace3000_type_260#abfrage_mit_bash-script)
angepasst, da ich nur einen Zähler habe.
Auf der Wiki-Seite wird auf gelegentliche Fehler beim Auslesen hingewiesen:
Manchmal gibt es aus unbekannten Gründen Lesefehler bei dem einen oder
> anderen Zähler. Auf Grund der Überprüfung der absoluten Werte ist der
> Anzeigefehler aber zu vernachlässigen.
Was soll ich sagen, mich störte das.
Meine Überlegung ist nun, wenn in dem Script, nach dem Abfragen des
Zählers, die gelieferten Daten für Z1 und Z2 erst validiert werden, könnte
man sich diese "Lesefehler" in der DB schenken.
Die Funktion müsste/könnte so ablaufen:
Z1 & Z2 richtig gefüllt (Zahl ######.#) -> Script weiter ausführen
wenn nicht valide, dann das Script beenden.
Leider reichen meine Kenntnisse derzeit nicht aus um solch eine Abfrage
zuschreiben und benötige daher mal wieder eure Unterstützung.
Im Anhang habe ich das Script (evu_auslesen.txt) und ein Log (evu-log.log)
angehängt.
Mit freundlichen Grüßen
Dennis Greulich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20170408/ce6b4eef/attachment.html>
-------------- next part --------------
#!/bin/bash
# script zum auslesen von 1 Zaehler "Itron ACE3000 Typ260
# mit 300Baud 7E1 only
# 1. Zaehler fuer Bezug und Einspeisung
# 2. Zaehler fuer Solaranalge Erzeugung
# Aufruf des Script jede Minute via cron
#
# Quelle: http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/itron_ace3000_type_260#abfrage_mit_bash-script
#
# Abwandlung und anpassung auf einen EVU-Zähler durch mich ;-)
#
#
#
#
UUID_Z1="e388fd70-1ae9-11e7-8586-91aa350f196d" # UUID für Bezug
UUID_Z2="c51fdf80-1ae9-11e7-aad5-4bbd8bfdb640" # UUID für Einspeisung
# Init ttyUSBx
stty -F /dev/ttyUSB0 1:4:da7:a30:3:1c:7f:15:4:10:0: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
# Hack zum Aufwecken der Zähler im Hintergrund
( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB0 ) &
while read -t8 line # warten auf die Zaehlerausgabe
do # Bestaetigung nach dem Wecken nicht notwendig
[[ "$line" =~ "1.8.0" ]] && Z1=${line:6:8} # Wert fuer Bezug
[[ "$line" =~ "2.8.0" ]] && Z2=${line:6:8} # Wert fuer Einspeisung
done < /dev/ttyUSB0
# Debug
datum=`date`
echo -n "$datum : Bezug:$Z1, Lieferung:$Z2" >> /var/log/vzlogger.log
# /Debug
# Hier müsste eine Abfrage rein, ob Z1 & Z2 auch mit Zahlen gefüllt wurden.
# Wenn ja, dann weiter mit dem Script, fals nein, dann abbruch.
# merken der Werte im Filesystem um unnötige Einträge in der DB zu vermeiden
Z1_old=$(cat /run/Z1)
echo $Z1 > /run/Z1
Z2_old=$(cat /run/Z2)
echo $Z2 > /run/Z2
# pruefen ob sich die Werte geaendert haben, wenn nicht dann wird auch nichts in die DB geschrieben
[ "$Z1" == "$Z1_old" ] && Z1=""
[ "$Z2" == "$Z2_old" ] && Z2=""
# Debug , wenn alle Zaehlerstaende unveraendert dann ein "*" anhängen
[ -z "$Z1$Z2" ] && echo -n " *" >> /var/log/vzlogger.log
echo >> /var/log/vzlogger.log
# /Debug
# senden der Zaehlerstände an die Middleware wenn notwendig
# statt vzclient ist auch wget oder curl möglich
[ -z "$Z1" ] || /usr/local/bin/vzclient -u $UUID_Z1 add data value=$Z1 > /dev/null
[ -z "$Z2" ] || /usr/local/bin/vzclient -u $UUID_Z2 add data value=$Z2 > /dev/null
-------------- next part --------------
A non-text attachment was scrubbed...
Name: evu-log.log
Type: application/octet-stream
Size: 10840 bytes
Desc: not available
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20170408/ce6b4eef/attachment.obj>
More information about the volkszaehler-users
mailing list