Autor Thema: Photovoltaik Eigenverbrauch,Bilanz,Prognose (Kostal Plenticore; KSEM; BYD HV)  (Gelesen 43131 mal)

Offline papa

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2003
Hm - meiner ist jetzt wieder bei 93% und immer noch Sleep1.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
Hm - meiner ist jetzt wieder bei 93% und immer noch Sleep1.
Das wird wohl mit der Menge der PV-Leistung zusammen hängen, ich hatte durch Sonnenschein gut eine Stunde lang bis zu 3500W als Ladeleistung in den Speicher.
Nach der Definition, die ich mal gelsen hatte geht der Speicher ja wenn es einige Zeit zuwenig Ladung gibt in den Ruhe1 Modus. Kostal schaut ja nur was gewesen ist.
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline Crawler

  • Full Member
  • ***
  • Beiträge: 129
hi,
Bei mir funktioniert die Verbrauch Übersicht nicht richtig.
habe den KSEM und den Speicher nicht über Lan eingebunden aber eigentlich liefert der Kostal ja auch die Daten über Netzbezug.
Werden die Daten vom WR nicht komplett abgerufen?
habe noch ein ir Kopf auf dem normalen Zähler über OBIS im FHEM (kleinen Tip vielleicht wie ich die Variablen in die Berechnung rein bekomme?)

Außerdem habe ich im Log
Zitat
2021.11.28 23:58:00 2: WR_1_Speicher_1_ExternControl: {    CommandGet(undef, "WR_1_API 21_Battery_Information");    CommandGet(undef, "WR_1_API 22_Battery_InternControl");    CommandGet(undef, "WR_1_API 23_Battery_ExternControl");    CommandGet(undef, "WR_1_API 25_Battery_EM_State");    }: 25_Battery_EM_State requested, watch readings
2021.11.29 00:00:02 1: PERL WARNING: Argument "" isn't numeric in numeric lt (<) at (eval 952425) line 1, <GEN34> line 6585.
und
Zitat
2021.11.30 22:09:50 3: WR_1_Speicher_1_ExternControl:Warning in DOIF_RegisterEvalAll:package ui_Table;::DOIF_Widget($hash,$reg,'WR_1_Speicher_1_ExternControl_uiTable_c_5_2_0_0',::DOIF_FUNC_WR_1_Speicher_1_ExternControl_Status(::ReadingValDoIf($hash,'WR_1','Solar_Calculation_fc1_day'),::ReadingValDoIf($hash,'WR_1_Speicher_1_ExternControl','SpeicherMaxSOC_fc1_Limit'),"red","<","","",::ReadingValDoIf($hash,'WR_1_Speicher_1_ExternControl','SpeicherMaxSOC_fc1_Limit')-1,"#00FF00",">="),"")
2021.11.30 22:09:50 1: PERL WARNING: Argument "" isn't numeric in numeric eq (==) at (eval 1181856) line 1.

FHEM auf Raspi + HMLan + 14 Aktoren + OBIS(Strom) über GPIO

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
hi,
Bei mir funktioniert die Verbrauch Übersicht nicht richtig.
habe den KSEM und den Speicher nicht über Lan eingebunden aber eigentlich liefert der Kostal ja auch die Daten über Netzbezug.
Werden die Daten vom WR nicht komplett abgerufen?
habe noch ein ir Kopf auf dem normalen Zähler über OBIS im FHEM (kleinen Tip vielleicht wie ich die Variablen in die Berechnung rein bekomme?)
Hallo Crawler,
Vor einem 3/4 Jahr habe ich die Erweiterung zum Schwarm durchgeführt, was auch von einigen anderen benötigt wurde. Dabei werden für die Korrektur der Verbrauchsdaten auch Werte vom KSEM benötigt, was bei Dir jetzt durch die fehlende KSEM Anbindung nicht verfügbar ist. Der Beste Weg wäre den KSEM auch ins LAN zu bringen und mit einzubinden.
Durch ein Telefonat mit Kostal habe ich gestern auch noch erfahren, dass es eine größere Weiterentwicklung beim KSEM geben wird und dieser dann die zentrale lokale Visualisierung übernehmen soll. Wann das kommt wurde noch nicht verraten. Spätestend dann wäre es auch für Dich interessant den KSEM einzubinden.

Im KSEM wird der aktuelle Zähler für den Bezug und die Lieferung benötigt, die Du auch auf Deinen Lesekopf ummappen kannst.
WR_0_KSEM:Active_energy-
WR_0_KSEM:Active_energy+

Die readings mit SW_Meter_init_* werden täglich als initialwerte durch das PV_Schedule DOIF gesichert und dienen der Berechnung für die Statistik.
################################################################################################################
## 5 Jeden Morgen die Zählerstände aktualisieren, damit im Schwarm die Statistiken berechnet werden können
##
DOELSEIF
([00:01])

  (setreading WR_1_API SW_Meter_init_FeedInGrid_Day [WR_0_KSEM:Active_energy-])   ## 6172
  (setreading WR_1_API SW_Meter_init_Grid_Day [WR_0_KSEM:Active_energy+])         ## 4727

 ({if ($mday eq 1)
     {
      fhem("setreading WR_1_API SW_Meter_init_FeedInGrid_Month [WR_0_KSEM:Active_energy-]");   ## 5707
      fhem("setreading WR_1_API SW_Meter_init_Grid_Month [WR_0_KSEM:Active_energy+]");         ## 4717

      if ($yday eq 1)
        {
         fhem("setreading WR_1_API SW_Meter_init_FeedInGrid_Year [WR_0_KSEM:Active_energy-]");   ## 5241
         fhem("setreading WR_1_API SW_Meter_init_Grid_Year [WR_0_KSEM:Active_energy+]");         ## 3517
        }
     }
  }
 )

Hier sind die userreadings, die die Tag/Monat/Jahr Werte korrigieren, die im Schwarm vom Plenticore falsch sind.
SW_Statistic_EnergyHomeFeedInGrid_Day:SW_Statistic_Yield_Day.* {   (ReadingsVal("WR_0_KSEM","Active_energy-",0) - ReadingsVal("$NAME","SW_Meter_init_FeedInGrid_Day"  ,0)) * 1000 },
SW_Statistic_EnergyHomeFeedInGrid_Month:SW_Statistic_Yield_Month.* { (ReadingsVal("WR_0_KSEM","Active_energy-",0) - ReadingsVal("$NAME","SW_Meter_init_FeedInGrid_Month",0)) * 1000 },
SW_Statistic_EnergyHomeFeedInGrid_Year:SW_Statistic_Yield_Year.* {  (ReadingsVal("WR_0_KSEM","Active_energy-",0) - ReadingsVal("$NAME","SW_Meter_init_FeedInGrid_Year" ,0)) * 1000 },

SW_Statistic_EnergyHomeGrid_Day:SW_Statistic_Yield_Day.* {   (ReadingsVal("WR_0_KSEM","Active_energy+",0) - ReadingsVal("$NAME","SW_Meter_init_Grid_Day"  ,0)) * 1000 },
SW_Statistic_EnergyHomeGrid_Month:SW_Statistic_Yield_Month.* { (ReadingsVal("WR_0_KSEM","Active_energy+",0) - ReadingsVal("$NAME","SW_Meter_init_Grid_Month",0)) * 1000 },
SW_Statistic_EnergyHomeGrid_Year:SW_Statistic_Yield_Year.* {  (ReadingsVal("WR_0_KSEM","Active_energy+",0) - ReadingsVal("$NAME","SW_Meter_init_Grid_Year" ,0)) * 1000 },
Ein anderer Weg wäre natürlich möglich, wenn Du das wieder zurück baust, jedoch müsstest Du das dann bei jedem Update wieder berücksichtigen.
Die Einspeisung wird vom Plenticore, wenn ich mich recht erinnere gar nicht als Statistik geliefert und müsste dann eh selber berechnet werden.
Also wie ober bereits erläutert wäre es das beste, wenn Du den KSEM anbindest. Es läuft ansonsten bald in das nächste Problem.
Der KSEM und der EVU Zähler laufen ziemlich synchron.


Zum uiTable:
Zitat
2021.11.30 22:09:50 3: WR_1_Speicher_1_ExternControl:Warning in DOIF_RegisterEvalAll:package ui_Table;::DOIF_Widget($hash,$reg,'WR_1_Speicher_1_ExternControl_uiTable_c_5_2_0_0',::DOIF_FUNC_WR_1_Speicher_1_ExternControl_Status(::ReadingValDoIf($hash,'WR_1','Solar_Calculation_fc1_day'),::ReadingValDoIf($hash,'WR_1_Speicher_1_ExternControl','SpeicherMaxSOC_fc1_Limit'),"red","<","","",::ReadingValDoIf($hash,'WR_1_Speicher_1_ExternControl','SpeicherMaxSOC_fc1_Limit')-1,"#00FF00",">="),"")
2021.11.30 22:09:50 1: PERL WARNING: Argument "" isn't numeric in numeric eq (==) at (eval 1181856) line 1.
Aklualisiere da bitte nochmal das uiTable im WR_1_Speicher_1_ExternControl, ich meine das auch schon mal gehabt zu haben.
Dann schau Dir bitte noch die readings an, ob die auch alle gesetzt sind und einen nummerischen Wert haben:
WR_1:Solar_Calculation_fc1_day
WR_1_Speicher_1_ExternControl:SpeicherMaxSOC_fc1_Limit


