Einbindung Senec Speicher möglich

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung
willi9974
Beiträge: 55
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: 1685
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: 55
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: 1685
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: 55
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: 59
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.

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

Re: Einbindung Senec Speicher möglich

Beitrag von TeamO »

Hallo Ulrich,

konntest Du Dir das schonmal anschauen?
Wenn Du mir Hilfe dabei gibst, wie ich die Daten in influxdb bekomme, kann ich auch selber mal schauen ob ich es hinbekomme.

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

Re: Einbindung Senec Speicher möglich

Beitrag von willi9974 »

Soweit ich informiert bin wartet er noch auf die Antwort von Senec. Er würde den Speicher über eine API / Protokollbeschreibung einbinden und kein Reverse Engineering machen wollen, was er möglicherweise bei jedem Firmware Update von Senec wieder anpassen müsste.

Da sehe ich leider schwarz das Senec das rausrückt, denn sie verkaufen sowas lieber selbst als es offen zu legen.

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

Re: Einbindung Senec Speicher möglich

Beitrag von willi9974 »

Gibts da schon etwas neues von Senec?
Kann man den Speicher jetzt schon einbinden?

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

Re: Einbindung Senec Speicher möglich

Beitrag von willi9974 »

Sehe gerade in der 4.6.7 ist der Senec Speicher drin, super cool.
Gleich mal ein Update gemacht.

Code: Alles auswählen

login as: pi
pi@192.168.0.140's password:
Linux solaranzeige 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7l
Software Version 4.6.4                April  2020 (BUSTER)
Software Version 4.6.4   update       April  2020
Software Version 4.6.6a  update       August 2020
Software Version 4.6.7c  update       August 2020
Last login: Mon Oct 12 08:08:29 2020 from 192.168.0.122
pi@solaranzeige:~ $
Update ist durch und wie bekomme ich jetzt den Regler 43 in die user.config.php?

Antworten