[gelöst] DOIF - reagiert nicht mehr auf Events (uiTable und Timer)

Begonnen von ch.eick, 27 Februar 2022, 10:54:10

Vorheriges Thema - Nächstes Thema

ch.eick

Hallo zusammen,
ich habe ein DOIF, dass schon länger nicht verändert wurde, jetzt aber nicht mehr richtig auf die EVENTS reagiert.

Momentan geht es um das cmd_6 .
Ein "set WR_1_Speicher_1_ExternControl  cmd_6" führt die Perl Kommandos korrekt aus und die gewünsche Funktion arbeitet perfekt.

Was nicht klappt ist das Auslösen mit dem uiTable, was aber bereits seit einem Jahr funktioniert hat.
Im EVENT Monitor kommt dieer Event jedoch!

[$SELF:ui_command] eq "3 Minuten Wiederholung"


Auch der Timer alle drei Mintuen klappt nicht verlässlich

and [+180]

Hier nochmal alle Bedingungen

DOELSEIF
([$SELF:ui_command] eq "3 Minuten Wiederholung" or
  [WR_1_API:Battery_Control] > 0 and                                            ## Wenn die ExternControl am WR konfiguriert ist
  ReadingsVal("$SELF","SpeicherCmdRepeatActive","")  eq "An" and                ## Wenn die ExternControl Aktiviert ist
  ReadingsVal("$SELF","SpeicherCmdRepeatRunning","") eq "An" and                ## Wenn es  ExternControl Kommandos zum Senden gibt
  [  {sunrise_abs("HORIZON=+5.0",0,"6:00","08:35")}                             
   - {sunset_abs("HORIZON=+8.0",0,"15:00","21:00")} ] and [+180] )              ## alle 3 Minuten den Befehl wiederholen

Das merkwürdige ist jedoch, dass ab und an der Timer wohl doch auslöst, was ich dann im Log durch meine Meldungen sehen kann.

==> mit dem set command...
2022.02.27 10:28:55.642 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 10:29:08.057 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 10:29:21.100 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
==> noch mal das set command
2022.02.27 10:36:20.036 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
==> jetzt habe ich mal nichts gemacht

==> und hier kommt wohl wieder ein timer
2022.02.27 10:42:20.036 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
==> jetzt fehlt der timer wieder

==> aber nach 6 Minuten löst wieder einer aus
2022.02.27 10:48:20.075 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 10:54:20.066 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 11:12:20.032 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 11:18:20.049 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 11:24:20.078 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben
2022.02.27 11:36:20.047 3: WR_1_Speicher_1_ExternControl cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von 08:00 auf 12:00 Uhr verschoben

Events...

2022-02-27 11:24:20.029 DOIF WR_1_Speicher_1_ExternControl ui_command: ---
2022-02-27 11:24:20.069 HTTPMOD WR_1_API 23_07_Battery_ExternControl_MaxChargePowerAbs 0
2022-02-27 11:24:20.099 DOIF WR_1_Speicher_1_ExternControl cmd_nr: 6
2022-02-27 11:24:20.099 DOIF WR_1_Speicher_1_ExternControl cmd: 6
2022-02-27 11:24:20.099 DOIF WR_1_Speicher_1_ExternControl cmd_event: timer_8
2022-02-27 11:24:20.099 DOIF WR_1_Speicher_1_ExternControl 3 Minuten Wiederholung

2022-02-27 11:36:20.016 DOIF WR_1_Speicher_1_ExternControl ui_command: ---
2022-02-27 11:36:20.040 HTTPMOD WR_1_API 23_07_Battery_ExternControl_MaxChargePowerAbs 0
2022-02-27 11:36:20.058 DOIF WR_1_Speicher_1_ExternControl cmd_nr: 6
2022-02-27 11:36:20.058 DOIF WR_1_Speicher_1_ExternControl cmd: 6
2022-02-27 11:36:20.058 DOIF WR_1_Speicher_1_ExternControl cmd_event: timer_8
2022-02-27 11:36:20.058 DOIF WR_1_Speicher_1_ExternControl 3 Minuten Wiederholung