Log Meldungen CommandGet()
Die Meldungen habe ich leider auch noch im Log und habe noch keinen Weg gefunden sie weg zu bekommen. Die entstehen beim CommandGet() aufruf und der Übergabe des Get Befehls an FHEM.
2021.11.28 23:58:00 2: WR_1_Speicher_1_ExternControl: {    CommandGet(undef, "WR_1_API 21_Battery_Information");    CommandGet(undef, "WR_1_API 22_Battery_InternControl");    CommandGet(undef, "WR_1_API 23_Battery_ExternControl");    CommandGet(undef, "WR_1_API 25_Battery_EM_State");    }: 25_Battery_EM_State requested, watch readings


Bei dieser Meldung fehlen noch die Einträge davor, das gehört irgend wo anders dazu.
2021.11.29 00:00:02 1: PERL WARNING: Argument "" isn't numeric in numeric lt (<) at (eval 952425) line 1, <GEN34> line 6585.
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
Hey Leute, es ist soweit, ich zitiere mich schon selber :-) Das ist fast wie wenze selbstgespräche führst :-)
Log Meldungen CommandGet()
Die Meldungen habe ich leider auch noch im Log und habe noch keinen Weg gefunden sie weg zu bekommen. Die entstehen beim CommandGet() aufruf und der Übergabe des Get Befehls an FHEM.
2021.11.28 23:58:00 2: WR_1_Speicher_1_ExternControl: {    CommandGet(undef, "WR_1_API 21_Battery_Information");    CommandGet(undef, "WR_1_API 22_Battery_InternControl");    CommandGet(undef, "WR_1_API 23_Battery_ExternControl");    CommandGet(undef, "WR_1_API 25_Battery_EM_State");    }: 25_Battery_EM_State requested, watch readings
Also, zu dieser Meldung habe ich mich jetzt doch erinnert.
Der letzte Aufruf vom CommandGet() gibt den Return Code "25_Battery_EM_State requested, watch readings" raus. Die anderen davor warscheinlich auch, die werden aber wohl von dem nächsten wieder überlagert, da es ja zu dem Perl Aufruf nur einen Return Code am Ende gibt.

Um das nun weg zu bekommen habe ich dahinter noch eine Log Ausgabe, aber direkt auf Log Level 4 , gesetzt.
Bei mir steht WR_1_Speicher_1_ExternControl auf verbose 3 , damit ich die Meldungen sehe um Fehler zu finden.

WR_1_Speicher_1_ExternControl
################################################################################################################
## 1 Speicher Status vom WR_1_Speicher_1 aktualisieren.
##   Dies geschieht über das WR_1_API Device, da der Speicher direkt am Wechselrichter angeschlossen ist.
##
 ([:58])
  {
   CommandGet(undef, "WR_1_API 21_Battery_Information");
   CommandGet(undef, "WR_1_API 22_Battery_InternControl");
   CommandGet(undef, "WR_1_API 23_Battery_ExternControl");
   CommandGet(undef, "WR_1_API 25_Battery_EM_State");
   if (AttrVal("$SELF","verbose",0) >=4)
       {Log 3, "$SELF cmd_1  : Speicher Status abfrage"};
  }

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline kaiman

  • Jr. Member
  • **
  • Beiträge: 53
Hi zusammen,

ich habe folgendes Problem:

Ich wollte den Kostal, wie im Wiki beschrieben ist, einbinden. Beim Device defmod WR_1 ModbusAttr 71 60 192.168.1.50:1502 TCP habe ich das Problem, dass anscheinend im stateFormat ein Fehler zu sein. Lasse ich den Eintrag sateFormat weg, bekomme ich eine restlichen Werte ausgelesen.

Wenn ich den stateFormat eintrage und auf OK klicke, bekomme ich folgende Fehlermeldung:
"syntax error at (eval 94) line 53, near "userReadings Total_PV_P_reserve:"
syntax error at (eval 94) line 53, near "0 : round($reserve,0)  "
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 55.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 55.
syntax error at (eval 94) line 57, near ") : round(ReadingsVal($NAME,"Total_DC_P_sumOfAllPVInputs",0),0) "
syntax error at (eval 94) line 59, near "0 : round($x,0) "
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 61.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 63.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 63.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 64.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 67.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 69.
syntax error at (eval 94) line 71, near "0 : round($reserve,0)  "
(eval 94) has too many errors.
"

hat jemand eine Idee, woran das liegen kann?

LG
« Letzte Änderung: 15 Dezember 2021, 12:58:06 von kaiman »

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
ich habe folgendes Problem:

Ich wollte den Kostal, wie im Wiki beschrieben ist, einbinden. Beim Device defmod WR_1_API HTTPMOD http://%IP-WR%/api/v1/auth/me 0 habe ich das Problem, dass anscheinend im stateFormat ein Fehler zu sein. Lasse ich den Eintrag stateFormat weg, bekomme ich eine restlichen Werte ausgelesen.

Wenn ich den stateFormat eintrage und auf OK klicke, bekomme ich folgende Fehlermeldung:
"syntax error at (eval 94) line 53, near "userReadings Total_PV_P_reserve:"
syntax error at (eval 94) line 53, near "0 : round($reserve,0)  "
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 55.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 55.
syntax error at (eval 94) line 57, near ") : round(ReadingsVal($NAME,"Total_DC_P_sumOfAllPVInputs",0),0) "
syntax error at (eval 94) line 59, near "0 : round($x,0) "
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 61.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 63.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 63.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 64.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 67.
Global symbol "$NAME" requires explicit package name (did you forget to declare "my $NAME"?) at (eval 94) line 69.
syntax error at (eval 94) line 71, near "0 : round($reserve,0)  "
(eval 94) has too many errors.

Hallo Kaiman,

Das userReadings Total_PV_P_reserve ist im Device WR_1 bitte schau Dir das nochmal genauer an.

Zuerst sollte WR_1 und WR_0_KSEM korrekte Werte liefern. Danach kommen dann die Statistiken mit dem WR_1_API .

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline kaiman

  • Jr. Member
  • **
  • Beiträge: 53
Hallo Kaiman,

Das userReadings Total_PV_P_reserve ist im Device WR_1 bitte schau Dir das nochmal genauer an.

Zuerst sollte WR_1 und WR_0_KSEM korrekte Werte liefern. Danach kommen dann die Statistiken mit dem WR_1_API .

VG
   Christian

Danke für den Input. Ich habe gerade gesehen, dass ich das falsche Device gepostet hatte. Es ist im defmod WR_1 ModbusAttr 71 60 192.168.1.50:1502 TCP.

