Modbus > Register bei E3DC S10 Energy Storage - Readings scrambled?

Begonnen von juanmax, 26 Juli 2017, 21:10:36

Vorheriges Thema - Nächstes Thema

Tsturm

Hi hdgucken,

funktioniert prima.

Bin gerade dran, die Ladeenergie zu berechnen - eine Batterie war bei mir defekt, und de e3DC hat ziemlich lange nur mit 30% Kapa gearbeitet (soviel zur Fernüberwachung). Ziel ist eine Warnung, wenn eine volle Ladung (oder Entladung) deutlich weniger als die Nennkapazität braucht. Falls jemand schon so was gebastelt hat - immer her damit ;-)


Zwei kleine Hinweise für alle:
Die Verschiebung der Register ist in der neuen Doku auch beschrieben:
Zitat4.1 Modbus-Abfragen
Die Startadresse kann je nach Modbus Abfrage-Software einen unterschiedlichen Offset haben. In
der Modbus-Spezifikation ist dies nicht einheitlich geregelt.
• Der Offset muss mit dem Magicbyte ausgetestet werden:
– Mit 400001 anfangen: Die Antwort sollte 0xE3DC (HEX) oder 58332 (DEC) sein
– Passt dies nicht, den Offset oder das Register um +/- 1-2 Stufen verändern (39999-40003).
• Der so ermittelte Offset muss für alle Register verwendet werden.
Es ist also möglich, dass alle Register um zwei Punkte verschoben sind.

Weiter gibt es eine neue Doku zum Modbus - anbei.

VG Timmo

Mirko_2013

Hallo zusammen,

Ich habe seit einigen Tagen das Problem das der Batterieschalter an der S10 auslöst.
Daher würde ich gern den Zustand per FHEM auslesen.

Habt Ihr eine Idee dazu, wie es gelöst werden kann?
Ein speziellen Register dafür scheint es ja nicht zu geben.

Danke und Gruß
Mirko
HP Microserver Gen8; fhem-5.8; CUL868 - V1.66; CUL868 - V1.61; CUL433 - V1.61; CUNX - V2.67; eBus Koppler USB

h002

Viele Dank für deine tolle Umsetzung. Ich habe die gleich so übernommen und wollte nur noch mal was wegen dem Register fragen. Nach der 1:1 Übernahme deiner Angaben funktioniert bei mir die Anzeige des Hausverbrauchs nicht. Mit 40070 funktioniert es, aber nicht wie bei dir mit:

attr S10E obj-h40071-poll 1
attr S10E obj-h40071-reading Hausleistung


Wie ist da der Zusammenhang mit der 16-Bit-Betrachtung?

Zitat von: hdgucken am 24 April 2020, 12:04:58
Das hat mir auch keine Ruhe gelassen, weshalb ich das Ganze genauer betrachtet habe.
Dabei ist mir aufgefallen, dass man alle Register ab 40067 mit -1 auslesen kann, wenn man sie abweichend zur E3DC Doku als 16 Bit Werte betrachtet !
Dann noch das passende unpack s> für die signed Werte gewählt und es passt alles  8)
Damit spart man sich die komplizierten Konstrukte in den User Readings  ;)
Bei den String Strömen muss man noch die Kommastelle mit "expr $val / 100" korrigieren.



attr S10E obj-h40071-poll 1
attr S10E obj-h40071-reading Hausleistung


h002

Zitat von: Mirko_2013 am 11 August 2020, 21:07:27
Ich habe seit einigen Tagen das Problem das der Batterieschalter an der S10 auslöst.
Daher würde ich gern den Zustand per FHEM auslesen.

Habt Ihr eine Idee dazu, wie es gelöst werden kann?
Ein speziellen Register dafür scheint es ja nicht zu geben.

In diesem Fall sollte ja weder die Batterie geladen noch entladen werden. Ich würde mit einem DOIF prüfen, ob der Wert für dieses Register über einen Zeitraum x auf 0 steht und dann eine Benachrichtigung senden.

hdgucken