defmod WR_1_Speicher_1_ExternControl DOIF ################################################################################################################\
## 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.\
##\
< snip>
################################################################################################################\
## 6 Wiederhole alle 180s die Kommandos der ExternControl Steuerung\
##\
DOELSEIF\
([$SELF:ui_command] eq "3 Minuten Wiederholung" or\
  [WR_1_API:Battery_Control] > 0 and                                            ## Wenn die ExternControl am WR konfiguriert ist\
  ReadingsVal("$SELF","SpeicherCmdRepeatActive","")  eq "An" and                ## Wenn die ExternControl Aktiviert ist\
  ReadingsVal("$SELF","SpeicherCmdRepeatRunning","") eq "An" and                ## Wenn es  ExternControl Kommandos zum Senden gibt\
  [  {sunrise_abs("HORIZON=+5.0",0,"6:00","08:35")}                             \
   - {sunset_abs("HORIZON=+8.0",0,"15:00","21:00")} ] and [+180] )              ## alle 3 Minuten den Befehl wiederholen\
  \
  {\
   CommandSetReading(undef, "$SELF ui_command ---");;\
   my $MaxChargePowerTime = 0;;\
   my $MaxChargePowerAbs_midday = 0;;\
\
   if (ReadingsVal("$SELF","SpeicherMiddayControlRunning","") eq "An" ) {       ## Wurde ein Mittagshoch ermittelt und aktiviert?\
\
     if ( time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." [$SELF:SpeicherMidday_NotBefore]") and\
           [WR_1:Act_state_of_charge] >= [WR_1_API:Battery_InternControl_MinSoc] *3 ) {\
       CommandSet(undef, "WR_1_API 23_07_Battery_ExternControl_MaxChargePowerAbs 0");;     ## nicht vor z.B. 09:00 Uhr starten. Ladung auf 0 Watt setzen\
       if (AttrVal("$SELF","verbose",0) >=3) {                                  ## Es wird nur langsam geladen und MaxSOC limitiert.\
         Log 3, "$SELF cmd_6  : SpeicherMiddayControl vor [$SELF:SpeicherMidday_NotBefore] Uhr noch nicht laden";;\
       };;\
     } else { \
       if ( time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." [WR_1:Solar_middayhigh_fc0_start]") ) {   ## Ist noch Vormittag?\
         CommandSet(undef, "WR_1_API 23_07_Battery_ExternControl_MaxChargePowerAbs [$SELF:SpeicherMidday_MaxChargePowerAbs_morning]");;\
         CommandSet(undef, "WR_1_API 23_09_Battery_ExternControl_MaxSocRel [$SELF:SpeicherMidday_MaxSOC]");;\
         if (AttrVal("$SELF","verbose",0) >=3) {                                ## Es wird nur langsam geladen und MaxSOC limitiert.\
           Log 3, "$SELF cmd_6  : SpeicherMiddayControl vor [WR_1:Solar_middayhigh_fc0_start] limitieren";;\
           Log 3, "$SELF cmd_6  : Battery_ExternControl_MaxChargePowerAbs auf [$SELF:SpeicherMidday_MaxChargePowerAbs_morning] limitiert";;\
           Log 3, "$SELF cmd_6  : Battery_ExternControl_MaxSOC auf [$SELF:SpeicherMidday_MaxSOC] % limitiert";;\
         };;\
       };;\
     };;\
\
     if (time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." [WR_1:Solar_middayhigh_fc0_start]") <= time and  ## Es ist Mittag\
         time <= time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." [WR_1:Solar_middayhigh_fc0_stop]") ) {\
\
       if (ReadingsVal("$SELF","SpeicherMaxSOCControlRunning","") eq "An" and                                        ## Somit bleibt weniger Platz im Speicher und es ist\
           time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." 12:00") ) {                             ##    besser nicht vor 12:00 Uhr zu beginnen.\
         CommandSet(undef, "WR_1_API 23_07_Battery_ExternControl_MaxChargePowerAbs 0");;\
         if (AttrVal("$SELF","verbose",0) >=3)\
           {Log 3, "$SELF cmd_6  : SpeicherMiddayControlActive laden wegen MaxSoc von [WR_1:Solar_middayhigh_fc0_start] auf 12:00 Uhr verschoben"};;\
       } else {                                                                                                      ## auch jetzt nicht mit voller Leistung laden\
\
         if ([$SELF:SpeicherMidday_MaxChargePowerAbs_midday] == 0) {                                                 ## dynamische Leistungsermittlung oder vorgewählter Wert\
           $MaxChargePowerTime = round((time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." [WR_1:Solar_middayhigh_fc0_stop]") - time) / 3600 , 2);;  ## Mittags Ladezeit bestimmen\
           if ( $MaxChargePowerTime < 1 ) { $MaxChargePowerTime = 1;;};;\
           $MaxChargePowerAbs_midday  = round( [WR_1:Battery_work_capacity] * ([$SELF:SpeicherMaxSOC_Actual] - [WR_1:Act_state_of_charge]) / 100 / $MaxChargePowerTime , 0);;\
           if ($MaxChargePowerAbs_midday < 0) { $MaxChargePowerAbs_midday = 0 };;                                     ## Nicht unter 0\
           Log 3, "$SELF Test   : Mittags $MaxChargePowerTime h mit $MaxChargePowerAbs_midday W laden";;\
         } else {\
           $MaxChargePowerAbs_midday = [$SELF:SpeicherMidday_MaxChargePowerAbs_midday];;                              ## Nimm den vorgewählten Wert\
         };;\
\
         CommandSet(undef, "WR_1_API 23_07_Battery_ExternControl_MaxChargePowerAbs $MaxChargePowerAbs_midday");;\
         CommandSet(undef, "WR_1_API 23_09_Battery_ExternControl_MaxSocRel [$SELF:SpeicherMaxSOC_Actual]");;\
         if (AttrVal("$SELF","verbose",0) >=3) {\
           Log 3, "$SELF cmd_6  : SpeicherMiddayControlActive laden von [WR_1:Solar_middayhigh_fc0_start] bis [WR_1:Solar_middayhigh_fc0_stop] freigegeben";;\
           Log 3, "$SELF cmd_6  : Battery_ExternControl_MaxChargePowerAbs auf $MaxChargePowerAbs_midday limitiert";;\
           Log 3, "$SELF cmd_6  : Battery_ExternControl_MaxSocRel [$SELF:SpeicherMaxSOC_Actual] % halten"\
         };;\
       };;\
     };;\