hab den Fehler gefunden, anscheinend hab ich beim kopieren einen Fehler gemacht ;(
Bekomme die Daten jetzt angezeigt.

Was mir noch aufgefallen ist: der WR_0_KSEM steht immer aus disconnected, obwohl die IP stimmt ...

defmod WR_0_KSEM ModbusAttr 1 60 192.168.1.51:502 TCP
attr WR_0_KSEM alias WR_0_KSEM
attr WR_0_KSEM comment Version 2020.10.19 18:28\
Der KSEM ermittelt nicht alle Werte, welche in der SunSpec spezifiziert sind.\
Alle nicht unterstützen Werte sind mit 0x8000 gekennzeichnet.\
Für die nicht unterstützten Zählerstände wird die 0x800000000 ausgegeben.\
\
Der Summenstrom M_AC_Current (sum of active phases) kann aber durch den Endanwender selber\
berechnet werden aus der Summe der Einzelwerte (Phase A AC current, Phase B AC current Phase C AC current)\
\
Die einzelnen Spannungen zwischen den Phasen können nicht gemessen werden und werden deshalb nicht ausgegeben.
attr WR_0_KSEM dev-h-defPoll 1
attr WR_0_KSEM dev-type-INT16-len 1
attr WR_0_KSEM dev-type-INT16-unpack s>
attr WR_0_KSEM dev-type-INT16_Current-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Current_SF",0))
attr WR_0_KSEM dev-type-INT16_Current-format %.2f
attr WR_0_KSEM dev-type-INT16_Current-len 1
attr WR_0_KSEM dev-type-INT16_Current-unpack s>
attr WR_0_KSEM dev-type-INT16_Freq-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Freq_SF",0))
attr WR_0_KSEM dev-type-INT16_Freq-format %.2f
attr WR_0_KSEM dev-type-INT16_Freq-len 1
attr WR_0_KSEM dev-type-INT16_Freq-unpack s>
attr WR_0_KSEM dev-type-INT16_PF-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_PF_SF",0))
attr WR_0_KSEM dev-type-INT16_PF-format %.2f
attr WR_0_KSEM dev-type-INT16_PF-len 1
attr WR_0_KSEM dev-type-INT16_PF-unpack s>
attr WR_0_KSEM dev-type-INT16_Power-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Power_SF",0))
attr WR_0_KSEM dev-type-INT16_Power-format %.2f
attr WR_0_KSEM dev-type-INT16_Power-len 1
attr WR_0_KSEM dev-type-INT16_Power-unpack s>
attr WR_0_KSEM dev-type-INT16_VA-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_VA_SF",0))
attr WR_0_KSEM dev-type-INT16_VA-format %.2f
attr WR_0_KSEM dev-type-INT16_VA-len 1
attr WR_0_KSEM dev-type-INT16_VA-unpack s>
attr WR_0_KSEM dev-type-INT16_VAR-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_VAR_SF",0))
attr WR_0_KSEM dev-type-INT16_VAR-format %.2f
attr WR_0_KSEM dev-type-INT16_VAR-len 1
attr WR_0_KSEM dev-type-INT16_VAR-unpack s>
attr WR_0_KSEM dev-type-INT16_Voltage-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Voltage_SF",0))
attr WR_0_KSEM dev-type-INT16_Voltage-format %.2f
attr WR_0_KSEM dev-type-INT16_Voltage-len 1
attr WR_0_KSEM dev-type-INT16_Voltage-unpack s>
attr WR_0_KSEM dev-type-STR32-expr $val =~ s/[\00]+//gr
attr WR_0_KSEM dev-type-STR32-format %s
attr WR_0_KSEM dev-type-STR32-len 16
attr WR_0_KSEM dev-type-STR32-unpack a*
attr WR_0_KSEM dev-type-UINT16-format %s
attr WR_0_KSEM dev-type-UINT16-len 1
attr WR_0_KSEM dev-type-UINT32-format %s
attr WR_0_KSEM dev-type-UINT32-len 2
attr WR_0_KSEM dev-type-UINT64-expr $val/10000
attr WR_0_KSEM dev-type-UINT64-format %s
attr WR_0_KSEM dev-type-UINT64-len 4
attr WR_0_KSEM dev-type-UINT64-unpack Q>
attr WR_0_KSEM disable 0
attr WR_0_KSEM group PV Eigenverbrauch
attr WR_0_KSEM obj-h40072-reading M_AC_Current_A
attr WR_0_KSEM obj-h40072-type INT16_Current
attr WR_0_KSEM obj-h40073-reading M_AC_Current_B
attr WR_0_KSEM obj-h40073-type INT16_Current
attr WR_0_KSEM obj-h40074-reading M_AC_Current_C
attr WR_0_KSEM obj-h40074-type INT16_Current
attr WR_0_KSEM obj-h40075-reading M_AC_Current_SF
attr WR_0_KSEM obj-h40075-type INT16
attr WR_0_KSEM obj-h40077-reading M_AC_Voltage_AN
attr WR_0_KSEM obj-h40077-type INT16_Voltage
attr WR_0_KSEM obj-h40078-reading M_AC_Voltage_BN
attr WR_0_KSEM obj-h40078-type INT16_Voltage
attr WR_0_KSEM obj-h40079-reading M_AC_Voltage_CN
attr WR_0_KSEM obj-h40079-type INT16_Voltage
attr WR_0_KSEM obj-h40084-reading M_AC_Voltage_SF
attr WR_0_KSEM obj-h40084-type INT16
attr WR_0_KSEM obj-h40085-reading M_AC_Freq
attr WR_0_KSEM obj-h40085-type INT16_Freq
attr WR_0_KSEM obj-h40086-reading M_AC_Freq_SF
attr WR_0_KSEM obj-h40086-type INT16
attr WR_0_KSEM obj-h40087-reading M_AC_Power
attr WR_0_KSEM obj-h40087-type INT16_Power
attr WR_0_KSEM obj-h40088-reading M_AC_Power_A
attr WR_0_KSEM obj-h40088-type INT16_Power
attr WR_0_KSEM obj-h40089-reading M_AC_Power_B
attr WR_0_KSEM obj-h40089-type INT16_Power
attr WR_0_KSEM obj-h40090-reading M_AC_Power_C
attr WR_0_KSEM obj-h40090-type INT16_Power
attr WR_0_KSEM obj-h40091-reading M_AC_Power_SF
attr WR_0_KSEM obj-h40091-type INT16
attr WR_0_KSEM obj-h40092-reading M_AC_VA
attr WR_0_KSEM obj-h40092-type INT16_VA
attr WR_0_KSEM obj-h40093-reading M_AC_VA_A
attr WR_0_KSEM obj-h40093-type INT16_VA
attr WR_0_KSEM obj-h40094-reading M_AC_VA_B
attr WR_0_KSEM obj-h40094-type INT16_VA
attr WR_0_KSEM obj-h40095-reading M_AC_VA_C
attr WR_0_KSEM obj-h40095-type INT16_VA
attr WR_0_KSEM obj-h40096-reading M_AC_VA_SF
attr WR_0_KSEM obj-h40096-type INT16
attr WR_0_KSEM obj-h40097-reading M_AC_VAR
attr WR_0_KSEM obj-h40097-type INT16_VAR
attr WR_0_KSEM obj-h40098-reading M_AC_VAR_A
attr WR_0_KSEM obj-h40098-type INT16_VAR
attr WR_0_KSEM obj-h40099-reading M_AC_VAR_B
attr WR_0_KSEM obj-h40099-type INT16_VAR
attr WR_0_KSEM obj-h40100-reading M_AC_VAR_C
attr WR_0_KSEM obj-h40100-type INT16_VAR
attr WR_0_KSEM obj-h40101-reading M_AC_VAR_SF
attr WR_0_KSEM obj-h40101-type INT16
attr WR_0_KSEM obj-h40102-reading M_AC_PF
attr WR_0_KSEM obj-h40102-type INT16_PF
attr WR_0_KSEM obj-h40103-reading M_AC_PF_A
attr WR_0_KSEM obj-h40103-type INT16_PF
attr WR_0_KSEM obj-h40104-reading M_AC_PF_B
attr WR_0_KSEM obj-h40104-type INT16_PF
attr WR_0_KSEM obj-h40105-reading M_AC_PF_C
attr WR_0_KSEM obj-h40105-type INT16_PF
attr WR_0_KSEM obj-h40106-reading M_AC_PF_SF
attr WR_0_KSEM obj-h40106-type INT16
attr WR_0_KSEM obj-h40108-reading M_Exported
attr WR_0_KSEM obj-h40108-type UINT32
attr WR_0_KSEM obj-h40110-reading M_Exported_A
attr WR_0_KSEM obj-h40110-type UINT32
attr WR_0_KSEM obj-h40112-reading M_Exported_B
attr WR_0_KSEM obj-h40112-type UINT32
attr WR_0_KSEM obj-h40114-reading M_Exported_C
attr WR_0_KSEM obj-h40114-type UINT32
attr WR_0_KSEM obj-h40116-reading M_Imported
attr WR_0_KSEM obj-h40116-type UINT32
attr WR_0_KSEM obj-h40118-reading M_Imported_A
attr WR_0_KSEM obj-h40118-type UINT32
attr WR_0_KSEM obj-h40120-reading M_Imported_B
attr WR_0_KSEM obj-h40120-type UINT32
attr WR_0_KSEM obj-h40122-reading M_Imported_C
attr WR_0_KSEM obj-h40122-type UINT32
attr WR_0_KSEM obj-h40125-reading M_Exported_VA
attr WR_0_KSEM obj-h40125-type UINT32
attr WR_0_KSEM obj-h40127-reading M_Exported_VA_A
attr WR_0_KSEM obj-h40127-type UINT32
attr WR_0_KSEM obj-h40129-reading M_Exported_VA_B
attr WR_0_KSEM obj-h40129-type UINT32
attr WR_0_KSEM obj-h40131-reading M_Exported_VA_C
attr WR_0_KSEM obj-h40131-type UINT32
attr WR_0_KSEM obj-h40133-reading M_Imported_VA
attr WR_0_KSEM obj-h40133-type UINT32
attr WR_0_KSEM obj-h40135-reading M_Imported_VA_A
attr WR_0_KSEM obj-h40135-type UINT32
attr WR_0_KSEM obj-h40137-reading M_Imported_VA_B
attr WR_0_KSEM obj-h40137-type UINT32
attr WR_0_KSEM obj-h40139-reading M_Imported_VA_C
attr WR_0_KSEM obj-h40139-type UINT32
attr WR_0_KSEM obj-h512-reading Active_energy+
attr WR_0_KSEM obj-h512-type UINT64
attr WR_0_KSEM obj-h516-reading Active_energy-
attr WR_0_KSEM obj-h516-type UINT64
attr WR_0_KSEM obj-h8192-reading ManufacturerID
attr WR_0_KSEM obj-h8192-type UINT16
attr WR_0_KSEM obj-h8193-reading ProductID
attr WR_0_KSEM obj-h8193-type UINT16
attr WR_0_KSEM obj-h8194-reading ProductVersion
attr WR_0_KSEM obj-h8194-type UINT16
attr WR_0_KSEM obj-h8195-reading FirmwareVersion
attr WR_0_KSEM obj-h8195-type UINT16
attr WR_0_KSEM obj-h8196-reading VendorName
attr WR_0_KSEM obj-h8196-type STR32
attr WR_0_KSEM obj-h8212-reading Productname
attr WR_0_KSEM obj-h8212-type STR32
attr WR_0_KSEM obj-h8228-reading SerialNumber
attr WR_0_KSEM obj-h8228-type STR32
attr WR_0_KSEM obj-h8244-reading MeasuringInterval
attr WR_0_KSEM obj-h8244-type UINT16
attr WR_0_KSEM room Photovoltaik
attr WR_0_KSEM userReadings M_AC_Current:M_AC_Current_.* { ReadingsVal($NAME,"M_AC_Current_A",0) + ReadingsVal($NAME,"M_AC_Current_B",0) + ReadingsVal($NAME,"M_AC_Current_C",0) }
attr WR_0_KSEM verbose 4

« Letzte Änderung: 15 Dezember 2021, 14:28:11 von kaiman »

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
Danke für den Input. Ich habe gerade gesehen, dass ich das falsche Device gepostet hatte. Es ist im defmod WR_1 ModbusAttr 71 60 192.168.1.50:1502 TCP.

hier mal die raw definition

defmod WR_1 ModbusAttr 71 60 192.168.1.50:1502 TCP
<..>
Ich kann dort die userReadings Definition nirgends sehen???

Zitat
Was mir noch aufgefallen ist: der WR_0_KSEM steht immer aus disconnected, obwohl die IP stimmt ...
Dann schau mal ob Du im KSEM auch die ModBus Schnittstelle aktiviert hast :-)
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline kaiman

  • Jr. Member
  • **
  • Beiträge: 53