Zitat von: h002
Viele Dank für deine tolle Umsetzung. Ich habe die gleich so übernommen und wollte nur noch mal was wegen dem Register fragen. Nach der 1:1 Übernahme deiner Angaben funktioniert bei mir die Anzeige des Hausverbrauchs nicht. Mit 40070 funktioniert es, aber nicht wie bei dir mit:

attr S10E obj-h40071-poll 1
attr S10E obj-h40071-reading Hausleistung


Das ist eigenartig, sind denn alle anderen Register dann auch "-1" oder nur das h40071 ?

Gruß Thomas

h002

Es klappt alles Ich hatte generell ein Problem mit der Modbus-Anbindung, die ich erst jetzt lösen konnte. Ich bin von deiner readingsGroup begeistert. :-)

Basti-K

Heute wurde mein S10 Installiert.
Sogleich mache ich mich ans Werk das on mit FHEM zu assimilieren.
Der Code von hdgucken
Funktioniert grundsätzlich, ich habe auch Werte bekommen aber warum disconnectet fhem nach wenigen Minuten?
Muss man ein anderes Modbus Protokoll an dem Ding wählen?


Faber38

Ich habe bei meiner E3DC auch eine ext.Quelle (3te Pannel auf der Ost Seite)
versuche ich jetzt mit
attr S10E obj-h40075-poll 1
attr S10E obj-h40075-reading extQuelle
attr S10E obj-h40075-unpack s>


dies einzubinden bekomme ich einen negativen Wert..hat mal einer einen Denkanstoss wie ich da *-1 reinbekomme so das er positiv wird ?

Faber38

Hab schon...
extQuelles { (ReadingsVal("S10", "extQuelle", "")) *-1 ;; },


Faber38

#69
an der Stelle nochmal einen Dank an die erfolgreiche Umsetzung aller beteiligten...

für interessenten hier mal meine Einstellungen...nur 1 bis 2 Änderungen zu "hdgucken"

####################################
# E3DC Anlage über Modbus auslesen
####################################
define S10E ModbusAttr 1 20 192.168.38.44:502 TCP
attr S10E alias E3/DC S10E
attr S10E devStateIcon opened:rc_WEB@32CD32  disconnected:rc_WEB@red
attr S10E event-min-interval .*:3600
attr S10E event-on-change-reading .*
attr S10E icon measure_photovoltaic_inst@yellow
attr S10E obj-h40003-len 16
attr S10E obj-h40003-poll 1
attr S10E obj-h40003-reading Hersteller
attr S10E obj-h40003-unpack a16
attr S10E obj-h40019-len 16
attr S10E obj-h40019-poll once
attr S10E obj-h40019-reading Modell
attr S10E obj-h40019-unpack a16
attr S10E obj-h40035-len 16
attr S10E obj-h40035-poll once
attr S10E obj-h40035-reading Seriennummer
attr S10E obj-h40035-unpack a16
attr S10E obj-h40051-len 16
attr S10E obj-h40051-poll once
attr S10E obj-h40051-reading Firmware
attr S10E obj-h40051-unpack a16
attr S10E obj-h40067-poll 1
attr S10E obj-h40067-reading Solarleistung
attr S10E obj-h40069-poll 1
attr S10E obj-h40069-reading Batterieleistung
attr S10E obj-h40069-unpack s>
attr S10E obj-h40071-poll 1
attr S10E obj-h40071-reading Hausleistung
attr S10E obj-h40073-poll 1
attr S10E obj-h40073-reading Netzleistung
attr S10E obj-h40073-unpack s>
attr S10E obj-h40075-poll 1
attr S10E obj-h40075-reading extQuelle
attr S10E obj-h40075-unpack s>
attr S10E obj-h40077-poll 1
attr S10E obj-h40077-reading Wallboxleistung
attr S10E obj-h40079-poll 1
attr S10E obj-h40079-reading WallboxSolarleistung
attr S10E obj-h40081-poll 1
attr S10E obj-h40081-reading Netzstatus
attr S10E obj-h40082-poll 1
attr S10E obj-h40082-reading Batterieladezustand
attr S10E obj-h40083-map 0:nicht unterstützt, 1:aktiv, 2:inaktiv, 3:nicht verfügbar, 4:MSS aus oder falsche Pos.
attr S10E obj-h40083-poll 1
attr S10E obj-h40083-reading Notstrom
attr S10E obj-h40084-poll 1
attr S10E obj-h40084-reading EMS-Status
attr S10E obj-h40087-poll 1
attr S10E obj-h40087-reading Wallboxstatus
attr S10E obj-h40095-poll 1
attr S10E obj-h40095-reading String1-Spannung
attr S10E obj-h40096-poll 1
attr S10E obj-h40096-reading String2-Spannung
attr S10E obj-h40098-expr $val / 100
attr S10E obj-h40098-poll 1
attr S10E obj-h40098-reading String1-Strom
attr S10E obj-h40099-expr $val / 100
attr S10E obj-h40099-poll 1
attr S10E obj-h40099-reading String2-Strom
attr S10E obj-h40101-poll 1
attr S10E obj-h40101-reading String1-Leistung
attr S10E obj-h40102-poll 1
attr S10E obj-h40102-reading String2-Leistung
attr S10E room Keller
attr S10E userReadings Eigenverbrauch { ReadingsVal("S10E","Netzstatus",0) & 0xFF;; },\
Autarkie { (ReadingsVal("S10E","Netzstatus",0) & 0xFF00) >> 8;; },\
Abregelung { ( ReadingsVal("S10E","EMS-Status","") & 0x10 ) == 16 ? return "aktiv" : return "inaktiv";; },\
extQuelles { (ReadingsVal("S10E", "extQuelle", "")) *-1 ;;;; },\
Solarges { (ReadingsVal("S10E", "Solarleistung", "")) + (ReadingsVal("S10E", "extQuelles", "")) ;;;; }