\
     if (time > time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." [WR_1:Solar_middayhigh_fc0_stop]") ) {    ## Es ist Nachmittag und die\
       CommandSetReading(undef, "$SELF SpeicherMiddayControlRunning Aus");;                                           ## Mittagssteuerung wird abgeschaltet\
       CommandSet(undef, "WR_1_API 23_09_Battery_ExternControl_MaxSocRel [$SELF:SpeicherMaxSOC_Actual]");;\
       if (AttrVal("$SELF","verbose",0) >=3) {\
         Log 3, "$SELF cmd_6  : Battery_ExternControl_MaxSocRel [$SELF:SpeicherMaxSOC_Actual] % halten";;\
         Log 3, "$SELF cmd_6  : SpeicherMiddayControl nach [WR_1:Solar_middayhigh_fc0_stop] beendet";;\
       };;\
     };;\
   };;\
\
   if (ReadingsVal("$SELF","SpeicherMaxSOCControlRunning","") eq "An" and                      ## Nur MaxSOC soll begrenzt werden\
       [$SELF:SpeicherMaxSOC_Actual] <= 100                        and                                          \
       ReadingsVal("$SELF","SpeicherMiddayControlRunning","") eq "Aus") {                      ##  sobald die Mittagssteuerung fertig ist\
     CommandSet(undef, "WR_1_API 23_09_Battery_ExternControl_MaxSocRel [$SELF:SpeicherMaxSOC_Actual]");;\
     if (AttrVal("$SELF","verbose",0) >=3)\
       {Log 3, "$SELF cmd_6  : Battery_ExternControl_MaxSocRel [$SELF:SpeicherMaxSOC_Actual] % halten"};;\
   };;\
\
   if (AttrVal("$SELF","verbose",0) >=4)\
     {Log 3, "$SELF cmd_6  : ExternControl Kommandowiederholung erledigt"};;\
  }\
\
################################################################################################################\
## 7 Bestimmung eines möglichen SOC für den nächsten Morgen und\
##   Vorbereitung für ein Leistungshoch am Mittag\
##\

< snip >


