Re: Mein SENEC Modul
Verfasst: Fr Jul 10, 2020 4:24 pm
Hey Christoph,
habe mir die Sache mal genau angeschaut und mit Hilfe von Vize (dafür Danke für den Wink mit dem Baumstamm) die Änderungen gefunden!
Bei mir läuft offensichtlich wieder alles!
Wenn du wieder aus dem Urlaub zurück bist kannst du dir ja mal Änderungen ansehen und testen ob es bei dir so auch läuft.
Es wurden wohl ein paar Bezeichnungen geändert in den Statistik Daten Vize der Fuchs hat das gemerkt
Also noch einen schönen Urlaub
Anbei der Code die Änderungen spielen sich am Ender unter Statistic wieder:
Beste Grüße
habe mir die Sache mal genau angeschaut und mit Hilfe von Vize (dafür Danke für den Wink mit dem Baumstamm) die Änderungen gefunden!
Bei mir läuft offensichtlich wieder alles!
Wenn du wieder aus dem Urlaub zurück bist kannst du dir ja mal Änderungen ansehen und testen ob es bei dir so auch läuft.
Es wurden wohl ein paar Bezeichnungen geändert in den Statistik Daten Vize der Fuchs hat das gemerkt
Also noch einen schönen Urlaub
Anbei der Code die Änderungen spielen sich am Ender unter Statistic wieder:
Code: Alles auswählen
#!/usr/bin/python
import struct
import json
import urllib2
import time
ipaddress = "192.168.XXX.XXX"
debug = False
#ipaddress = str(sys.argv[1])
def myDecode(stringValue):
# Parameter:
# stringValue: String Wert, im Format Typ_Wert
#
# Rueckgabe:
# result: Floatzahl
splitValue = stringValue.split('_')
if splitValue[0] == 'fl':
#Hex >> Float
result = struct.unpack('f',struct.pack('I',int('0x'+splitValue[1],0)))[0]
elif splitValue[0] == 'u3':
pass #TBD
elif splitValue[0] == 'u8':
pass #TBD
return result
def writeVal(filePath,stringValue,multiplier,decimalpoints):
#Parameter
#filePath: Pfad und Dateiname in der ein Wert geschrieben wird
#stringValue: Wert der nach dem konvertieren in die Datei geschrieben wird
#multiplier: Wert mit dem die Zahl vor der Rundung multipliziert wird
#decimalpoints: Anzahl Kommastellen
#
#Rueckgabe: nichts
val= myDecode(stringValue)
# Format anpassen
if multiplier != 0:
val = val * multiplier
#auf 2 Ziffern runden
if decimalpoints == 0:
val = int(val)
elif decimalpoints != 0:
val = round(val,decimalpoints)
if debug:
print(str(val))
print filePath
else:
f = open(filePath, 'w')
f.write(str(val))
f.close()
#EVU Daten
reqdata='{"PM1OBJ1":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}}'
response = urllib2.urlopen('http://'+ ipaddress +'/lala.cgi' ,data=reqdata)
jsondata = json.load(response)
#keine Werte gefunden
# echo $evupf1 > /var/www/html/openWB/ramdisk/evupf1
# echo $evupf2 > /var/www/html/openWB/ramdisk/evupf2
# echo $evupf3 > /var/www/html/openWB/ramdisk/evupf3
#SENEC: Gesamtleistung (W) Werte -3000 >> 3000
writeVal('/var/www/html/openWB/ramdisk/wattbezug_senec', jsondata['PM1OBJ1'] ['P_TOTAL'],0,0)
#SENEC: Frequenz(Hz) Werte 49.12 >> 50.34
writeVal('/var/www/html/openWB/ramdisk/evuhz',jsondata['PM1OBJ1'] ['FREQ'],0,2)
#SENEC: Spannung (V) Werte 219.12 >> 223.43
writeVal('/var/www/html/openWB/ramdisk/evuv1', jsondata['PM1OBJ1'] ['U_AC'] [0],0,2)
writeVal('/var/www/html/openWB/ramdisk/evuv2', jsondata['PM1OBJ1'] ['U_AC'] [1],0,2)
writeVal('/var/www/html/openWB/ramdisk/evuv3', jsondata['PM1OBJ1'] ['U_AC'] [2],0,2)
#SENEC: Leistung (W) Werte -2345 >> 3000
writeVal('/var/www/html/openWB/ramdisk/bezugw1', jsondata['PM1OBJ1'] ['P_AC'] [0],0,0)
writeVal('/var/www/html/openWB/ramdisk/bezugw2', jsondata['PM1OBJ1'] ['P_AC'] [1],0,0)
writeVal('/var/www/html/openWB/ramdisk/bezugw3', jsondata['PM1OBJ1'] ['P_AC'] [2],0,0)
#SENEC: Strom (A) Werte 0.88 >> 1.67
writeVal('/var/www/html/openWB/ramdisk/bezuga1_senec', jsondata['PM1OBJ1'] ['I_AC'] [0],0,2)
writeVal('/var/www/html/openWB/ramdisk/bezuga2_senec', jsondata['PM1OBJ1'] ['I_AC'] [1],0,2)
writeVal('/var/www/html/openWB/ramdisk/bezuga3_senec', jsondata['PM1OBJ1'] ['I_AC'] [2],0,2)
#Batteriedaten:
reqdata='{"ENERGY":{"GUI_BAT_DATA_FUEL_CHARGE":"","GUI_BAT_DATA_POWER":"","GUI_BAT_DATA_VOLTAGE":"","GUI_BAT_DATA_OA_CHARGING":""}}'
response = urllib2.urlopen('http://'+ ipaddress +'/lala.cgi' ,data=reqdata)
jsondata = json.load(response)
#SENEC: Batterieleistung (W) Werte -345 (Entladen) >> 1200 (laden)
writeVal('/var/www/html/openWB/ramdisk/speicherleistung_senec', jsondata['ENERGY'] ['GUI_BAT_DATA_POWER'],0,0)
#SENEC: Fuellmenge in Prozent Werte 10 >> 55 >> 100
writeVal('/var/www/html/openWB/ramdisk/speichersoc_senec', jsondata['ENERGY'] ['GUI_BAT_DATA_FUEL_CHARGE'],0,0)
#Statistik
reqdata='{"STATISTIC":{"LIVE_BAT_CHARGE":"","LIVE_BAT_DISCHARGE":"","LIVE_GRID_EXPORT":"","LIVE_GRID_IMPORT":"","LIVE_HOUSE_CONS":"","LIVE_PV_GEN":""}}'
response = urllib2.urlopen('http://'+ ipaddress +'/lala.cgi' ,data=reqdata)
jsondata = json.load(response)
#SENEC: Gesamtlademenge (Wh) Werte 1692
writeVal('/var/www/html/openWB/ramdisk/speicherikwh_senec', jsondata['STATISTIC'] ['LIVE_BAT_CHARGE'],1000,0)
#SENEC: Gesamtentlademenge (Wh) Werte 1590
writeVal('/var/www/html/openWB/ramdisk/speicherekwh_senec', jsondata['STATISTIC'] ['LIVE_BAT_DISCHARGE'],1000,0)
#SENEC: Gesamtimport (Wh) Werte 1809000
writeVal('/var/www/html/openWB/ramdisk/bezugkwh_senec', jsondata['STATISTIC'] ['LIVE_GRID_IMPORT'],1000,0)
#SENEC: Gesamteinspeisung Werte (Wh) 7085000
writeVal('/var/www/html/openWB/ramdisk/einspeisungkwh_senec', jsondata['STATISTIC'] ['LIVE_GRID_EXPORT'],1000,0)