define E3DC readingsGroup S10E:<Batteriestatus>,Batterieladezustand \
S10E:<Solar-S/W>,Solarleistung\
S10E:<Solar-Ost>,extQuelles\
S10E:<Solar-gesammt>,Solarges\
S10E:<Hausverbrauch>,Hausleistung \
S10E:<Netzbezug>,Netzleistung \
S10E:<Batterieleistung>,Batterieleistung\
S10E:<Wallboxverbrauch>,Wallboxleistung \
S10E:<Wallbox-Sonnenstrom>,WallboxSolarleistung\
S10E:<Autarkie>,Autarkie \
S10E:<Eigenverbrauch>,Eigenverbrauch \
S10E:<Abregelung-70%>,Abregelung \
S10E:<NotStrom>,Notstrom
attr E3DC group E3DC
attr E3DC room Keller
attr E3DC valueFormat { Batterieladezustand => "%d %%", \
Hausleistung => "%d Watt", \
Solarleistung => "%d Watt",\
extQuelles => "%d Watt",  \
Solarges => "%d Watt", \
Netzleistung => "%d Watt", \
Batterieleistung => "%d Watt", \
Wallboxleistung => "%d Watt", \
WallboxSolarleistung => "%d Watt", \
Autarkie => "%d %%", \
Eigenverbrauch => "%d %%" }
attr E3DC valueStyle { if($READING eq "Batterieladezustand" && $VALUE > 85) { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE > 60) { 'style="color:forestgreen;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE  > 35) { 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE  > 19) { 'style="color:orange;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE  < 20 ) { 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE > 3000){ 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE > 1500){ 'style="color:tomato;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE > 500) { 'style="color:orange;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE >= 0) { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Solarleistung" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Solarleistung" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "extQuelles" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "extQuelles" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Solarges" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Solarges" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Netzleistung" && $VALUE < 0){ 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Netzleistung" && $VALUE > 0){ 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Netzleistung" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Batterieleistung" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Batterieleistung" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Batterieleistung" && $VALUE < 0){ 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "inaktiv") { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "aktiv") { 'style="color:lime;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "nicht verfügbar") { 'style="color:orange;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "unbekannt") { 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Wallboxleistung" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Wallboxleistung" && $VALUE > 0) { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "WallboxSolarleistung" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "WallboxSolarleistung" && $VALUE > 0) { 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Abregelung" && $VALUE eq "inaktiv") { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Abregelung" && $VALUE eq "aktiv") { 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Autarkie" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Autarkie" && $VALUE > 0)  { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Eigenverbrauch" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Eigenverbrauch" && $VALUE > 0)  { 'style="color:limegreen;;text-align:right"'} }