attr WR_1_Speicher_1_ExternControl DbLogExclude .*
attr WR_1_Speicher_1_ExternControl alias WR_1_Speicher_1_ExternControl
attr WR_1_Speicher_1_ExternControl checkall event
attr WR_1_Speicher_1_ExternControl cmdState Status gelesen|smart_Laden Start|smart_Laden Beendet|extern Trigger Freigabe|extern Trigger Sperren|3 Minuten Wiederholung|MinSOC Bestimmung|ExternControl Reset|MinSOC auf Winter|MinSOC auf Sommer|MaxSOC 100% vermeiden|DC_Power_Abs gesetzt|BYD Status Abfrage
attr WR_1_Speicher_1_ExternControl disable 0
attr WR_1_Speicher_1_ExternControl group PV Eigenverbrauch
attr WR_1_Speicher_1_ExternControl icon measure_battery_100
attr WR_1_Speicher_1_ExternControl readingList SpeicherExternTrigger SpeicherCmdRepeatActive SpeicherZeitStart SpeicherZeitEnde SpeicherEntladung SpeicherTrigger SpeicherMiddayControlActive SpeicherMidday_Inverter_Max_Power SpeicherMidday_MaxChargePowerAbs_morning SpeicherMidday_MaxChargePowerAbs_midday SpeicherMidday_MaxSOC SpeicherMidday_NotBefore SpeicherMinSOC_Sommer SpeicherMinSOC_Winter SpeicherMinSOC_fc1_Limit SpeicherMaxSOCControlActive SpeicherMaxSOC_Actual SpeicherMaxSOC_DayBefore SpeicherMaxSOC_fc1_Limit
attr WR_1_Speicher_1_ExternControl room Strom->Photovoltaik
attr WR_1_Speicher_1_ExternControl setList SpeicherExternTrigger:frei,gesperrt SpeicherCmdRepeatActive:0,1 SpeicherZeitStart:time SpeicherZeitEnde:time SpeicherEntladung:Automatik,Zeit,Trigger SpeicherTrigger:entladen,gesperrt,none SpeicherMiddayControlActive:0,1 SpeicherMidday_Inverter_Max_Power:slider,3000,500,20000 SpeicherMidday_MaxChargePowerAbs_morning:slider,0,50,4700 SpeicherMidday_MaxChargePowerAbs_midday:slider,0,100,4700 SpeicherMidday_MaxSOC:slider,20,5,50 SpeicherMidday_NotBefore:time SpeicherMinSOC_Sommer:slider,5,1,20 SpeicherMinSOC_Winter:slider,5,1,20 SpeicherMinSOC_fc1_Limit:slider,7000,500,17000 SpeicherMaxSOCControlActive:0,1 SpeicherMaxSOC_Actual:slider,60,5,100 SpeicherMaxSOC_DayBefore:slider,15,5,100 SpeicherMaxSOC_fc1_Limit:slider,10000,2000,50000
attr WR_1_Speicher_1_ExternControl sortby 122
attr WR_1_Speicher_1_ExternControl uiTable {\
package ui_Table;;\
##  $TR{0} = "style='color:yellow;;text-align:left;;font-weight:bold;;font-size:18px'";;                                                         ## Reihe 0 für Überschrift\
  $TABLE = "style='width:100%;;'";;\
\
  $TD{0..9}{0}     = "align='center' style='font-size:16px;;border-right-style:solid;;border-color:darkgreen;;border-right-width:2px;;width:26%'";;\
\
  $TD{0..9}{1} = "style='border-top-style:solid;;border-bottom-style:solid;;border-right-style:solid;;border-color:darkgreen;;border-top-width:2px;;border-bottom-width:2px;;border-right-width:1px;;width:36%;;font-weight:bold;;'";;\
  $TD{0..9}{2..4} = "style='border-top-style:solid;;border-bottom-style:solid;;border-right-style:solid;;border-color:darkgreen;;border-top-width:2px;;border-bottom-width:2px;;border-right-width:1px;;width:8%;;text-align:center;;'";;\
  $TD{0..9}{5} = "style='border-top-style:solid;;border-bottom-style:solid;;border-right-style:solid;;border-color:darkgreen;;border-top-width:2px;;border-bottom-width:2px;;border-right-width:2px;;width:8%;;text-align:center;;'";;\
\
sub FUNC_batt {\
    my($val)=@_;;\
    my $ret="position:absolute;;left:".(90*$val/100)."px;;width:90px;;height:20px;;background:linear-gradient( to right,#F8F8E0 ".(90-(90*$val/100))."px,rgba(0,0,0,0) ".(90-(90*$val/100))."px);;";;\
    return $ret;;\
  }\
sub FUNC_Status {\
    my($value, $min, $colorMin,  $statusMin,  $colorMiddel, $statusMiddle, $max, $colorMax, $statusMax)=@_;;\
    my $ret = ($value < $min)? '<span style="color:'.$colorMin.'">'.$statusMin.'</span>' : ($value > $max)? '<span style="color:'.$colorMax.'">'.$statusMax.'</span>' : '<span style="color:'.$colorMiddel.'">'.$statusMiddle.'</span>';;\
    return $ret;;\
  }\
}\
\
#########################################################\
## "Spalte 0"|"Spalte 1"|"Spalte 2"|"Spalte 3"|"Spalte 4"|"Spalte 5"\
\
"$SELF"|"Kommando<dd>Auswahl / DcPowerAbs / Status</dd>" | widget([$SELF:ui_command],"uzsuDropDown,---,smart_Laden start,smart_Laden beenden,3 Minuten Wiederholung,Reset,DC_Power_Abs,Sommer,Winter") | widget([$SELF:SpeicherDcPowerAbs],"selectnumbers,-4500,250,4500,0,lin")."W" |[WR_1_API:Battery_EM_State]|([$SELF:SpeicherExternTrigger] eq "gesperrt" and [WR_1_API:Battery_InternControl_MinHomeConsumption] eq "30000")?'<span style="color:red">smart_Laden aktiv</span>':""\
\
|"Speicher<dd>Steuerung</dd>" | widget([$SELF:SpeicherEntladung],"uzsuDropDown,Automatik,Trigger,Zeit") |""|\
FUNC_Status([WR_1:Actual_Battery_charge_-minus_or_discharge_-plus_P],-10,"#00FF00","Laden","orange","Standby",15,"red","Entladen").FUNC_Status([WR_1:Act_state_of_charge],15,"red","Speicher SOC","orange","Speicher SOC",49,"#00FF00","Speicher SOC")|\
\
FUNC_Status([WR_1:Actual_Battery_charge_-minus_or_discharge_-plus_P],-10,"green",[WR_1:Actual_Battery_charge_-minus_or_discharge_-plus_P],"orange",[WR_1:Actual_Battery_charge_-minus_or_discharge_-plus_P],15,"red",[WR_1:Actual_Battery_charge_-minus_or_discharge_-plus_P])." W"."<div style='border-width:2px;;border-style:solid;;border-color:gray;;position:relative;;width:90px;;height:20px;;background:linear-gradient( to right, red 0px,yellow 30px,green 50px);;'>".STY(" ",FUNC_batt([WR_1:Act_state_of_charge])).STY(::round([WR_1:Act_state_of_charge],0)."%","font-size:16px;;position:absolute;;top:2px;;left:30px")."</div>"\
\
\
|"Trigger<dd>Status / ExternTrigger / Start / Ende</dd>" | widget([$SELF:SpeicherTrigger],"uzsuDropDown,entladen,gesperrt,none") | widget([$SELF:SpeicherExternTrigger],"uzsuDropDown,frei,gesperrt,none") | widget([$SELF:SpeicherZeitStart],"time") | widget([$SELF:SpeicherZeitEnde],"time")\
\
|"Kommando Wiederholung<dd>aktiviert / läuft</dd>" | widget([$SELF:SpeicherCmdRepeatActive],"uzsuToggle,Aus,An") | widget([$SELF:SpeicherCmdRepeatRunning],"uzsuToggle,Aus,An") |""|""\
\
|"MaxSOC Kontrolle<dd>aktiviert / läuft</dd>" | widget([$SELF:SpeicherMaxSOCControlActive],"uzsuToggle,Aus,An") | widget([$SELF:SpeicherMaxSOCControlRunning],"uzsuToggle,Aus,An") |""|""\
\
|"MaxSOC Limit<dd>fc1_Limit / Minimum SOC Zeit / gestern / geplant</dd>" |\
FUNC_Status([WR_1:Solar_Calculation_fc1_day],[$SELF:SpeicherMaxSOC_fc1_Limit],"red","<","","",[$SELF:SpeicherMaxSOC_fc1_Limit]-1,"#00FF00",">="). widget([$SELF:SpeicherMaxSOC_fc1_Limit],"selectnumbers,2000,1000,40000,0,lin") | widget([$SELF:SpeicherMaxSOC_MinSOC_Time],"time"). widget([$SELF:SpeicherMaxSOC_MinSOC_MinSOC],"selectnumbers,5,1,100,0,lin") |\
"<div style='border-width:2px;;border-style:solid;;border-color:gray;;position:relative;;width:90px;;height:20px;;background:linear-gradient( to right, red 0px,yellow 30px,green 50px);;'>".STY(" ",FUNC_batt([$SELF:SpeicherMaxSOC_DayBefore])).STY("gestern","font-size:12px;;position:absolute;;top:3px;;left:25px")."</div>".widget([$SELF:SpeicherMaxSOC_DayBefore],"selectnumbers,5,1,100,0,lin")."%" |\
"<div style='border-width:2px;;border-style:solid;;border-color:gray;;position:relative;;width:90px;;height:20px;;background:linear-gradient( to right, red 0px,yellow 30px,green 50px);;'>".STY(" ",FUNC_batt([$SELF:SpeicherMaxSOC_Actual])).STY("geplant","font-size:12px;;position:absolute;;top:3px;;left:25px")."</div>".widget([$SELF:SpeicherMaxSOC_Actual],"selectnumbers,5,1,100,0,lin")."%"\
\
|"Mittags Kontrolle<dd>aktiviert / läuft</dd>" | widget([$SELF:SpeicherMiddayControlActive],"uzsuToggle,Aus,An") | widget([$SELF:SpeicherMiddayControlRunning],"uzsuToggle,Aus,An")|""|""\
\
|"Mittags Limits<dd>Inverter_Max_Power / Laden nicht vor / Start /Stop<br>MaxSOC morgens / Power morgens / Power mittags</dd>" | widget([$SELF:SpeicherMidday_Inverter_Max_Power],"selectnumbers,1000,250,15000,0,lin")."W<br>".widget([$SELF:SpeicherMidday_MaxSOC],"selectnumbers,5,1,100,0,lin")."%" | widget([$SELF:SpeicherMidday_NotBefore],"time").widget([$SELF:SpeicherMidday_MaxChargePowerAbs_morning],"selectnumbers,0,50,2000,0,lin")."W" | widget([WR_1:Solar_middayhigh_fc0_start],"time").widget([$SELF:SpeicherMidday_MaxChargePowerAbs_midday],"selectnumbers,0,1,5000,0,lin")."W" | widget([WR_1:Solar_middayhigh_fc0_stop],"time").([$SELF:SpeicherMidday_MaxChargePowerAbs_midday] == 0)?"dynamisch":""\
\
|"MinSOC Steuerung<dd>fc1_Limit / Winter | Sommer /aktuell</dd>"|\
FUNC_Status([WR_1:Solar_Calculation_fc1_day],[$SELF:SpeicherMinSOC_fc1_Limit],"red","<","","",[$SELF:SpeicherMinSOC_fc1_Limit]-1,"#00FF00",">=").widget([$SELF:SpeicherMinSOC_fc1_Limit],"selectnumbers,2000,1000,40000,0,lin")."wh" |\
widget([$SELF:SpeicherMinSOC_Winter],"selectnumbers,10,1,30,0,lin").widget([$SELF:SpeicherMinSOC_Sommer],"selectnumbers,5,1,10,0,lin")."%" |""|[WR_1_API:Battery_InternControl_MinSoc]." %"
attr WR_1_Speicher_1_ExternControl verbose 3


