Seite 2 von 19

Re: Mein SENEC Modul

Verfasst: Fr Jul 10, 2020 4:24 pm
von Topper
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:

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)
Beste Grüße

Re: SENEC Modul

Verfasst: So Jul 26, 2020 12:11 pm
von cjungde
Hallo Topper,

vielen Dank für Deine Mühe. Ich habe das Script im ersten Post jetzt angepasst. Damit steht dort auch nur noch der aktuelle Stand.
Hier nochmal der Link dazu viewtopic.php?f=5&t=1082&p=9274

Und die Updatenotizen:
Update 26.07.2020:
Nachdem SENEC eine neue Firmware in die Speicher geschrieben hat war der Aufruf der Statistischen Daten nicht mehr möglich und das Script führte zu einem kompletten Hänger in der OpenWB. Das ist mit diesem Update behoben. Das Script lief jetzt eine Woche ohne Probleme bei mir.
Vielen Dank an vize und Topper für die Fehlersuche und Fehlerlösung.

Änderungen in diesem Update:
- Vor der Verarbeitung jedes Einzelwertes wird geprüft ob der Wert vorhanden ist, das sollte Hänger von OpenWB verhindern, wenn SENEC wieder etwas ändert.
- Die Werte für den Gesamtnetz- import und export wurden von ['STATISTIC'] ['STAT_GRID_IMPORT'] und ['STATISTIC'] ['STAT_GRID_EXPORT'] auf ['STATISTIC'] ['LIVE_GRID_IMPORT'] und ['STATISTIC'] ['LIVE_GRID_EXPORT'] geändert.

Re: SENEC Modul

Verfasst: Do Sep 03, 2020 12:36 pm
von TorstenFranz
Hallo!

Ich habe ebenfalls einen Senec V2. Dieser ist seit 2018 in Betrieb.
Zudem habe ich ein E-Auto (Nissan Leaf), welches ich in der Garage über eine EVSE B 163 lade.
Bisher habe ich das in den Sommermonaten per Zeitsteuerung hinbekommen.

Nun würde ich das Ganze etwas automatisieren wollen, habe aber das Problem, das ich mit Netzwerktechnik nicht so bewandert bin.
Als gelernter Elektriker, kann ich zwar alles installieren, hab aber vom programmieren und der richtigen Modul-Wahl bisher wenig Ahnung.

Als Besonderheit ist bei mir, dass ich zusätzlich den Senec-Heat verbaut habe, es aber nicht wirklich interessant ist den Strom zu verheizten. Durch das E-Auto wäre es eben sinnvoller diesen dort hinein zu laden.
Der Heat war solange interessant, wie es das Senec-EG-Programm gab.

Ich möchte daher anfragen, welche Komponenten Ihr für die Steuerung verbaut habt?
Verstehe ich das richtig, dass ihr die Daten des Stromverbrauchs und der PV aus dem internen Monitoring des Senec zieht?
Welche Wallbox nutzt ihr und mit welchen Komponenten steuert ihr diese an?

Bisher hatte ich die Idee für das Ein- und Ausschalten der Wallbox die Schlatausgänge des Senec zu nutzen. Hier lassen sich ja die Schwellwerte gut am Speicher einstellen.

Danke für eure Hilfe.
LG
Torsten

Re: SENEC Modul

Verfasst: Do Sep 03, 2020 4:12 pm
von vize
Hallo Torsten,

ich nutze eine selbst zusammengebaute Wallbox mit EVSE und zusätzlich die EVSE-Wifi Erweiterung.
Zusammen mit openWB auf einem RasPi kann ich damit den Ioniq wunderbar PV-geführt laden.

Die benötigten Werte zur Steuerung hole ich mir vom WR (Kostal Piko) und dem internen Monitoring des SENEC-Speichers.
Ich nutze aber (noch) nicht das Script von Christoph, sondern gerne den Umweg über FHEM. Dort nutze ich die Daten des Speichers für weitere "Schaltaufgaben" und gebe sie auch an openWB weiter.
Für den Kostal Piko gibt es ein eigenes Modul in openWB, für die SENEC-Daten nutze ich das HTTP-Modul.

VG
Andreas

Re: SENEC Modul

Verfasst: Do Sep 03, 2020 7:54 pm
von cjungde
vize hat geschrieben: Do Sep 03, 2020 4:12 pm Ich nutze aber (noch) nicht das Script von Christoph, sondern gerne den Umweg über FHEM.
Und das, obwohl ich das Ganze nach Deiner Vorarbeit erst umsetzen konnte :-)
TorstenFranz hat geschrieben: Do Sep 03, 2020 12:36 pm Ich möchte daher anfragen, welche Komponenten Ihr für die Steuerung verbaut habt?
Verstehe ich das richtig, dass ihr die Daten des Stromverbrauchs und der PV aus dem internen Monitoring des Senec zieht?
Welche Wallbox nutzt ihr und mit welchen Komponenten steuert ihr diese an?
Ich nutze eine original openWB series2 als komplette Wallbox, weil es bei mir andersherum ist: Ich kann code zusammensammeln, aber ich darf den Strom nicht selbst zusammenschrauben. Und beim Auto mache ich es auch nicht.

Die Daten der SENEC Batterie hole ich mir aus meinem lokalen Speicher (nicht über die Webseite), aber eigentlich nur, damit ich die Werte im Monitoring der OpenWB sehe und Stimmige Werte im Hausverbrauch habe.