############
# plot
############
define FileLog_S10E FileLog ./log/S10E-%Y.log S10E
attr FileLog_S10E logtype S10E_battwatt04battsoc6:Akku/Batterie,text
attr FileLog_S10E room Sensoren->Filelog
attr FileLog_S10E sortby 01
define SVG_S10Ea SVG FileLog_S10E:SVG_S10Ea:CURRENT
attr SVG_S10Ea room Plots
attr SVG_S10Ea sortby 02
attr SVG_S10Ea title "E3DC Batterie Status Min $data{min1}, Max $data{max1}, Last $data{currval1}"
define SVG_S10Eb SVG FileLog_S10E:SVG_S10Eb:CURRENT
attr SVG_S10Eb room Plots
attr SVG_S10Eb sortby 03
attr SVG_S10Eb title "E3DC Batterie Status Min $data{min1}, Max $data{max1}, Last $data{currval1}"


ich hab eine eigene Datei Erstellt und binde die mit 
include /opt/fhem/FHEM/e3dc.cfg
in der fhem.cfg ein

Basti-K

Das Modbus Problem ist gelöst. scheinbei mag das Ethernet kein Fullduplex.
Das erinnert mich an das Kako Interface was wir auf der Arbeit haben...

Eine Frage in die Runde.
Kann/sollte man die Entscheidung wann die Wallbox Laden soll um die beste Eigenstrom Ausbeute zu haben der S10 überlassen, oder besser über fhem realisieren?
Ich habe einen GoE-Charger.
Wie würdet ihr das Problem lösen:
Sollte kann man die Ladewere über FHEM > modbus an die S10 schicken und bekommt man das ,,laden" Kommando aus der S10?
Oder alles über Doif regeln?

Init

Zitat von: Faber38 am 31 Januar 2021, 10:16:29
an der Stelle nochmal einen Dank an die erfolgreiche Umsetzung aller beteiligten...

für interessenten hier mal meine Einstellungen...nur 1 bis 2 Änderungen zu "hdgucken"