setstate WR_1_Speicher_1_ExternControl 3 Minuten Wiederholung
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:57:03 Device WR_1
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:46 SpeicherCmdRepeatActive An
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:47 SpeicherCmdRepeatRunning An
setstate WR_1_Speicher_1_ExternControl 2021-10-19 13:17:51 SpeicherDcPowerAbs 0
setstate WR_1_Speicher_1_ExternControl 2021-12-09 14:52:08 SpeicherEntladung Automatik
setstate WR_1_Speicher_1_ExternControl 2022-02-26 14:37:07 SpeicherExternTrigger none
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:51 SpeicherMaxSOCControlActive An
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:53 SpeicherMaxSOCControlRunning An
setstate WR_1_Speicher_1_ExternControl 2022-02-26 17:06:01 SpeicherMaxSOC_Actual 95
setstate WR_1_Speicher_1_ExternControl 2022-02-26 17:02:35 SpeicherMaxSOC_DayBefore 100.00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 07:48:03 SpeicherMaxSOC_MinSOC_MinSOC 6
setstate WR_1_Speicher_1_ExternControl 2022-02-27 07:48:03 SpeicherMaxSOC_MinSOC_Time gefunden
setstate WR_1_Speicher_1_ExternControl 2021-09-02 16:23:44 SpeicherMaxSOC_fc1_Limit 30000
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:59 SpeicherMiddayControlActive An
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:58 SpeicherMiddayControlRunning An
setstate WR_1_Speicher_1_ExternControl 2021-09-02 16:22:22 SpeicherMidday_Inverter_Max_Power 8500
setstate WR_1_Speicher_1_ExternControl 2021-09-05 15:00:35 SpeicherMidday_MaxChargePowerAbs_midday 0
setstate WR_1_Speicher_1_ExternControl 2021-09-02 16:24:57 SpeicherMidday_MaxChargePowerAbs_morning 450
setstate WR_1_Speicher_1_ExternControl 2021-09-02 16:26:39 SpeicherMidday_MaxSOC 30
setstate WR_1_Speicher_1_ExternControl 2021-09-05 09:02:56 SpeicherMidday_NotBefore 09:00
setstate WR_1_Speicher_1_ExternControl 2021-09-02 16:26:15 SpeicherMinSOC_Sommer 5
setstate WR_1_Speicher_1_ExternControl 2021-09-02 16:26:03 SpeicherMinSOC_Winter 20
setstate WR_1_Speicher_1_ExternControl 2021-12-06 16:43:35 SpeicherMinSOC_fc1_Limit 15000
setstate WR_1_Speicher_1_ExternControl 2021-12-06 16:38:01 SpeicherTrigger entladen
setstate WR_1_Speicher_1_ExternControl 2021-12-05 14:14:07 SpeicherZeitEnde 18:00
setstate WR_1_Speicher_1_ExternControl 2021-12-09 14:58:15 SpeicherZeitStart 09:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:20 cmd 6
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:20 cmd_event timer_8
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:20 cmd_nr 6
setstate WR_1_Speicher_1_ExternControl 2022-02-26 12:47:30 e_Kia_eNiro_PV_WR_1_Speicher_1_ExternControl_smart_laden_before aktiv
setstate WR_1_Speicher_1_ExternControl 2022-02-26 13:11:41 e_WB_1_lp_1_ChargeStat not loading
setstate WR_1_Speicher_1_ExternControl 2022-02-26 13:11:42 e_WR_1_API_Battery_InternControl_MinHomeConsumption 50
setstate WR_1_Speicher_1_ExternControl 2022-02-20 10:09:01 e_WR_1_API_Battery_InternControl_MinSoc 5
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:05 e_WR_1_Act_state_of_charge 66.00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:57:03 e_WR_1_SW_Home_own_consumption 1474
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:57:03 e_WR_1_SW_Home_own_consumption_from_PV 1474
setstate WR_1_Speicher_1_ExternControl 2022-02-27 07:00:01 e_WR_1_Solar_Calculation_fc0_day 64394
setstate WR_1_Speicher_1_ExternControl 2022-02-27 06:55:01 e_WR_1_Solar_Calculation_fc1_day 69672
setstate WR_1_Speicher_1_ExternControl 2022-02-26 12:47:30 e_WR_1_Speicher_1_ExternControl_SpeicherExternTrigger gesperrt
setstate WR_1_Speicher_1_ExternControl 2022-02-24 09:00:32 e_WR_1_Speicher_1_ExternControl_SpeicherMaxSOC_Actual 100
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:31:18 e_WR_1_Speicher_1_ExternControl_ui_command ---
setstate WR_1_Speicher_1_ExternControl 2022-01-11 18:23:57 mode enabled
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:20 state 3 Minuten Wiederholung
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_01_c01 27.02.2022 10:58:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_02_c04 28.02.2022 09:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_03_c04 27.02.2022 18:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_04_c05 27.02.2022 18:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_05_c05 28.02.2022 09:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_06_c06 28.02.2022 07:52:10
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_07_c06 27.02.2022 17:06:20
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:20 timer_08_c06 27.02.2022 10:57:20
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_09_c07 28.02.2022 07:45:37
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_10_c07 28.02.2022 10:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_11_c08 27.02.2022 17:06:20
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_12_c10 28.02.2022 10:09:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_13_c11 27.02.2022 15:06:20
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:00 timer_14_c13 27.02.2022 11:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:18:20 timer_15_c13 27.02.2022 11:00:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:30:00 timer_16_c13 27.02.2022 11:30:00
setstate WR_1_Speicher_1_ExternControl 2022-02-27 10:54:20 ui_command ---
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Guybrush