Wie Andreas habe ich auch ein FHEM laufen, mit dem ich das ganze Haus steuere. Dort rufe ich die aktuelle Einspeisung aus der SENEC ab, damit ich bei Sonne eine Gartenpumpe einschalten kann. Die Daten könnte ich auch direkt aus einem Stromzähler holen. Das geht bei meinem nur nicht. Da an der SENEC per Modbus ein Zähler angeschlossen ist, kann ich den Zählerstand über die SENEC leichter holen, als wenn ich noch zusätzlich Hardware und Kabel in den Verteilerschrank legen müsste.

Gruß
Christoph

Re: SENEC Modul

Verfasst: Fr Sep 04, 2020 12:28 pm
von TorstenFranz
Hallo Christoph!

Ich würde das mit dem Rasperry gern probieren.
Würdest du mir dabei helfen??
Ich weis aber, dass es für jemanden anstrengend sein kann wenn ein Neuling an Dingen Schwierigkeiten hat, was für erfahrene Normalität und logisch ist.

Ich habe schon mal geschaut, bei Reichelt gibt es fertig konfektionierte Bausätze. Die Frage wäre welchen ich kaufe. Einen Rasperry Pi 4 mit wie viel GB? - oder doch besser einzeln zusammenstellen??
https://www.reichelt.de/das-reichelt-ra ... l_13&nbc=1


Habe mich auch schon mit den Grundlagen befasst. Den zu Installieren ist einfach. Sicher bekomme ich auf ein Betriebssystem drauf. Die Frage ist, welches ist das richtige.
Den als FHEM laufen zu lassen wäre auch meine Wahl.
Ich würde den dann gleich neben der FritzBox aufbauen und über ein Netzwerkkabel anschließen.

Die Frage wäre, wie geht es dann weiter und wie greife ich den Senec ab.
Zudem kann man die Daten des Senec und was der Raspery daraus macht auch Visualisieren?

Ich würde erstmal das mit dem Rsaperry probieren wollen und die Wallbox erst danach umbauen, wenn ich mit dem Schritt davor zurecht komme.
Zudem ist auch die Frage kann ich die Wallbox dann auch noch manuell schalten, z.B. wenn nicht genug Sonne kommt?
Kann so ein Rasperry nur eine Funktion / ein Programm abarbeiten, oder gleichzeitig mehrere wie ein Windowsrechner.

(Die scheinen mit einer art Linux zu arbeiten, Linux gibt es ja auch als Dektop-Versoin und ist auch ganz brauchbar - ist das mit einem Rasperry vergleichbar nur ohne Monitor?)

Fragen über Fragen.

Dennoch freue ich mich irre, das sich endlich mal jemanden gefunden habe der auch einen Senec hat und ähnliche Gedanke mit dem Auto-Laden.
Der Senec scheint weniger verbreitet zu sein, als es die Werbung signalisiert.

Danke

LG
Torsten

Re: SENEC Modul

Verfasst: Sa Sep 05, 2020 10:04 am
von cjungde
Hallo Torsten,

super, wenn Dich die Möglichkeiten auch so begeistern wie mich.
TorstenFranz hat geschrieben: Fr Sep 04, 2020 12:28 pm Würdest du mir dabei helfen??
Ich weis aber, dass es für jemanden anstrengend sein kann wenn ein Neuling an Dingen Schwierigkeiten hat, was für erfahrene Normalität und logisch ist.
Ich kann Dir gerne mit Informationen helfen, wie Du die SENEC in OpenWB und in FHEM einbindest. Aber ich werde es nicht schaffen, Dich bei einem grundsätzlichen individuellen Aufbau der beiden Systeme zu führen. Da muss ich Dich leider bitten, die jeweiligen Foren für die vielen verschiedenen Fragen zu nutzen, die Du sicherlich auf deinem Weg stellen wirst. Ich will da nur der Enttäuschung vorbeugen, weil ich sicher zu selten im Forum aktiv bin (bzw. sein kann)

Mein Vorschlag: nimm Dir ein System als erstes vor und bleib einige Zeit dabei (egal ob OpenWB oder FHEM) Folge den Hilfen, die Du im Web findest und lerne dabei den Umgang mit einem Linux System. Du wirst bei beiden Systemen mit der Kommandozeile arbeiten und dabei verstehen müssen was du tust. Ich habe an sowas Spass, daher habe ich auch keinen all zu großen Frust, wenn bei mir etwas nicht gleich läuft.

Wenn Du feststellst, das Dir das keinen Spass macht, empfehle ich Dir die fertige OpenWB einzusetzen, dann kümmert sich hier der Support sehr gut um jede erdenklich Frage.

Wie gesagt, wenn es dann um die SENEC Einbindung geht, helfe ich hier dann gerne wieder direkt.

Viele Grüße
Christoph

Re: SENEC Modul

Verfasst: So Okt 04, 2020 7:41 pm
von TorstenFranz
Hallöchen!!

:!: :!: Super großes Lob und Dankeschön. :!: :!:

:idea: :arrow: Die Auslesung des Senec-Speichers klappt super gut.

Jetzt muss ich noch was an den Ausgaben - den Ladeeinstellungen tüfteln, und dann läuft das ganze. :D

Danke für Eure Hilfe.

LG
Torsten

Re: SENEC Modul

Verfasst: So Okt 04, 2020 8:26 pm
von cjungde
Sehr gut, das freut mich !!

Re: SENEC Modul

Verfasst: Mo Okt 05, 2020 9:01 am
von aiole
Ein Hoch auf open source und Euch, die es täglich mit Leben füllen!