####################################
# E3DC Anlage über Modbus auslesen
####################################
define S10E ModbusAttr 1 20 192.168.38.44:502 TCP
attr S10E alias E3/DC S10E
attr S10E devStateIcon opened:rc_WEB@32CD32  disconnected:rc_WEB@red
attr S10E event-min-interval .*:3600
attr S10E event-on-change-reading .*
attr S10E icon measure_photovoltaic_inst@yellow
attr S10E obj-h40003-len 16
attr S10E obj-h40003-poll 1
attr S10E obj-h40003-reading Hersteller
attr S10E obj-h40003-unpack a16
attr S10E obj-h40019-len 16
attr S10E obj-h40019-poll once
attr S10E obj-h40019-reading Modell
attr S10E obj-h40019-unpack a16
attr S10E obj-h40035-len 16
attr S10E obj-h40035-poll once
attr S10E obj-h40035-reading Seriennummer
attr S10E obj-h40035-unpack a16
attr S10E obj-h40051-len 16
attr S10E obj-h40051-poll once
attr S10E obj-h40051-reading Firmware
attr S10E obj-h40051-unpack a16
attr S10E obj-h40067-poll 1
attr S10E obj-h40067-reading Solarleistung
attr S10E obj-h40069-poll 1
attr S10E obj-h40069-reading Batterieleistung
attr S10E obj-h40069-unpack s>
attr S10E obj-h40071-poll 1
attr S10E obj-h40071-reading Hausleistung
attr S10E obj-h40073-poll 1
attr S10E obj-h40073-reading Netzleistung
attr S10E obj-h40073-unpack s>
attr S10E obj-h40075-poll 1
attr S10E obj-h40075-reading extQuelle
attr S10E obj-h40075-unpack s>
attr S10E obj-h40077-poll 1
attr S10E obj-h40077-reading Wallboxleistung
attr S10E obj-h40079-poll 1
attr S10E obj-h40079-reading WallboxSolarleistung
attr S10E obj-h40081-poll 1
attr S10E obj-h40081-reading Netzstatus
attr S10E obj-h40082-poll 1
attr S10E obj-h40082-reading Batterieladezustand
attr S10E obj-h40083-map 0:nicht unterstützt, 1:aktiv, 2:inaktiv, 3:nicht verfügbar, 4:MSS aus oder falsche Pos.
attr S10E obj-h40083-poll 1
attr S10E obj-h40083-reading Notstrom
attr S10E obj-h40084-poll 1
attr S10E obj-h40084-reading EMS-Status
attr S10E obj-h40087-poll 1
attr S10E obj-h40087-reading Wallboxstatus
attr S10E obj-h40095-poll 1
attr S10E obj-h40095-reading String1-Spannung
attr S10E obj-h40096-poll 1
attr S10E obj-h40096-reading String2-Spannung
attr S10E obj-h40098-expr $val / 100
attr S10E obj-h40098-poll 1
attr S10E obj-h40098-reading String1-Strom
attr S10E obj-h40099-expr $val / 100
attr S10E obj-h40099-poll 1
attr S10E obj-h40099-reading String2-Strom
attr S10E obj-h40101-poll 1
attr S10E obj-h40101-reading String1-Leistung
attr S10E obj-h40102-poll 1
attr S10E obj-h40102-reading String2-Leistung
attr S10E room Keller
attr S10E userReadings Eigenverbrauch { ReadingsVal("S10E","Netzstatus",0) & 0xFF;; },\
Autarkie { (ReadingsVal("S10E","Netzstatus",0) & 0xFF00) >> 8;; },\
Abregelung { ( ReadingsVal("S10E","EMS-Status","") & 0x10 ) == 16 ? return "aktiv" : return "inaktiv";; },\
extQuelles { (ReadingsVal("S10E", "extQuelle", "")) *-1 ;;;; },\
Solarges { (ReadingsVal("S10E", "Solarleistung", "")) + (ReadingsVal("S10E", "extQuelles", "")) ;;;; }

define E3DC readingsGroup S10E:<Batteriestatus>,Batterieladezustand \
S10E:<Solar-S/W>,Solarleistung\
S10E:<Solar-Ost>,extQuelles\
S10E:<Solar-gesammt>,Solarges\
S10E:<Hausverbrauch>,Hausleistung \
S10E:<Netzbezug>,Netzleistung \
S10E:<Batterieleistung>,Batterieleistung\
S10E:<Wallboxverbrauch>,Wallboxleistung \
S10E:<Wallbox-Sonnenstrom>,WallboxSolarleistung\
S10E:<Autarkie>,Autarkie \
S10E:<Eigenverbrauch>,Eigenverbrauch \
S10E:<Abregelung-70%>,Abregelung \
S10E:<NotStrom>,Notstrom
attr E3DC group E3DC
attr E3DC room Keller
attr E3DC valueFormat { Batterieladezustand => "%d %%", \
Hausleistung => "%d Watt", \
Solarleistung => "%d Watt",\
extQuelles => "%d Watt",  \
Solarges => "%d Watt", \
Netzleistung => "%d Watt", \
Batterieleistung => "%d Watt", \
Wallboxleistung => "%d Watt", \
WallboxSolarleistung => "%d Watt", \
Autarkie => "%d %%", \
Eigenverbrauch => "%d %%" }
attr E3DC valueStyle { if($READING eq "Batterieladezustand" && $VALUE > 85) { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE > 60) { 'style="color:forestgreen;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE  > 35) { 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE  > 19) { 'style="color:orange;;text-align:right"'}\
  elsif($READING eq "Batterieladezustand" && $VALUE  < 20 ) { 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE > 3000){ 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE > 1500){ 'style="color:tomato;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE > 500) { 'style="color:orange;;text-align:right"'}\
  elsif($READING eq "Hausleistung" && $VALUE >= 0) { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Solarleistung" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Solarleistung" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "extQuelles" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "extQuelles" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Solarges" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Solarges" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Netzleistung" && $VALUE < 0){ 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Netzleistung" && $VALUE > 0){ 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Netzleistung" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Batterieleistung" && $VALUE > 0){ 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Batterieleistung" && $VALUE == 0){ 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Batterieleistung" && $VALUE < 0){ 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "inaktiv") { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "aktiv") { 'style="color:lime;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "nicht verfügbar") { 'style="color:orange;;text-align:right"'}\
  elsif($READING eq "Notstrom" && $VALUE eq "unbekannt") { 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Wallboxleistung" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Wallboxleistung" && $VALUE > 0) { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "WallboxSolarleistung" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "WallboxSolarleistung" && $VALUE > 0) { 'style="color:yellow;;text-align:right"'}\
  elsif($READING eq "Abregelung" && $VALUE eq "inaktiv") { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Abregelung" && $VALUE eq "aktiv") { 'style="color:red;;text-align:right"'}\
  elsif($READING eq "Autarkie" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Autarkie" && $VALUE > 0)  { 'style="color:limegreen;;text-align:right"'}\
  elsif($READING eq "Eigenverbrauch" && $VALUE == 0) { 'style="color:gray;;text-align:right"'}\
  elsif($READING eq "Eigenverbrauch" && $VALUE > 0)  { 'style="color:limegreen;;text-align:right"'} }

