Einbindung Senec Speicher möglich

Solaranzeige und Docker
Alles was mit der Docker Version zu tun hat.

Moderatoren: Ulrich, DeBaschdi

willi9974
Beiträge: 82
Registriert: Mi 13. Nov 2019, 14:47
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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: 5502
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
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 . . . . . . . . [Projekt Administrator]

willi9974
Beiträge: 82
Registriert: Mi 13. Nov 2019, 14:47
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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: 5502
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
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 . . . . . . . . [Projekt Administrator]

willi9974
Beiträge: 82
Registriert: Mi 13. Nov 2019, 14:47
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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: 1138
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 23 Mal
Danksagung erhalten: 225 Mal

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.
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

TeamO
Beiträge: 1138
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 23 Mal
Danksagung erhalten: 225 Mal

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.
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

willi9974
Beiträge: 82
Registriert: Mi 13. Nov 2019, 14:47
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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: 82
Registriert: Mi 13. Nov 2019, 14:47
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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: 82
Registriert: Mi 13. Nov 2019, 14:47
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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

Zurück zu „Docker Container“