Habe gerade gesehen, bei kopieren, scheint da einiges kaput gegangen zu sein ...

geht jetzt ...


DANKE für die schnelle Hilfe!
« Letzte Änderung: 15 Dezember 2021, 14:38:42 von kaiman »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
Habe gerade gesehen, bei kopieren, scheint da einiges kaput gegangen zu sein ...

geht jetzt ...
Dann kommen jetzt die Statistiken mit dem WR_1_API...
Das Finanzamt und der Netzbetreiber möchten ja auch bald Daten haben.
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline misux

  • Hero Member
  • *****
  • Beiträge: 1007
Hallo Leute und frohe Weihnachten euch allen!

Wie soll ich es sagen, ich habe schon eine ordentliche Konfig im Fhem und mit dem einen und anderen ein mine Problmchen gehabt... ABER noch nie so viele wie mit diesem Ding!

Sorry, entwerde bin ich einfach zu blöd oder es ist einfach zu umständlich beschrieben.

Meine Hardware:
Ein Wechselrichter (Kostal Plenticore 10 Plus)(IP:192.168.1.37) eine Batterie BYD(Keine IP) an einem Eingang ein KSEM(IP:192.168.1.41) und die Module die an den letzten beiden Eingängen am Wechselrichter angebunden sind.
Meine Batterie finde ich leider nicht im Netzwerk, ist irgendwie anders verbunden mit dem Wechselrichter.
Im KSEM Webinterface ist kein Wechselrichter eingerichtet, warum auch immer, hat die Firma so eingestellt. Und auch in den MODBUS einstellungen sind nur die RS485 Schnittstellen eingerichtet, die TCP Einstellungen sind Leer

Mein Wunsch: Eine einfache Anzeige später im FTUI über den aktuellen Ladezustand der Batterie sehen, den Status ob sie gerade geladen oder entladen wird, was gerade auf dem Dach erzeugt wird und was die Hütte momentan verbraucht.

Mein Problem:
Ich bekomme es nicht gebacken...

Mit
define WP ModbusAttr 71 60 192.168.1.37:1502 TCPbekommen ich schon mal meinen WR_1 mit dem Status "opened"

Hier ein List:
Internals:
   CFGFN     
   DEF        71 60 192.168.1.37:1502 TCP
   DeviceName 192.168.1.37:1502
   EXPECT     idle
   FD         47
   FUUID      61c4c04d-f33f-e7ed-2f20-99f2e7ced92c7402
   IODev      WR_1
   Interval   60
   LASTOPEN   1640344432.00982
   MODBUSID   71
   MODE       master
   MODULEVERSION Modbus 4.4.02 - 31.3.2021
   NAME       WR_1
   NOTIFYDEV  global
   NR         569837
   NTFY_ORDER 50-WR_1
   PARTIAL   
   PROTOCOL   TCP
   STATE      opened
   TCPConn    1
   TYPE       ModbusAttr
   devioLoglevel 3
   nextOpenDelay 60
   READ:
   READINGS:
     2021-12-24 12:13:52   state           opened
   defptr:
     WR_1       71
Attributes:
   userattr   obj-h208-format obj-h512-len obj-h515-len

Un danach stehe ich wie ein Elch vorm Wald...

Ich habe keinen Plan was ich noch alles brauche oder welche RAW definition ich nehmen soll..
Die Anleitung beschreibt wirklich sehr viel und ausfürlich, aber ich bekomme es einfach nicht hin...

wenn ich mit dem RAW editor diese RAW definition erstellen möchte :

