Hi zusammen!
Ich hab n Problem und hoffe das mir vielleicht hier jemand helfen kann!
Ich habe zuhause einen Easymeter Q3DA1004 durch meinen Netzbetreiber verbaut bekommen und den würde ich gerne über ein Script auslesen.
Ich habe mir von Udo (volkszaehler.org) einen USB-IR-Schreib-Lesekopf besorgt und den an einem RaspberryPI 2 hängen.
Über minicom hab ich dann die Schnittstelle konfiguriert, mit stty -g -F /dev/ttyUSB0 die Einstellungen exportiert.
Wenn ich dann über Konsole folgendes eingebe:
stty -F /dev/ttyUSB0 1:0:cad: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
cat /dev/ttyUSB0
bekomme ich folgende Ausgabe (alle ca 2 Sekunden mit aktualisierten Werten):
Ich muss den Zähler auch nicht mit nem echo-Befehl anstoßen das er plaudert!
Er sendet alles im Klartext
/ESY5Q3DA1004 V3.04
1-0:0.0.0*255(1ESY1160304493)
1-0:1.8.0*255(00000758.4697830*kWh)
1-0:21.7.0*255(000042.10*W)
1-0:41.7.0*255(000590.02*W)
1-0:61.7.0*255(000247.33*W)
1-0:1.7.0*255(000879.45*W)
1-0:96.5.5*255(80)
0-0:96.1.255*255(1ESY1160304493)
!
Alles anzeigen
Jetzt möchte ich in Homematic nur den Zählerstand verwenden und hab dazu ein Script für den Itron ACE3000 (vz-wiki) angepasst um es für den Q3D zu verwenden und leider klappt das nicht!
Hier der link zum original Script
http://wiki.volkszaehler.org/h…hz/itron_ace3000_type_260
Hier das angepasste Script
#!/bin/bash
# Bezug/Verweis:
# Script zum auslesen Easymeter Q3DA1004 v3.04
# mit 9600 7E1 only
# Zaehler fuer Stromverbrauch
#
# Aufruf des Script jeden Tag via cron:
# crontab -e
# 0 0 * * * /home/pi/Easymeter-Q3DA1004.sh
#
# Definition chrontab:
########################
# field allowed values
# ----- --------------
# minute 0-59
# hour 0-23
# day of month 1-31
# month 1-12 (or names, see below)
# day of week 0-7 (0 or 7 is Sun, or use names)
#
#############################################################################
#
# M S T M W Befehl
# -----------------------------------------------------------------
# 1. 5 9-20 * * * /home/BENUTZERNAME/script/script1.sh > /dev/null
# 2. */10 * * * * /usr/bin/script2.sh > /dev/null 2>&1
# 3. 59 23 * * 0,4 cp QUELLDATEI ZIELDATEI
# 4. * * * * * DISPLAY=:0 LANG=de_DE.UTF-8 zenity --info --text "Beispiel"
# 5. 0 0 * * * backup
# -----------------------------------------------------------------
#
# 1.Fünf Minuten nach jeder vollen Stunde zwischen 9 und 20 Uhr (also 9:05, 10:05, ..., 20:05)
#
# 2.Alle 10 Minuten
#
# 3.Jeden Sonntag und Donnerstag um 23:59
#
# 4.Jede Minute ein Programm mit GUI, das die Display- und die Sprach-Variable benötigt
#
# 5.Jeden Tag Punkt Mitternacht 00:00 Uhr
#
##############################################################################
#
# Speicherung im Filesystem, zum Schutz des SD-Karte im Raspberry Pi
# wird ins tmpfs , hier "/run" geschrieben.
datum=$(date +%y-%m-%d_%H:%M:%S)
pfad=/run/
datei=zaehlerstand
dateiname=$(datum)+$(datei)
zaehlerstand_alt=$(cat /run/zaehlerstand)
echo -n > /run/zaehlerstand_alt
echo $zaehlerstand_alt > /run/zaehlerstand_alt
# Init ttyUSB0
stty -F /dev/ttyUSB0 1:0:cad: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
# Hack zum Aufwecken der Zähler im Hintergrund
#( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB0 ) &
while read -t2 line
do
[[ "$line" =~ "1-0:1.8.0*255" ]] && zaehlerstand=${line:14:30}
done < /dev/ttyUSB0
# Zaehlerstand sichern
echo -n > /run/zaehlerstand
echo $zaehlerstand > /run/zaehlerstand
# Verbrauchsberechnung
verbrauch_aktuell=$($zaehlerstand - $zaehlerstand_alt)
# Debug
echo -n "$datum : Zaehlerstand-alt: $zaehlerstand_alt, Zaehlerstand-neu: $zaehlerstand, Verbrauch: $verbrauch_aktuell" >> /tmp/tageszaehlerlog
# /Debug
###########################################################
# Uebertragen Stromverbrauch
###########################################################
# Senden des Zaehlerstandes an Homematic CCU2 mit Hilfe von wget
# url1="http://192.168.178.50/config/xmlapi/statechange.cgi?ise_id=XXX_ID_der_Variable_XXX&new_value="${verbrauch_aktuell}"""
# url2="http://192.168.178.50/config/xmlapi/statechange.cgi?ise_id=XXX_ID_der_Variable_XXX&new_value="${tagesverbrauch}""
# url3="http://192.168.178.50/config/xmlapi/statechange.cgi?ise_id=XXX_ID_der_Variable_XXX&new_value="${monatsverbrauch}""
# curl $url2 > /dev/null 2>&1
exit 0
Alles anzeigen
Das Script soll bei mir folgendes bewirken:
Script wird über crontab zu jedem 01. ausgeführt
1. Sicherung des alten Zählerstandes
2. auslesen des aktuellen Zählerstandes
3. Verbrauch berechnen (Zählerstand neu - Zählerstand alt)
4. dann soll Zählerstand neu und Verbrauch mit wget an Homematic CCU2 übertragen werden.
Leider liest mir das Script nichts aus!
Ich hab schon alles mögliche probiert aber leider bekomme ich es nicht hin!
Hat vielleicht jemand von euch ne Lösung oder ein Script das ich verwenden kann?
Gruß
Johnny