Lösche das doif einfach einmal und leg es identisch neu an. Ich hatte das auch gerade, dass mein doif auf meinen Knx Luftfeuchtigkeitmesser im Schwimmbad nicht mehr funktionierte und der Entfeuchter dadurch nicht eingeschalten wurde. Hab da ewig gesucht, nichts gefunden. Auch Neustart etc half nicht. Habs dann aus mehr aus Verzweifelung gelöscht und identisch neu angelegt. Seit dem gehts wieder... magic. Frag mich nicht wieso, aber vielleicht hilfts bei dir auch, wenn es vorher funktionierte.

ch.eick

Zitat von: Guybrush am 27 Februar 2022, 23:21:30
Lösche das doif einfach einmal und leg es identisch neu an. Ich hatte das auch gerade, dass mein doif auf meinen Knx Luftfeuchtigkeitmesser im Schwimmbad nicht mehr funktionierte und der Entfeuchter dadurch nicht eingeschalten wurde. Hab da ewig gesucht, nichts gefunden. Auch Neustart etc half nicht. Habs dann aus mehr aus Verzweifelung gelöscht und identisch neu angelegt. Seit dem gehts wieder... magic. Frag mich nicht wieso, aber vielleicht hilfts bei dir auch, wenn es vorher funktionierte.
Okay, das probiere ich beim nächsten Mal aus, mal schauen ob es morgen wieder passiert.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Zitat von: ch.eick am 27 Februar 2022, 23:45:50
Okay, das probiere ich beim nächsten Mal aus, mal schauen ob es morgen wieder passiert.

