Moin Torsten, hast du das Scipt angepasst?:TorstenFranz hat geschrieben: ↑So Sep 10, 2023 7:57 pm Hallo Team!
Ich habe leider nicht diese Erfahrung und dieses Wissen im Programmieren wie ihr. Ich habe 2020 einfach nach Anleitung von cjungde, wie sie am Anfang dieses Senec-Modul-Themas beschrieben ist, abgeschrieben. Seither hat alles super funktioniert.
Seit dem UpDate von Senec geht nun nichts mehr.
Ich kann leider nicht zuordnen wo ihr diese ganzen Änderungen getätigt habt.
Es wäre echt super wenn jemand von euch eine "Schritt für Schritt Anleitung" hier reinsetzen könnte, wie man OpenWB mit dem Senec wieder zum Laufen bekommt.
Ich wäre echt Dankbar.
LG
Torsten
cjungde hat geschrieben: ↑Sa Sep 02, 2023 3:49 pm Hallo Yvonne,
willkommen im Forum und vielen Dank für Deine Anregungen.
Ich habe den code für die 1.9 analog zu Deinen Vorschlägen angepasst. Dann läuft die OpenWB V1 erstmal wieder. Aber eine Lösung für den Hausverbrauch geht dann erst über die sim.counter in den neuen modulen. Im Prinzip sind die Module der V2 auch in der V1 nutzbar, das muss man nur erstmal testen, weil der ganze Aufruf anders abläuft.
Code: Alles auswählen
#!/usr/bin/python import struct import json import urllib2 import ssl import time ipaddress = "192.168.XXX.YYY" debug = False ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE #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 knonvertieren 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(filePath + ' ' + str(val)) else: print(filePath + ' ' + str(val)) 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('https://'+ ipaddress +'/lala.cgi' ,data=reqdata, context=ctx) 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 if not (jsondata['PM1OBJ1'] ['P_TOTAL'] is None): writeVal('/var/www/html/openWB/ramdisk/wattbezug_senec', jsondata['PM1OBJ1'] ['P_TOTAL'],0,0) #SENEC: Frequenz(Hz) Werte 49.00 >> 50.00 if not (jsondata['PM1OBJ1'] ['FREQ'] is None): writeVal('/var/www/html/openWB/ramdisk/evuhz',jsondata['PM1OBJ1'] ['FREQ'],0,0) #SENEC: Spannung (V) Werte 219.12 >> 223.43 if not (jsondata['PM1OBJ1'] ['U_AC'] [0] is None): writeVal('/var/www/html/openWB/ramdisk/evuv1', jsondata['PM1OBJ1'] ['U_AC'] [0],0,0) if not (jsondata['PM1OBJ1'] ['U_AC'] [1] is None): writeVal('/var/www/html/openWB/ramdisk/evuv2', jsondata['PM1OBJ1'] ['U_AC'] [1],0,0) if not (jsondata['PM1OBJ1'] ['U_AC'] [2] is None): writeVal('/var/www/html/openWB/ramdisk/evuv3', jsondata['PM1OBJ1'] ['U_AC'] [2],0,0) #SENEC: Leistung (W) Werte -2345 >> 3000 if not (jsondata['PM1OBJ1'] ['P_AC'] [0] is None): writeVal('/var/www/html/openWB/ramdisk/bezugw1', jsondata['PM1OBJ1'] ['P_AC'] [0],0,0) if not (jsondata['PM1OBJ1'] ['P_AC'] [1] is None): writeVal('/var/www/html/openWB/ramdisk/bezugw2', jsondata['PM1OBJ1'] ['P_AC'] [1],0,0) if not (jsondata['PM1OBJ1'] ['P_AC'] [2] is None): writeVal('/var/www/html/openWB/ramdisk/bezugw3', jsondata['PM1OBJ1'] ['P_AC'] [2],0,0) #SENEC: Strom (A) Werte 0 >> 1 if not (jsondata['PM1OBJ1'] ['I_AC'] [0] is None): writeVal('/var/www/html/openWB/ramdisk/bezuga1_senec', jsondata['PM1OBJ1'] ['I_AC'] [0],0,0) if not (jsondata['PM1OBJ1'] ['I_AC'] [1] is None): writeVal('/var/www/html/openWB/ramdisk/bezuga2_senec', jsondata['PM1OBJ1'] ['I_AC'] [1],0,0) if not (jsondata['PM1OBJ1'] ['I_AC'] [2] is None): writeVal('/var/www/html/openWB/ramdisk/bezuga3_senec', jsondata['PM1OBJ1'] ['I_AC'] [2],0,0) #Batteriedaten: reqdata='{"ENERGY":{"GUI_BAT_DATA_FUEL_CHARGE":"","GUI_BAT_DATA_POWER":"","GUI_BAT_DATA_VOLTAGE":"","GUI_INVERTER_POWER":""}}' response = urllib2.urlopen('https://'+ ipaddress +'/lala.cgi' ,data=reqdata, context=ctx) jsondata = json.load(response) #SENEC: Batterieleistung (W) Werte -345 (Entladen) >> 1200 (laden) if not (jsondata['ENERGY'] ['GUI_BAT_DATA_POWER'] is None): writeVal('/var/www/html/openWB/ramdisk/speicherleistung_senec', jsondata['ENERGY'] ['GUI_BAT_DATA_POWER'],0,0) #SENEC: Fuellmenge in Prozent Werte 10 >> 55 >> 100 if not (jsondata['ENERGY'] ['GUI_BAT_DATA_FUEL_CHARGE'] is None): writeVal('/var/www/html/openWB/ramdisk/speichersoc_senec', jsondata['ENERGY'] ['GUI_BAT_DATA_FUEL_CHARGE'],0,0) #SENEC: Leistung Wechselrichter in (W) Werte if not (jsondata['ENERGY'] ['GUI_INVERTER_POWER'] is None): writeVal('/var/www/html/openWB/ramdisk/pvwatt_senec', jsondata['ENERGY'] ['GUI_INVERTER_POWER'],0,0)