############
# plot
############
define FileLog_S10E FileLog ./log/S10E-%Y.log S10E
attr FileLog_S10E logtype S10E_battwatt04battsoc6:Akku/Batterie,text
attr FileLog_S10E room Sensoren->Filelog
attr FileLog_S10E sortby 01
define SVG_S10Ea SVG FileLog_S10E:SVG_S10Ea:CURRENT
attr SVG_S10Ea room Plots
attr SVG_S10Ea sortby 02
attr SVG_S10Ea title "E3DC Batterie Status Min $data{min1}, Max $data{max1}, Last $data{currval1}"
define SVG_S10Eb SVG FileLog_S10E:SVG_S10Eb:CURRENT
attr SVG_S10Eb room Plots
attr SVG_S10Eb sortby 03
attr SVG_S10Eb title "E3DC Batterie Status Min $data{min1}, Max $data{max1}, Last $data{currval1}"


ich hab eine eigene Datei Erstellt und binde die mit 
include /opt/fhem/FHEM/e3dc.cfg
in der fhem.cfg ein

Hallo Faber,

vielen Dank für deine Definition! Ich habe auch seit dem 01.04.2021 eine PV-Anlage mit E3DC-Speicher. Die Wallbox kommt erst nächste Woche.

Wir haben 3 Strings im Einsatz und ich würde gerne alle 3 separat auslesen und die Leistung vergleichen.

Auf welcher Basis hast du die Register angegeben?

Ich habe hier die die Version "ModBus_E3DC_Speichersysteme_V1.70_2020-06-18.pdf" gefunden, aber da ist 40101 = "DC-Strom an String 3 in Ampere (Faktor 0.01) (wird nicht verwendet)" und du verwendest 40101 als "attr S10E obj-h40101-reading String1-Leistung"

Viele Grüße
Marc

Faber38

Wenn du mal schaust..sind die immer um 1 verschoben..

Daher ist 40088 Wallbox in der Definition 40087
oder 40102 = 40101 sowie 40102 = 40101

ich lese also nur 2 Strings aus ..habe aber 3 Tracker
Tracker 1+2 laufen bei mir String  1  WEST und SÜD seite
Tracker 3 läuft alleine auf String 2 OST seite

Init

Danke für die Aufklärung hätte ich ja auch selbst draufkommen können.

Laut Installateur haben wir 3 Strings belegt, aber angeblich kann ich die nicht separat auswerten. Auswerten lassen sich angeblich nur die 2 Tracker. Jetzt ist in der Doku nur die Rede von Strings und nicht von Trackern. Wie hängen denn die Tracker und die Strings zusammen? Vielleicht ein bisschen OT, aber ich wäre dankbar für jede Aufklärung.

Faber38

Ich vermute das 1 String ein Gleichrichter ist..
Ich hab 2 Gleichrichter...und 2 String aber 3 Tracker...