Einbindung Senec Speicher möglich

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung
Antworten
willi9974
Beiträge: 40
Registriert: Mi 13. Nov 2019, 14:47

Einbindung Senec Speicher möglich

Beitrag von willi9974 »

Hallo zusammen,

ich würde mir gerne auch so eine schöne Anzeige bauen. Hätte da aber die Frage ob man dann auch seinen Speicher (Senec Home 2.1) einbinden könnte?

Viele Grüße
Willi

Benutzeravatar
Ulrich
Administrator
Beiträge: 1364
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Einbindung Senec Speicher möglich

Beitrag von Ulrich »

Wenn der Speicher eine Kommunikationsschnittstelle hat und Du die Protokollbeschreibung besorgen kannst, dann ja. Gerade wurden die sonnenBatterien mit eingebunden.



sonnenBatterie Speicher der sonnen GmbH
sonnenBatterie Speicher der sonnen GmbH
--------------------------------------
Ulrich [Admin]

willi9974
Beiträge: 40
Registriert: Mi 13. Nov 2019, 14:47

Re: Einbindung Senec Speicher möglich

Beitrag von willi9974 »

Hallo Ulrich,

ich habe einen python Code gefunden über den der Senec Speicher ausgelesen werden kann.
Der Code erstellt im Unterverzeichnis "ausgabe" einzelne Dateien mit den benötigten werden des Speichers.

Wäre doch cool wenn du den Speicher einbinden könntest. Ich würde mich als Testobjekt zur Verfügung stellen :-)

Code: Alles auswählen


#!/usr/bin/python

import struct
import json
import urllib2
import time

ipaddress = "192.168.0.136"
debug = False

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)

#SENEC: Gesamtleistung (W) Werte -3000  >> 3000
writeVal('ausgabe/wattbezug_senec', jsondata['PM1OBJ1'] ['P_TOTAL'],0,0)

#SENEC: Frequenz(Hz) Werte 49.12 >> 50.34
writeVal ('ausgabe/evuhz',jsondata['PM1OBJ1'] ['FREQ'],0,2)

#SENEC: Spannung (V) Werte 219.12 >> 223.43
writeVal('ausgabe/evuv1', jsondata['PM1OBJ1'] ['U_AC'] [0],0,2)
writeVal('ausgabe/evuv2', jsondata['PM1OBJ1'] ['U_AC'] [1],0,2)
writeVal('ausgabe/evuv3', jsondata['PM1OBJ1'] ['U_AC'] [2],0,2)

#SENEC: Leistung (W) Werte -2345 >> 3000
writeVal('ausgabe/bezugw1', jsondata['PM1OBJ1'] ['P_AC'] [0],0,0)
writeVal('ausgabe/bezugw2', jsondata['PM1OBJ1'] ['P_AC'] [1],0,0)
writeVal('ausgabe/bezugw3', jsondata['PM1OBJ1'] ['P_AC'] [2],0,0)

#SENEC: Strom (A) Werte 0.88 >> 1.67 
writeVal('ausgabe/bezuga1_senec', jsondata['PM1OBJ1'] ['I_AC'] [0],0,2)
writeVal('ausgabe/bezuga2_senec', jsondata['PM1OBJ1'] ['I_AC'] [1],0,2)
writeVal('ausgabe/bezug33_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('ausgabe/speicherleistung_senec', jsondata['ENERGY'] ['GUI_BAT_DATA_POWER'],0,0)

#SENEC: Fuellmenge in Prozent Werte 10 >> 55 >> 100
writeVal('ausgabe/speichersoc_senec', jsondata['ENERGY'] ['GUI_BAT_DATA_FUEL_CHARGE'],0,0)

#Statistik
reqdata='{"STATISTIC":{"STAT_BAT_CHARGE":"","STAT_BAT_DISCHARGE":"","STAT_GRID_EXPORT":"","STAT_GRID_IMPORT":"","STAT_HOUSE_CONSUMPTION":"","STAT_PV_GENERATION":""}}'
response = urllib2.urlopen('http://'+ ipaddress +'/lala.cgi' ,data=reqdata)
jsondata = json.load(response)

#SENEC: Gesamtlademenge (Wh) Werte 1692
writeVal('ausgabe/speicherikwh_senec', jsondata['STATISTIC'] ['STAT_BAT_CHARGE'],1000,0)

#SENEC: Gesamtentlademenge (Wh) Werte 1590
writeVal('ausgabe/speicherekwh_senec', jsondata['STATISTIC'] ['STAT_BAT_DISCHARGE'],1000,0)

#SENEC: Gesamtimport (Wh) Werte 1809000
writeVal('ausgabe/bezugkwh_senec', jsondata['STATISTIC'] ['STAT_GRID_IMPORT'],1000,0)

#SENEC: Gesamteinspeisung Werte (Wh) 7085000
writeVal('ausgabe/einspeisungkwh_senec', jsondata['STATISTIC'] ['STAT_GRID_EXPORT'],1000,0)

Benutzeravatar
Ulrich
Administrator
Beiträge: 1364
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Einbindung Senec Speicher möglich

Beitrag von Ulrich »

Hallo willi9974,

ich habe den Hersteller wegen der Protokollbeschreibung angeschrieben. Mal sehen was der dazu sagt.
--------------------------------------
Ulrich [Admin]

willi9974
Beiträge: 40
Registriert: Mi 13. Nov 2019, 14:47

Re: Einbindung Senec Speicher möglich

Beitrag von willi9974 »

Das wird nix Ulrich, die waren da schon immer sehr unkooperativ wenn es darum geht Informationen raus zu geben.
Alle Daten die man braucht wären da und kann man über die lala.cgi abfragen und dann in die Datenbank der Solaranzeige schreiben :mrgreen:

TeamO
Beiträge: 16
Registriert: Mo 22. Jun 2020, 08:58

Re: Einbindung Senec Speicher möglich

Beitrag von TeamO »

Hallo Ulrich,

ich habe heute auch meinen Speicher angeschlossen bekommen und ein wenig gesucht.
Es gibt wohl ein bereits paar inoffizielle Wege um an die Daten der Senec zu kommen.
- Auslesen über IP-Adresse/lala.cgi
https://openwb.de/forum/viewtopic.php?f ... 5&start=30

- Auslesen über Python-Script????
https://pypi.org/project/pysenec/

leider habe ich Programiertechnisch zu wenig Erfahrung um die Daten mit diesen Informationen in die Datenbank zu bekommen.

Antworten