Ein Restart kann nur Symptome beheben aber nicht die Ursache.

Attribut checkallevent,  kein do always und viel Perlcode - da kann man schnell die Übersicht verlieren.

Ich würde es versuchen an deiner Stelle in den Perlmodus umzuschreiben.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 28 Februar 2022, 00:41:44
Ein Restart kann nur Symptome beheben aber nicht die Ursache.
Hat eh nicht geklappt :-)
Zitat
Attribut checkallevent,  kein do always und viel Perlcode - da kann man schnell die Übersicht verlieren.
Die Code Menge hat sich nicht verändert und do always wird auch nicht verwendet.
Zitat
Ich würde es versuchen an deiner Stelle in den Perlmodus umzuschreiben.
Da bin ich schon länger dran, jedoch reagiert die Auslösung der Blöcke doch danders als gewohnt.

Das merkwürdige ist ja auch, dass das Timer Event anstatt im 180s in dem Zustand alle 360s auslöst.
Jetzt im Moment arbeiten die Timer wieder korrekt. Ich beobachte das mal morgen früh wieder, da der Speicher jetzt gerade voll ist.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Zitat von: ch.eick am 28 Februar 2022, 11:57:21
Hat eh nicht geklappt :-)Die Code Menge hat sich nicht verändert und do always wird auch nicht verwendet.Da bin ich schon länger dran, jedoch reagiert die Auslösung der Blöcke doch danders als gewohnt.

Das merkwürdige ist ja auch, dass das Timer Event anstatt im 180s in dem Zustand alle 360s auslöst.
Jetzt im Moment arbeiten die Timer wieder korrekt. Ich beobachte das mal morgen früh wieder, da der Speicher jetzt gerade voll ist.

Dann musst du abspecken und dich herantasten. Was sich im DOIF geändert hat, ist das grundsätzliche Setzen des NOTIFDEV-Filters, allerdings hast du bei dir einen ganz simplen Trigger drin, der kein Problem darstellen sollte. An den Timern hat sich länger nichts geändert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Hallo Damian

was auch nicht mehr geht ist das einfache Auslösen aus einem uiTable Pull Down Menü


################################################################################################################
## 12 WR_1_Speicher_1 DC_Power_Abs setzen z.B. zur Zwangsentladung
##     dies muss manuell wiederholt werden. Danach hängt es vom WR ab, wie er die Speichersteuerung fortsetzt.
DOELSEIF
([$SELF:ui_command] eq "DC_Power_Abs")

  {
   CommandSetReading(undef, "$SELF ui_command ---");

   CommandSet(undef, "WR_1_API 23_05_Battery_ExternControl_DcPowerAbs [$SELF:SpeicherDcPowerAbs]");

   if (AttrVal("$SELF","verbose",0) >=3) {
     Log 3, "$SELF cmd_12 : Battery_ExternControl_DcPowerAbs auf [$SELF:SpeicherDcPowerAbs] gesetzt";
   };
  }

Das reading wird gesetzt, wenn ich das widget bediene.

ui_command DC_Power_Abs 2022-02-28 13:04:17

Das Event wird erzeugt

2022-02-28 13:04:17.599 DOIF WR_1_Speicher_1_ExternControl ui_command: DC_Power_Abs
2022-02-28 13:04:17.599 DOIF WR_1_Speicher_1_ExternControl e_WR_1_Speicher_1_ExternControl_ui_command: DC_Power_Abs

Aber das DOELSEIF wird nicht durchlaufen, da als erstes ja das reading wieder zurück gesetzt würde.

Das ist echt alles sehr merkwürdig, da es ja wie gesagt genau so seit einem Jahr gelaufen ist.
Ich such mal ein altes DOIF, und mache da mal ein reload.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
leider haben sich die Phenomene im FHEM Modus nicht wieder gelegt.

Ich habe deshalb, da ich auch sehr viel Perl im DOIF verwende, das ganze in den Perl Modus migriert, was ich auch schon mal vor Monaten begonnen hatte.
Nun habe ich bereits die test Phase erreicht und das Verhalten entspricht wieder dem wie es vorher gewesen ist. Dazu sind natürlich doch diverse Änderungen notwendig
geworden, die aber auch vorher schon hier und da mal probleme bereitet haben.

Vielen Dank für den Motivations schubser :-)
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Zitat von: ch.eick am 01 März 2022, 11:21:49
Hallo zusammen,
leider haben sich die Phenomene im FHEM Modus nicht wieder gelegt.