defmod WR_1 ModbusAttr 71 60 192.168.1.37:1502 TCP
attr WR_1 userattr obj-h208-format obj-h512-len obj-h515-len
attr WR_1 DbLogExclude .*
attr WR_1 DbLogInclude Act_state_of_charge,Actual_Battery_charge_-minus_or_discharge_-plus_P,Actual_Battery_charge_usable_P,Battery_Total.*,Battery_charge.*,Battery_gross.*,Battery_temperature,Battery_MaxChargePowerLimitAbs,Battery_.*SOC,P_DC1,P_DC2,Total_DC_PV_Energy_sumOfAllPVInputs,Total_Active_P_EM,Solar_Calculation,Solar_Calculation_fc0_4h,Solar_Calculation_fc0_day,Solar_Calculation_fc0_rest,Solar_Correction.*,Solar_Cloud,Solar_East_Covered,Solar_Rain,Solar_SolarRadiation,Solar_Temp,Solar_WR_.*,Solar_middayhigh.*,SW_.*,P_limit_from_EVU.*
attr WR_1 alias WR_1
attr WR_1 alignTime 00:00
attr WR_1 comment Version 2021.06.02 14:00\
Kostal Plenticore 10 Plus mit BYD Speicher
attr WR_1 dev-h-combine 8
attr WR_1 dev-h-defFormat %.2f
attr WR_1 dev-h-defLen 2
attr WR_1 dev-h-defPoll 1
attr WR_1 dev-h-defRevRegs 1
attr WR_1 dev-h-defUnpack f>
attr WR_1 dev-type-STR-format %s
attr WR_1 dev-type-STR-len 8
attr WR_1 dev-type-STR-revRegs 0
attr WR_1 dev-type-STR-unpack a*
attr WR_1 disable 0
attr WR_1 event-on-change-reading Act_state_of_charge,Actual_Battery_charge_-minus_or_discharge_-plus_I,Actual_Battery_charge_-minus_or_discharge_-plus_P,Actual_Battery_charge_usable_P,Battery_Total.*,Battery_charge.*,Battery_gross.*,Battery_temperature,Battery_MaxChargePowerLimitAbs,Battery_.*SOC,Home_own_consumption.*,P_DC1,P_DC2,Total_DC_P.*,Total_DC_PV_Energy.*,Total_PV_P_reserve,Solar_.*,Total_.*,SW_.*,.*_yield,Inverter_state.*,Inverter_Generation_P_Actual.*,P_limit_from_EVU.*,Solar_Calculation_fc.*_day
attr WR_1 group PV Eigenverbrauch
attr WR_1 icon sani_solar
attr WR_1 obj-h100-reading Total_DC_P
attr WR_1 obj-h1024-len 1
attr WR_1 obj-h1024-reading Battery_Charge_AC_P_Setpoint
attr WR_1 obj-h1024-set 1
attr WR_1 obj-h1025-len 1
attr WR_1 obj-h1025-reading Battery_P_ScaleFactor
attr WR_1 obj-h1026-reading Battery_Charge_AC_P_SetpointAbs
attr WR_1 obj-h1026-set 1
attr WR_1 obj-h1028-reading Battery_Charge_DC_I_SetpointRel
attr WR_1 obj-h1028-set 1
attr WR_1 obj-h1030-reading Battery_Charge_AC_P_SetpointRel
attr WR_1 obj-h1030-set 1
attr WR_1 obj-h1032-reading Battery_Charge_DC_I_SetpointAbs
attr WR_1 obj-h1032-set 1
attr WR_1 obj-h1034-reading Battery_Charge_DC_P_SetpointAbs
attr WR_1 obj-h1034-set 1
attr WR_1 obj-h1036-reading Battery_Charge_DC_P_SetpointRel
attr WR_1 obj-h1036-set 1
attr WR_1 obj-h1038-reading Battery_MaxChargePowerLimitAbs
attr WR_1 obj-h1038-set 1
attr WR_1 obj-h104-format %s
attr WR_1 obj-h104-map 0:Normal,8:Ruhe1,16:Ruhe2,32:Ausgleichsladung,64:Tiefentladeschutz
attr WR_1 obj-h104-reading State_of_EM
attr WR_1 obj-h104-revRegs 0
attr WR_1 obj-h104-unpack N
attr WR_1 obj-h1040-reading Battery_MaxDischargePowerLimitAbs
attr WR_1 obj-h1040-set 1
attr WR_1 obj-h1042-reading Battery_MinSOC
attr WR_1 obj-h1042-set 1
attr WR_1 obj-h1044-reading Battery_MaxSOC
attr WR_1 obj-h1044-set 1
attr WR_1 obj-h1046-reading Battery_Total_DC_ChargeEnergy_DCsideToBattery
attr WR_1 obj-h1048-reading Battery_Total_DC_DischargeEnergy_DCsideFromBattery
attr WR_1 obj-h1050-reading Battery_Total_AC_ChargeEnergy_ACsideToBattery
attr WR_1 obj-h1052-reading Battery_Total_AC_DischargeEnergy_BatteryToGrid
attr WR_1 obj-h1054-reading Battery_Total_AC_ChargeEnergy_gridToBattery
attr WR_1 obj-h1056-reading Total_DC_PV_Energy_sumOfAllPVInputs
attr WR_1 obj-h1058-reading Total_DC_Energy_From_PV1
attr WR_1 obj-h106-reading Home_own_consumption_from_Battery
attr WR_1 obj-h1060-reading Total_DC_Energy_From_PV2
attr WR_1 obj-h1062-reading Total_DC_Energy_From_PV3
attr WR_1 obj-h1064-reading Total_AC_Energy_ACsideToGrid
attr WR_1 obj-h1066-reading Total_DC_P_sumOfAllPVInputs
attr WR_1 obj-h1068-reading Battery_work_capacity
attr WR_1 obj-h1070-reading Battery_serial_number
attr WR_1 obj-h1072-reading Battery_Reserved_1072
attr WR_1 obj-h1074-reading Battery_Reserved_1074
attr WR_1 obj-h1076-reading Battery_Maximum_ChargePLimit_read-outFromBattery
attr WR_1 obj-h1078-reading Battery_Maximum_DischargePLimit_read-outFromBattery
attr WR_1 obj-h108-reading Home_own_consumption_from_grid
attr WR_1 obj-h1080-reading Battery_management_mode
attr WR_1 obj-h1080-set 1
attr WR_1 obj-h1081-reading Battery_Reserved_1081
attr WR_1 obj-h1082-reading Installed_sensor_type
attr WR_1 obj-h110-reading Total_home_consumption_Battery
attr WR_1 obj-h112-reading Total_home_consumption_Grid
attr WR_1 obj-h114-reading Total_home_consumption_PV
attr WR_1 obj-h116-reading Home_own_consumption_from_PV
attr WR_1 obj-h118-reading Total_home_consumption
attr WR_1 obj-h120-reading Isolation_resistance
attr WR_1 obj-h122-reading P_limit_from_EVU
attr WR_1 obj-h124-reading Total_home_consumption_rate
attr WR_1 obj-h14-reading Inverter_serial_number
attr WR_1 obj-h14-type STR
attr WR_1 obj-h144-reading Worktime
attr WR_1 obj-h150-reading Actual_cos_phi
attr WR_1 obj-h152-reading Grid_frequency
attr WR_1 obj-h154-reading I_L1
attr WR_1 obj-h156-reading Active_P_L1
attr WR_1 obj-h158-reading U_L1
attr WR_1 obj-h160-reading I_L2
attr WR_1 obj-h162-reading Active_P_L2
attr WR_1 obj-h164-reading U_L2
attr WR_1 obj-h166-reading I_L3
attr WR_1 obj-h168-reading Active_P_L3
attr WR_1 obj-h170-reading U_L3
attr WR_1 obj-h172-reading Total_AC_Active_P
attr WR_1 obj-h174-reading Total_AC_Reactive_P
attr WR_1 obj-h178-reading Total_AC_Apparent_P
attr WR_1 obj-h190-reading Battery_charge_current
attr WR_1 obj-h194-format %.0f
attr WR_1 obj-h194-reading Number_of_Battery_cycles
attr WR_1 obj-h200-reading Actual_Battery_charge_-minus_or_discharge_-plus_I
attr WR_1 obj-h202-reading PSSB_fuse_state
attr WR_1 obj-h208-reading Battery_ready_flag
attr WR_1 obj-h210-reading Act_state_of_charge
attr WR_1 obj-h212-reading Battery_state
attr WR_1 obj-h214-reading Battery_temperature
attr WR_1 obj-h216-reading Battery_voltage
attr WR_1 obj-h218-reading Cos_phi_EM
attr WR_1 obj-h220-reading Frequency_EM
attr WR_1 obj-h222-reading I_L1_EM
attr WR_1 obj-h224-reading Active_P_L1_EM
attr WR_1 obj-h226-reading Reactive_P_L1_EM
attr WR_1 obj-h228-reading Apparent_P_L1_EM
attr WR_1 obj-h230-reading U_L1_EM
attr WR_1 obj-h232-reading I_L2_EM
attr WR_1 obj-h234-reading Active_P_L2_EM
attr WR_1 obj-h236-reading Reactive_P_L2_EM
attr WR_1 obj-h238-reading Apparent_P_L2_EM
attr WR_1 obj-h240-reading U_L2_EM
attr WR_1 obj-h242-reading I_L3_EM
attr WR_1 obj-h244-reading Active_P_L3_EM
attr WR_1 obj-h246-reading Reactive_P_L3_EM
attr WR_1 obj-h248-reading Apparent_P_L3_EM
attr WR_1 obj-h250-reading U_L3_EM
attr WR_1 obj-h252-reading Total_Active_P_EM
attr WR_1 obj-h254-reading Total_Reactive_P_EM
attr WR_1 obj-h256-reading Total_Apparent_P_EM
attr WR_1 obj-h258-reading I_DC1
attr WR_1 obj-h260-reading P_DC1
attr WR_1 obj-h266-reading U_DC1
attr WR_1 obj-h268-reading I_DC2
attr WR_1 obj-h270-reading P_DC2
attr WR_1 obj-h276-reading U_DC2
attr WR_1 obj-h278-reading I_DC3
attr WR_1 obj-h280-reading P_DC3
attr WR_1 obj-h286-reading U_DC3
attr WR_1 obj-h320-reading Total_yield
attr WR_1 obj-h322-reading Daily_yield
attr WR_1 obj-h324-reading Yearly_yield
attr WR_1 obj-h326-reading Monthly_yield
attr WR_1 obj-h38-reading Software-Version_Maincontroller_MC
attr WR_1 obj-h38-type STR
attr WR_1 obj-h384-len 16
attr WR_1 obj-h384-reading Inverter_network_name
attr WR_1 obj-h384-type STR
attr WR_1 obj-h420-reading IP-address
attr WR_1 obj-h420-type STR
attr WR_1 obj-h428-reading IP-subnetmask
attr WR_1 obj-h428-type STR
attr WR_1 obj-h436-reading IP-gateway
attr WR_1 obj-h436-type STR
attr WR_1 obj-h446-reading IP-DNS1
attr WR_1 obj-h446-type STR
attr WR_1 obj-h454-reading IP-DNS2
attr WR_1 obj-h454-type STR
attr WR_1 obj-h46-reading Software-Version_IO-Controller_IOC
attr WR_1 obj-h46-type STR
attr WR_1 obj-h512-format %s
attr WR_1 obj-h512-reading Battery_gross_capacity
attr WR_1 obj-h512-unpack N
attr WR_1 obj-h514-len 1
attr WR_1 obj-h514-reading Battery_Actual_SOC
attr WR_1 obj-h515-format %s
attr WR_1 obj-h515-reading Battery_Maincontroller_MC
attr WR_1 obj-h515-unpack N
attr WR_1 obj-h517-reading Battery_Manufacturer
attr WR_1 obj-h517-type STR
attr WR_1 obj-h525-format %s
attr WR_1 obj-h525-reading Battery_Model_ID
attr WR_1 obj-h525-unpack N
attr WR_1 obj-h527-format %s
attr WR_1 obj-h527-reading Battery_Serial_Number
attr WR_1 obj-h527-unpack N
attr WR_1 obj-h529-len 4
attr WR_1 obj-h529-reading Work_Capacity
attr WR_1 obj-h529-unpack N
attr WR_1 obj-h531-format %.0f
attr WR_1 obj-h531-reading Inverter_Max_P
attr WR_1 obj-h531-unpack N
attr WR_1 obj-h56-format %.0f
attr WR_1 obj-h56-reading Inverter_state
attr WR_1 obj-h56-unpack N
attr WR_1 obj-h575-reading Inverter_Generation_P_Actual
attr WR_1 obj-h575-unpack N
attr WR_1 obj-h577-reading Generation_Energy
attr WR_1 obj-h577-unpack N
attr WR_1 obj-h578-reading Total_energy
attr WR_1 obj-h582-reading Actual_Battery_charge-discharge_P
attr WR_1 obj-h586-format %s
attr WR_1 obj-h586-reading Battery_Firmware
attr WR_1 obj-h586-unpack N
attr WR_1 obj-h6-reading Inverter_Article_number
attr WR_1 obj-h6-type STR
attr WR_1 obj-h768-len 32
attr WR_1 obj-h768-reading Productname
attr WR_1 obj-h768-type STR
attr WR_1 obj-h800-len 32
attr WR_1 obj-h800-reading Power_class
attr WR_1 obj-h800-type STR
attr WR_1 room Strom->Photovoltaik
attr WR_1 sortby 111
attr WR_1 stateFormat {\
 my $DUMMY  = "";;\
\
 my $Power          = ReadingsVal($name,"Actual_Battery_charge_-minus_or_discharge_-plus_P",0);;\
 my $StatusSpeicher = ($Power < -10) ? "<span style='color:#00FF00'>Laden</span>" : ($Power > 15)?  "<span style='color:#FF0000'>Entladen</span>"  : "<span style='color:orange'>Standby</span>";;\
    $StatusSpeicher = $StatusSpeicher."<br>".ReadingsVal($name,"State_of_EM","n/a");;\
    $Power          = $Power." W";;\
\
\
 my $Battery_temperature                  = sprintf("%.1f °C",ReadingsVal($name,"Battery_temperature",0));;\
 my $Actual_Battery_charge_usable_P       = sprintf("%d W",ReadingsVal($name,"Actual_Battery_charge_usable_P",0));;\
         \
 my $Act_state_of_charge                  = sprintf("%d %%",ReadingsVal($name,"Act_state_of_charge","0"));;\
 my $SW_Total_DC_P_sumOfAllPVInputs       = sprintf("%d W",ReadingsVal($name,"SW_Total_DC_P_sumOfAllPVInputs","0"));;\
 my $SW_Total_PV_P_reserve                = sprintf("%d W",ReadingsVal($name,"SW_Total_PV_P_reserve","0"));;\
\
 my $SW_Home_own_consumption_from_PV      = sprintf("%d",ReadingsVal($name,"SW_Home_own_consumption_from_PV",0));;\
    $SW_Home_own_consumption_from_PV = ($SW_Home_own_consumption_from_PV >= 0) ? $SW_Home_own_consumption_from_PV." W" : "0 W";;\
 my $SW_Home_own_consumption_from_Battery = sprintf("%d W",ReadingsVal($name,"SW_Home_own_consumption_from_Battery",0));;\
 my $SW_Home_own_consumption_from_grid    = sprintf("%d W",ReadingsVal($name,"SW_Home_own_consumption_from_grid",0));;\
 my $SW_Home_own_consumption              = sprintf("%d W",ReadingsVal($name,"SW_Home_own_consumption",0));;\
\
 my $Total_Active_P_EM  = sprintf("%d",ReadingsVal($name,"Total_Active_P_EM",0));;\
 my $StatusNetz         = ($Total_Active_P_EM < -10) ? "<span style='color:#00FF00'>Einspeisen</span>" : ($Total_Active_P_EM > 15)?  "<span style='color:#FF0000'>Netzbezug</span>"  : "<span style='color:orange'>Standby</span>";;\
    $Total_Active_P_EM  = $Total_Active_P_EM." W";;\
\
 my $SW_Yield_Daily   = sprintf("%d kWh",round(ReadingsVal($name,"SW_Yield_Daily",0)/1000 ,0));;\
 my $SW_Yield_Monthly = sprintf("%d kWh",round(ReadingsVal($name,"SW_Yield_Monthly",0)/1000 ,0));;\
 my $SW_Yield_Yearly  = sprintf("%d kWh",round(ReadingsVal($name,"SW_Yield_Yearly",0)/1000 ,0));;\
 my $SW_Yield_Total   = sprintf("%d kWh",round(ReadingsVal($name,"SW_Yield_Total",0)/1000 ,0));;\
\
 my $Solar_Calculation_fc0_4h   = sprintf("%d kWh",round(ReadingsVal($name,"Solar_Calculation_fc0_4h",0)/1000 ,0));;\
 my $Solar_Calculation_fc0_day  = sprintf("%d kWh",round(ReadingsVal($name,"Solar_Calculation_fc0_day",0)/1000 ,0));;\
 my $Solar_Calculation_fc0_rest = sprintf("%d kWh",round(ReadingsVal($name,"Solar_Calculation_fc0_rest",0)/1000 ,0));;\
\
"<html><table border=2 bordercolor='darkgreen' cellspacing=0 style='width: 100%'>\
 <colgroup>\
   <col span='1' style='width: 52%;;'>\
   <col span='1' style='width: 12%;;'>\
   <col span='1' style='width: 12%;;'>\
   <col span='1' style='width: 12%;;'>\
   <col span='1' style='width: 12%;;'>\
 </colgroup>\
 <tr><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'> </td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'></td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'></td><td style='padding-right:5px;;padding-left:5px;;text-align:center;;font-weight:bold'></td><td style='padding-right:5px;;padding-left:5px;;text-align:center;;font-weight:bold'></td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Wechselrichter / KSEM<dd>Max DC / PV Reserve / Netz Leistung</dd></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Total_DC_P_sumOfAllPVInputs."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Total_PV_P_reserve."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'>".$StatusNetz."<br></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'>".$Total_Active_P_EM."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Leistung<dd>von PV / von Batterie / vom Netz / ins Haus</dd></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Home_own_consumption_from_PV."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Home_own_consumption_from_Battery."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Home_own_consumption_from_grid."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Home_own_consumption."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Ertrag<dd>Tag / Monat / Jahr / Total</dd></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Yield_Daily."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Yield_Monthly."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Yield_Yearly."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$SW_Yield_Total."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Prognose<dd>Tag / 4 Stunden / Resttag</dd></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$Solar_Calculation_fc0_day."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$Solar_Calculation_fc0_4h."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$Solar_Calculation_fc0_rest."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$DUMMY."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Speicher<dd>Temperatur / nutzbare Ladung / Status / Leistung / akt. SOC</dd></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$Battery_temperature."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'><br>".$Actual_Battery_charge_usable_P."</td><td style='padding-right:5px;;padding-left:5px;;text-align:center'>".$StatusSpeicher."<br></td><td style='padding-right:5px;;padding-left:5px;;text-align:center'>".$Power."<br>".$Act_state_of_charge."</td></tr>\
 </table>\
</html>"\
}\
attr WR_1 userReadings Total_PV_P_reserve:Total_DC_P.* {my $reserve = ReadingsVal($NAME,"Total_DC_P_sumOfAllPVInputs","0") * 0.90 - ReadingsVal($NAME,"Home_own_consumption_from_PV",0);;;; ($reserve lt 0)? 0 : round($reserve,0)  },\
\
Actual_Battery_charge_-minus_or_discharge_-plus_P:[Battery_voltage|Actual_Battery_charge_-minus_or_discharge_-plus_I].* {round((ReadingsVal($NAME,"Actual_Battery_charge_-minus_or_discharge_-plus_I",0)*ReadingsVal($NAME,"Battery_voltage","0")),0)},\
\
Total_DC_P_Max:[Total_DC_P_sumOfAllPVInputs|Actual_Battery_charge_-minus_or_discharge_-plus_P].* { my $Bat_P = ReadingsVal($NAME,"Actual_Battery_charge_-minus_or_discharge_-plus_P","0");;;; ($Bat_P gt 0)? round(ReadingsVal($NAME,"Total_DC_P_sumOfAllPVInputs",0) + $Bat_P,0) : round(ReadingsVal($NAME,"Total_DC_P_sumOfAllPVInputs",0),0) },\
\
Actual_Battery_charge_usable_P:[Act_state_of_charge|Battery_MinSOC].* {my $x = (ReadingsVal($NAME,"Battery_work_capacity",0)*(ReadingsVal($NAME,"Act_state_of_charge",0)-ReadingsVal($NAME,"Battery_MinSOC",0))/100);;;; ($x lt 0)? 0 : round($x,0) },\
\
SW_Inverter_Generation_P_Actual:Inverter_Generation_P_Actual.* {round(ReadingsVal($NAME,"Inverter_Generation_P_Actual",0)+ReadingsVal("WR_2","Inverter_Generation_P_Actual",0),0) },\
\
SW_Home_own_consumption:[Total_Active_P_EM|Total_AC_Active_P:].* {round(ReadingsVal($NAME,"Total_Active_P_EM",0)+ReadingsVal($NAME,"Total_AC_Active_P",0)+ReadingsVal("WR_2","Total_AC_Active_P",0),0)},\
SW_Total_AC_Active_P:Total_AC_Active_P:.*  {round(ReadingsVal($NAME,"Total_AC_Active_P",0)+ReadingsVal("WR_2","Total_AC_Active_P",0),0)},\
\
\
SW_Total_DC_P:Total_DC_P:.* {round(ReadingsVal($NAME,"Total_DC_P",0)+ReadingsVal("WR_2","Total_DC_P",0),0) },\
\
SW_Total_DC_P_sumOfAllPVInputs:Total_DC_P_sumOfAllPVInputs.* {round(ReadingsVal($NAME,"Total_DC_P_sumOfAllPVInputs",0)+ReadingsVal("WR_2","Total_DC_P_sumOfAllPVInputs",0),0) },\
\
SW_Total_PV_P_reserve:SW_Total_DC_P_sumOfAllPVInputs.* {my $reserve = ReadingsVal($NAME,"SW_Total_DC_P_sumOfAllPVInputs","0") * 0.90 - ReadingsVal($NAME,"SW_Home_own_consumption",0);;;; ($reserve lt 0)? 0 : round($reserve,0)  },\
\
SW_Total_DC_P_Max:SW_Total_DC_P_sumOfAllPVInputs.* { my $Bat_out = (ReadingsVal($NAME,"Actual_Battery_charge_-minus_or_discharge_-plus_I","0")*ReadingsVal($NAME,"Battery_voltage",0));;;; ($Bat_out gt 0)? round(ReadingsVal($NAME,"SW_Total_DC_P_sumOfAllPVInputs",0) + $Bat_out,0) : round(ReadingsVal($NAME,"SW_Total_DC_P_sumOfAllPVInputs",0),0) },\
\
SW_Yield_Daily:Daily_yield.* { round(ReadingsVal($NAME,"Daily_yield",0)+ReadingsVal("WR_2","Daily_yield",0),0) },\
SW_Yield_Monthly:Monthly_yield.* { round(ReadingsVal($NAME,"Monthly_yield",0)+ReadingsVal("WR_2","Monthly_yield",0),0) },\
SW_Yield_Yearly:Yearly_yield.* { round(ReadingsVal($NAME,"Yearly_yield",0)+ReadingsVal("WR_2","Yearly_yield",0),0) },\
SW_Yield_Total:Total_yield.* { round(ReadingsVal($NAME,"Total_yield",0)+ReadingsVal("WR_2","Total_yield",0),0) },\
\
SW_Home_own_consumption_from_PV:[Total_Active_P_EM|SW_Home_own_consumption:|Home_own_consumption_from_grid|Home_own_consumption_from_Battery].* { (ReadingsVal($NAME,"Total_Active_P_EM",0) ge 0) ? ReadingsVal($NAME,"SW_Home_own_consumption",0) - ReadingsVal($NAME,"Home_own_consumption_from_grid",0) - ReadingsVal($NAME,"Home_own_consumption_from_Battery",0) :  ReadingsVal($NAME,"SW_Home_own_consumption",0) - ReadingsVal($NAME,"Home_own_consumption_from_Battery",0);;;; },\
\
SW_Home_own_consumption_from_Battery:[SW_Home_own_consumption_from_PV|Home_own_consumption_from_Battery].* { ReadingsVal($NAME,"Home_own_consumption_from_Battery",0) },\
SW_Home_own_consumption_from_grid:[SW_Home_own_consumption_from_PV|Home_own_consumption_from_grid].* { ReadingsVal($NAME,"Home_own_consumption_from_grid",0) }\

attr WR_1 verbose 0

bekomme ich einen Fehlermeldung: WR_1: unknown attribute DbLogExclude. Type 'attr WR_1 ?' for a detailed list.
Lösche ich aus der Definition das attribute DbLogExclude bekomme ich eine Fehlermeldung das was mit DbLogInclude nicht stimmt, lösche ich dies auch geht nix mehr...

Okay, ignoriere ich die Information und drücke "OK" wird einfach nix erstellt...

Wenn ich die andere Definition nehme:

defmod WR_1_config dummy
attr WR_1_config DbLogExclude .*
attr WR_1_config alias WR_1_config
attr WR_1_config comment Version 2021.04.07 12:00\
Passworte für die Abfrage des WR_1_API werden im storeKeyValue abgelegt:\
   {KeyValue("[read|store]","PW_<Device Name>_<Benutzer Name>","<passwort>")}\
   {KeyValue("store","PW_WR_1_API_user","<passwort>")}\
\
Steht das reading module_*_count auf 0 wird diese Ausrichtung nicht berücksichtigt\
\
Korrekturkurven:\
         Steilheit  Parallel\
                    verschiebung\
tempk      -0.39      25\
cloudk     -0.65       0\
raink      -0.30       0\
Der Slider für die Steilheit wird mit - k/100 umgerechnet. 39 ==> -0.39
attr WR_1_config event-on-change-reading .*
attr WR_1_config group PV Eigenverbrauch
attr WR_1_config icon solar_icon
attr WR_1_config readingList IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_active module_2_active module_3_active module_1_name module_2_name module_3_name  module_4_name module_5_name module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
attr WR_1_config room Strom->Photovoltaik
attr WR_1_config setList IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_2_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_3_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_4_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_5_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
attr WR_1_config sortby 113
attr WR_1_config verbose 0

setstate WR_1_config 2020-09-11 07:36:39 Forecast_Station P0178
setstate WR_1_config 2020-08-31 12:39:26 IP-FHEM 192.168.1.80
setstate WR_1_config 2020-08-31 12:39:44 IP-WR_1 192.1.37
setstate WR_1_config 2020-08-31 12:43:27 IP-WR_1_KSEM 192.168.1.41
setstate WR_1_config 2020-09-22 10:03:21 forecast_cloudk 45
setstate WR_1_config 2020-09-22 10:12:17 forecast_cloudk_base 0
setstate WR_1_config 2020-12-07 15:49:18 forecast_factor 1
setstate WR_1_config 2021-03-31 11:45:19 forecast_factor_autocorrection 1
setstate WR_1_config 2020-09-02 18:40:29 forecast_raink 20
setstate WR_1_config 2020-09-01 12:52:40 forecast_raink_base 0
setstate WR_1_config 2020-09-01 12:46:57 forecast_tempk 39
setstate WR_1_config 2020-09-01 12:50:06 forecast_tempk_base 25
setstate WR_1_config 2021-03-23 14:31:19 module_1_count 20
setstate WR_1_config 2020-08-31 12:27:38 module_1_direction -90
setstate WR_1_config 2021-03-23 14:33:27 module_1_name WR_1_Ost
setstate WR_1_config 2020-08-31 12:29:42 module_1_plain 40
setstate WR_1_config 2020-08-31 12:31:09 module_1_power 310
setstate WR_1_config 2021-03-23 14:41:10 module_2_count 16
setstate WR_1_config 2021-03-23 14:54:13 module_2_direction 90
setstate WR_1_config 2021-03-23 14:33:45 module_2_name WR_1_West
setstate WR_1_config 2020-08-31 12:34:14 module_2_plain 40
setstate WR_1_config 2021-02-04 12:23:00 module_2_power 310
setstate WR_1_config 2021-03-23 14:41:40 module_3_count 13
setstate WR_1_config 2021-03-23 14:54:26 module_3_direction 0
setstate WR_1_config 2021-03-23 14:34:09 module_3_name WR_2_Sued
setstate WR_1_config 2020-08-31 12:35:08 module_3_plain 40
setstate WR_1_config 2021-03-23 14:41:55 module_3_power 340
setstate WR_1_config 2021-03-29 12:20:49 module_4_count 11
setstate WR_1_config 2021-03-23 14:54:37 module_4_direction 90
setstate WR_1_config 2021-03-23 14:34:27 module_4_name WR_2_West
setstate WR_1_config 2020-08-31 12:34:14 module_4_plain 40
setstate WR_1_config 2021-02-04 12:23:00 module_4_power 340
setstate WR_1_config 2021-02-04 12:41:15 module_5_count 0
setstate WR_1_config 2021-03-23 14:53:22 module_5_direction 0
setstate WR_1_config 2021-03-23 14:43:38 module_5_name frei
setstate WR_1_config 2021-03-23 14:50:46 module_5_plain 0
setstate WR_1_config 2021-03-23 14:50:39 module_5_power 0

bekomme ich ein Gerät das mir irgendwie auch nix brauchbares liefert...
Hier ein List:
Internals:
   CFGFN     
   DEF       
   FUUID      61c5a7bb-f33f-e7ed-6133-51487f2732f59297
   NAME       WR_1_config
   NR         579014
   STATE      ???
   TYPE       dummy
   READINGS:
     2020-09-11 07:36:39   Forecast_Station P0178
     2020-08-31 12:39:26   IP-FHEM         192.168.1.80
     2020-08-31 12:39:44   IP-WR_1         192.168.1.37
     2020-08-31 12:43:27   IP-WR_1_KSEM    192.168.1.41
     2020-08-31 12:44:46   IP-WR_1_Speicher_1 192.168.178.xyz
     2020-09-22 10:03:21   forecast_cloudk 45
     2020-09-22 10:12:17   forecast_cloudk_base 0
     2020-12-07 15:49:18   forecast_factor 1
     2021-03-31 11:45:19   forecast_factor_autocorrection 1
     2020-09-02 18:40:29   forecast_raink  20
     2020-09-01 12:52:40   forecast_raink_base 0
     2020-09-01 12:46:57   forecast_tempk  39
     2020-09-01 12:50:06   forecast_tempk_base 25
     2021-03-23 14:31:19   module_1_count  20
     2020-08-31 12:27:38   module_1_direction -90
     2021-03-23 14:33:27   module_1_name   WR_1_Ost
     2020-08-31 12:29:42   module_1_plain  40
     2020-08-31 12:31:09   module_1_power  310
     2021-03-23 14:41:10   module_2_count  16
     2021-03-23 14:54:13   module_2_direction 90
     2021-03-23 14:33:45   module_2_name   WR_1_West
     2020-08-31 12:34:14   module_2_plain  40
     2021-02-04 12:23:00   module_2_power  310
     2021-03-23 14:41:40   module_3_count  13
     2021-03-23 14:54:26   module_3_direction 0
     2021-03-23 14:34:09   module_3_name   WR_2_Sued
     2020-08-31 12:35:08   module_3_plain  40
     2021-03-23 14:41:55   module_3_power  340
     2021-03-29 12:20:49   module_4_count  11
     2021-03-23 14:54:37   module_4_direction 90
     2021-03-23 14:34:27   module_4_name   WR_2_West
     2020-08-31 12:34:14   module_4_plain  40
     2021-02-04 12:23:00   module_4_power  340
     2021-02-04 12:41:15   module_5_count  0
     2021-03-23 14:53:22   module_5_direction 0
     2021-03-23 14:43:38   module_5_name   frei
     2021-03-23 14:50:46   module_5_plain  0
     2021-03-23 14:50:39   module_5_power  0
Attributes:
   alias      WR_1_config
   comment    Version 2021.04.07 12:00
Passworte für die Abfrage des WR_1_API werden im storeKeyValue abgelegt:
   {KeyValue("[read|store]","PW_<Device Name>_<Benutzer Name>","<passwort>")}\
   {KeyValue("store","PW_WR_1_API_user","<passwort>")}

Steht das reading module_*_count auf 0 wird diese Ausrichtung nicht berücksichtigt

Korrekturkurven:
         Steilheit  Parallel
                    verschiebung
tempk      -0.39      25
cloudk     -0.65       0
raink      -0.30       0
Der Slider für die Steilheit wird mit - k/100 umgerechnet. 39 ==> -0.39
   event-on-change-reading .*
   group      PV Eigenverbrauch
   icon       solar_icon
   readingList IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_active module_2_active module_3_active module_1_name module_2_name module_3_name  module_4_name module_5_name module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
   room       Strom->Photovoltaik
   setList    IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_2_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_3_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_4_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_5_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
   sortby     113
   verbose    0

Und leider auch ohne einen Erfolg..
Dabei stelle ich mir dann schon die Frage wo ich eigentlich die Zugangsdaten vom Wechselrichter und KSEM eingeben muss ...?

Kurz gesagt: Die Anleitung ist brutal gut , aber für echte normalos wirklich megaoverloaded...

Ich würde gerne im meine FHEM einfach nur den aktuellen Ladezustand der Batterie sehen, den Status ob sie gerade geladen oder entladen wird, was gerade auf dem Dach erzeugt wird und was die Hütte momentan verbraucht.
Das wären dann 4 Werte.

Gibt es nicht eine einfache Alternative die mir das "einfacher" darstellen kann um dieser Werte im FTUI dann sich zu integrieren denn mehr brauche ich wirklich nicht.

Oder hat vielleicht einer so eine MINI Konfig und kann mir kurz erläutern wie ich es bei mir einrichten könnte?
« Letzte Änderung: 24 Dezember 2021, 13:37:46 von misux »

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
Hallo und willkommen.

Meine Hardware:
Ein Wechselrichter (Kostal Plenticore 10 Plus)(IP:192.168.1.37) eine Batterie BYD(Keine IP) an einem Eingang ein KSEM(IP:192.168.1.41) und die Module die an den letzten beiden Eingängen am Wechselrichter angebunden sind.
Meine Batterie finde ich leider nicht im Netzwerk, ist irgendwie anders verbunden mit dem Wechselrichter.
Im KSEM Webinterface ist kein Wechselrichter eingerichtet, warum auch immer, hat die Firma so eingestellt. Und auch in den MODBUS einstellungen sind nur die RS485 Schnittstellen eingerichtet, die TCP Einstellungen sind Leer

Mein Wunsch: Eine einfache Anzeige später im FTUI über den aktuellen Ladezustand der Batterie sehen, den Status ob sie gerade geladen oder entladen wird, was gerade auf dem Dach erzeugt wird und was die Hütte momentan verbraucht.
Das sollten wir hinbekommen, wenn wir schritt für schritt vorgehen.

1.) KSEM
Solange Du nur einen Wechselrichter hast kannst Du das Device erstmal weg lassen, weil der Plenticore mit dem KSEM mit rs485 kommuniziert. Die Werte werden dann vom Plenticore mit angezeigt.

2.) BYD Speicher
Der Speicher kommuniziert auch über rs485 mit dem Plenticore und wird vom Wechselrichter auch gesteuert. Auch diese Werte zeigt der Plenticore dann direkt mit an.

3.) Wir verwenden in diesem Thread die DbLog Installation, das bedeutet die Werte gehen in eine MySQL Datenbank. Dazu findest Du im Wiki einen kurzen Hinweis, da die Aktivierung für DbLog an anderer Stelle im Wiki ausführlich beschrieben ist. Bitte richte das vorher schon mal ein und schau Dir dann auch die Hinweise im Plenticore Wiki zur Datenbank an. Danach kommen dann auch die Meldungen zum DbLogExclude und
DbLogInclude nicht mehr, denn die Attribute gibt es erst nach der DbLog Einrichtung.

4.) Bitte verwende für den Anfang exakt die Gerätenamen, die im Plenticore Wiki verwendet werden, da sich diese durch alle Devices und myUtils Programme durchziehen.

5.) Das Plenticore Wiki ist von oben nach unten strukturiert, alles was weiter unten ist wird immer weniger zur Pflicht :-)

6.) Jetzt kannst Du mit dem WR_1_config Device beginnen, in dem Konfigurationsparameter abgelegt sind. Dort müssen auch schon mal IP-Adresse eingetragen werden.
Die setstate angaben gehören auch dazu und sind schon mal default Werte.

7.) Nun kommt das WR_1 Device, das mit ModBus die Werte vom Plenticore, dem KSEM und dem Speicher anzeigt.
Die DbLogExclude und DbLogInclude schreiben dann die gängigsten Werte schon mal in die MySQL Datenbank.

8.) Bis hierher brauchst Du keine Zugangsdaten und auch keinen Zugang zum KSEM. Alle Werte werden vom Plenticore per ModBus ins Netz gesendet und mit dem WR_1 ModBus Device im 60 Sekunden Takt gelesen.
Achtung, am Plenticore muss natürlich nach der Kostal Beschreibung auch der ModBus aktiviert worden sein, ansonsten kann ja nichts empfangen werden.

Zitat
Kurz gesagt: Die Anleitung ist brutal gut , aber für echte normalos wirklich megaoverloaded...
Bitte arbeite das Ganze in aller Ruhe durch, ich bin erst wieder am Montag verfügbar ;-)
Die Belohnung wird ein sehr mächtiges Monitoring und Steuerungssystem sein, bis hin zum Grafana Dashboard.

Zitat
Ich würde gerne im meine FHEM einfach nur den aktuellen Ladezustand der Batterie sehen, den Status ob sie gerade geladen oder entladen wird, was gerade auf dem Dach erzeugt wird und was die Hütte momentan verbraucht.
Das wären dann 4 Werte.
Gibt es nicht eine einfache Alternative die mir das "einfacher" darstellen kann um dieser Werte im FTUI dann sich zu integrieren denn mehr brauche ich wirklich nicht.
Sobald die grundlegenden Devices laufen kannst Du natürlich auch FTUI aufsetzen, was ich nicht verwende.

Zitat
Oder hat vielleicht einer so eine MINI Konfig und kann mir kurz erläutern wie ich es bei mir einrichten könnte?
Man kann natürlich die DbLog auch weglassen und die entsprechenden Attribute, die angemäckert werden einfach wieder raus löschen.

Wenn Du etwas damit gearbeitet hast wirst Du auch Statistiken haben wollen und auch mehr als 4 Werte sehen wollen. Das sieht man dann an den uiTable stateFormat, die ich erstellt habe. Also würdest Du es erst abstrippen und dann doch wieder erweitern. Spätestens wenn Du die Jahresend Werte für das Finanzamt brauchst, oder den Monat und das Jahr beobachtest.

9.) Jetzt kommen die Statistiken, die der Plenticore liefert :-) Das geht dann über das WR_1_API Device, mit dem man dann auch den Speicher ansteuern kann.
Aber da schreiben wir dann später mal weiter, wenn Du Deine 4 Werte hast.

VG
   Christian
« Letzte Änderung: 24 Dezember 2021, 23:57:20 von ch.eick »
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline ch.eick

  • Hero Member
  • *****
  • Beiträge: 2136
Hallo misux,
Hat einer eine Idee welches Attribut für den Aktuellen Hausverbrauch zuständig ist? Also der Wert in Plenticore Weboberfläche welcher von dem Häuschen angezeigt wird... Der gesamte aktuelle Hausverbrauch...

Der Hausverbrauch setzt sich aus dem Netzbezug und der komplett Leistung des Plenticore zusammen. Hier ein Auszug aus dem userreading, was so auch beim Schwarm funktioniert.
Bei Dir, also einem WR wird ReadingsVal("WR_2","Total_AC_Active_P",0) immer mit 0 aufgelöst.
SW_Home_own_consumption:[Total_Active_P_EM:|Total_AC_Active_P:].* {round(ReadingsVal($NAME,"Total_Active_P_EM",0)+ReadingsVal($NAME,"Total_AC_Active_P",0)+ReadingsVal("WR_2","Total_AC_Active_P",0),0)}

Du kannst auch folgendes zusammen rechnen, was ich am Anfang auch so gemacht habe. Da jedoch einige hier im Forum auch zwei Wechselrichter haben hat das so nicht mehr funktioniert und ich habe auf die userreadings mit SW_* umgestellt. So können alle das gleiche Device verwenden.
Home_own_consumption_from_Battery
Home_own_consumption_from_PV
Home_own_consumption_from_grid

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline misux

  • Hero Member
  • *****
  • Beiträge: 1007
Krass, vielen dank für die Erläuterung.

Aber wegen den Statistiken...
Zitat
Wenn Du etwas damit gearbeitet hast wirst Du auch Statistiken haben wollen und auch mehr als 4 Werte sehen wollen. Das sieht man dann an den uiTable stateFormat, die ich erstellt habe. Also würdest Du es erst abstrippen und dann doch wieder erweitern. Spätestens wenn Du die Jahresend Werte für das Finanzamt brauchst, oder den Monat und das Jahr beobachtest.

Diese Dinge fürs Finanzamt bekomme ich doch auch vom Kostal Portal... oder Irre ich mich..?
« Letzte Änderung: 25 Dezember 2021, 10:09:00 von misux »