Ich habe deshalb, da ich auch sehr viel Perl im DOIF verwende, das ganze in den Perl Modus migriert, was ich auch schon mal vor Monaten begonnen hatte.
Nun habe ich bereits die test Phase erreicht und das Verhalten entspricht wieder dem wie es vorher gewesen ist. Dazu sind natürlich doch diverse Änderungen notwendig
geworden, die aber auch vorher schon hier und da mal probleme bereitet haben.

Vielen Dank für den Motivations schubser :-)
    Christian

Da du ohnehin schon viel mit Perl gemacht hast, ist das der richtige Weg. Auf Dauer wirst du davon profitieren. Du kannst nun im Modul eigene Funktionen definieren, mit Instanzvariablen hantieren, mehrere Blöcke gleichzeitig und unabhängig voneinander ausführen, den Status setzen, wie du willst usw.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 01 März 2022, 12:07:16
Da du ohnehin schon viel mit Perl gemacht hast, ist das der richtige Weg. Auf Dauer wirst du davon profitieren. Du kannst nun im Modul eigene Funktionen definieren, mit Instanzvariablen hantieren, mehrere Blöcke gleichzeitig und unabhängig voneinander ausführen, den Status setzen, wie du willst usw.
Hallo Damian,
ja, den Weg beschreite ich ja schon einige Zeit mit meiner PV-Anlagen Steuerung. Ich möchte halt kein propritäres Modul erstellen und habe somit die verschiedenen Module aus FHEM mit Perl erweitert. Beim DOIF hast Du mir auch eine schöne "GUI" Oberfläche mit dem uiTable geliefert. Leider ist das uiTable nicht in mehr Modulen vertreten, aber da man oft eins drum herum verwendet stelle ich dann eben im DOIF auch den Status dar und erledige die Variablen Konfiguration :-)

VG Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

ja, man kann da unterschiedlich vorgehen.

Ich habe für meine Statusübersicht einige DOIF-Device definiert, die nur aus uiTable bestehen, um Informationen zu visualisieren, die in anderen Modulen gesammelt werden (siehe Anhang)

Immer mehr programmiere ich aber DOIF-Devices, die nicht nur Daten sammeln, sondern auch diese visualisieren bzw. über die Weboberfläche Daten verändern lassen. Mit Hilfe von Templates lässt sich dann eine Definition auf beliebig viele Szenarien anwenden.

Also, man kann im Perlmodus in einer Definition, das schaffen, was man sonst mit Programmierung eigenständiger Module tut - meistens aber nur mit einfacher Visualisierung ;)

Wie z. B. meine letzten Einträge zur DOIF-Automatisierung mit Benutzeroberfläche - also das volle Programm

siehe: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI

Im Anhang meine aktuelle Statusübersicht
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 01 März 2022, 12:57:13
ja, man kann da unterschiedlich vorgehen.

Ich habe für meine Statusübersicht einige DOIF-Device definiert, die nur aus uiTable bestehen, um Informationen zu visualisieren, die in anderen Modulen gesammelt werden (siehe Anhang)

Immer mehr programmiere ich aber DOIF-Devices, die nicht nur Daten sammeln, sondern auch diese visualisieren bzw. über die Weboberfläche Daten verändern lassen. Mit Hilfe von Templates lässt sich dann eine Definition auf beliebig viele Szenarien anwenden.

Also, man kann im Perlmodus in einer Definition, das schaffen, was man sonst mit Programmierung eigenständiger Module tut - meistens aber nur mit einfacher Visualisierung ;)

Wie z. B. meine letzten Einträge zur DOIF-Automatisierung mit Benutzeroberfläche - also das volle Programm

siehe: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI

Im Anhang meine aktuelle Statusübersicht
Ach herje :-)
Na zum Glück regelt sich mein Haus mit der KWL selber und ich brauche garkeine Raum Thermostate.
Die Darstellung der PV mache ich dann auch lieber im Grafana ;-)
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Zitat von: ch.eick am 01 März 2022, 14:53:05
Na zum Glück regelt sich mein Haus mit der KWL selber und ich brauche garkeine Raum Thermostate.

Bei mir regelt sich das Haus selber, aber irgendwo will man vielleicht eine Temperatur eines Raumes festlegen ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 01 März 2022, 15:14:25
Bei mir regelt sich das Haus selber, aber irgendwo will man vielleicht eine Temperatur eines Raumes festlegen ;)
Wenn die Zimmertüren geschlossen sind regelt sich das über den Hydraulischen Abgleich, so ist das Bad wärmer als die anderen Räume und auch Schlafräume sind etwas kühler wie das Wohnzimmer.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Zitat von: ch.eick am 01 März 2022, 16:48:13
Wenn die Zimmer türen geschlossen sind regelt sich das über den Hydraulischen Abgleich, so ist das Bad wärmer als die anderen Räume und auch Schlafräume sind etwas kühler wie das Wohnzimmer.

Klar, das ist komfortabel. Läuft bei meinen Eltern auch so. Unsere Heizung ist etwas älter, da lässt sich der hydraulischer Abgleich schlecht vornehmen. Der Komfort kann aber etwas mehr Heizkosten bedeuten, weil er punktuell pro Raum nicht steuerbar ist. Abgesehen davon, wollte ich sehen, wann tatsächlich die Ventile in den Räumen offen sind, um den Heizbedarf der Räume etwas abschätzen zu können.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF