DOIF mit HTML stateFormat und webCmd

Begonnen von ch.eick, 03 September 2021, 14:54:11

Vorheriges Thema - Nächstes Thema

ch.eick

EDIT 2021 09 03 : Ich habe dann noch sowas gefunden
Zitat
192.168.178.40:8083/fhem?cmd=set%20WR_1_Speicher_1_ExternControl%20cmd_6

2021.09.03 15:35:06.836 3: FHEMWEB WEB CSRF error:  ne csrf_557238226486953 for client WEB_192.168.178.40_33946 / command set WR_1_Speicher_1_ExternControl cmd_6. For details see the csrfToken FHEMWEB attribute.
Aber wie kann ich da dynamisch das Token einsetzen?
       Wenn ich das dann ins stateFormat einbaue, kann ich zwar einen Klick drauf machen, im Fhem Log kommt dann aber auch keine Fehlermeldung wegen des Token

<A HREF="192.168.178.40:8083/fhem?cmd=set%20WR_1_Speicher_1_ExternControl%20cmd_6" target="log">cmd_6 CmdRepeat</A>



Hallo zusammen,
ich habe ein DOIF, bei dem ich ein stateFormat mit html verwende. (siehe Bild unten)

Mein Wunsch wäre nun in der FHEMWEB Oberfläche auch soetwas wie beim webCmd zum Klicken zu haben, um die cmd_[1-12] direkt zu aktivieren.
Kann man so etwas umsetzen?

Eine zweite Variante wäre im Device in der set pull down Liste den cmd_[1-12] sprechende Namen zu geben,das würde mir als Alternative auch weiter helfen.

Oder die dritte Idee wäre im stateFormat html push buttons zu definieren, wofür mir aber die html Kenntnisse fehlen. Ein Beispiel könnte ich sicher selber einbauen ;-)

Hier noch das stateFormat:

{
my $WR     = "WR_1";
my $DUMMY  = "";

my $Entladung                        = ReadingsVal($name,"SpeicherEntladung","n/a");

my $Power                            = ReadingsVal($WR,"Actual_Battery_charge_-minus_or_discharge_-plus_P","0");
my $Status                           = ($Power < -10) ? "<span style='color:#00FF00'>Laden</span>" : ($Power > 15)?  "<span style='color:#FF0000'>Entladen</span>"  : "<span style='color:orange'>Standby</span>";
    $Power                            = $Power." W";

my $Solar_Calculation_fc0_day        = ReadingsVal($WR,"Solar_Calculation_fc0_day","0");

my $Trigger                          = ReadingsVal($name,"SpeicherTrigger","none");
my $ExternTrigger                    = ReadingsVal($name,"SpeicherExternTrigger","none");
my $ZeitStart                        = ReadingsVal($name,"SpeicherZeitStart","n/a");
my $ZeitEnde                         = ReadingsVal($name,"SpeicherZeitEnde","n/a");
     
my $CmdRepeatActive                  = ReadingsVal($name,"SpeicherCmdRepeatActive","0");
my $CmdRepeatRunning                 = ReadingsVal($name,"SpeicherCmdRepeatRunning","0");

my $MaxSOCControlActive              = ReadingsVal($name,"SpeicherMaxSOCControlActive","0");
my $MaxSOCControlRunning             = ReadingsVal($name,"SpeicherMaxSOCControlRunning","0");

my $MiddayControlActive              = ReadingsVal($name,"SpeicherMiddayControlActive","0");
my $MiddayControlRunning             = ReadingsVal($name,"SpeicherMiddayControlRunning","0");

my $Solar_middayhigh_fc0_start       = ReadingsVal($WR,"Solar_middayhigh_fc0_start","00:00");
    $Solar_middayhigh_fc0_start       = ($MaxSOCControlRunning == 1 and $MiddayControlRunning == 1) ? "12:00" : $Solar_middayhigh_fc0_start ;

my $Solar_middayhigh_fc0_stop        = ReadingsVal($WR,"Solar_middayhigh_fc0_stop","00:00");
my $MaxSOC_Actual                    = ReadingsVal($name,"SpeicherMaxSOC_Actual","0");
my $Act_state_of_charge              = sprintf("%d",ReadingsVal($WR,"Act_state_of_charge","0"));
my $MaxSOC_DayBefore                 = sprintf("%d %%",ReadingsVal($name,"SpeicherMaxSOC_DayBefore","0"));
my $MaxSOC_fc1_Limit                 = ReadingsVal($name,"SpeicherMaxSOC_fc1_Limit","0");
my $MaxSOC_MinSOC_Time               = POSIX::strftime("%H:%M",localtime(time_str2num(ReadingsTimestamp($name, "SpeicherMaxSOC_MinSOC_Time",0))));
my $MaxSOC_MinSOC_MinSOC             = sprintf("%d %%",ReadingsVal($name,"SpeicherMaxSOC_MinSOC_MinSOC","0"));

my $Midday_NotBefore                 = ReadingsVal($name,"SpeicherMidday_NotBefore","0");
my $Midday_MaxSOC                    = ReadingsVal($name,"SpeicherMidday_MaxSOC","0");

my $Midday_MaxChargePowerAbs_morning = sprintf("%d W"   ,ReadingsVal($name,"SpeicherMidday_MaxChargePowerAbs_morning","0"));
    $Midday_MaxChargePowerAbs_morning = ( $MiddayControlRunning == 1 and
                                      time > time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Midday_NotBefore") and
                                          time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start" and
                                          $Midday_MaxSOC > $Act_state_of_charge) ) ? "<span style='color:#00FF00'>$Midday_MaxChargePowerAbs_morning</span>" : $Midday_MaxChargePowerAbs_morning ;

my $Midday_MaxChargePowerAbs_midday  = sprintf("%d W"   ,ReadingsVal($name,"SpeicherMidday_MaxChargePowerAbs_midday","0"));
    $Midday_MaxChargePowerAbs_midday  = ( $MiddayControlRunning == 1 and
                                      time > time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start") and
                                          time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_stop" ) ) ? "<span style='color:#00FF00'>$Midday_MaxChargePowerAbs_midday</span>" : $Midday_MaxChargePowerAbs_midday ;

    $Midday_NotBefore                 = ( $MiddayControlRunning == 1 and
                                      time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Midday_NotBefore") and
                                      time > time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $MaxSOC_MinSOC_MinSOC")) ? "< <span style='color:#FF0000'>$Midday_NotBefore</span>" :
                                        ( $MiddayControlRunning == 1 and
                                      time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start") ) ? "> <span style='color:#00FF00'>$Midday_NotBefore</span>" : $Midday_NotBefore ;

    $Midday_MaxSOC                    = ( time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Midday_NotBefore")) ? $Midday_MaxSOC." %" :
                                    ( $MiddayControlRunning == 1 and
                                      time < time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start") and
                                          $Midday_MaxSOC > $Act_state_of_charge ) ? "<span style='color:#00FF00'>$Midday_MaxSOC %</span>" :
( time > time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start")) ? $Midday_MaxSOC." %" : "<span style='color:#FF0000'>$Midday_MaxSOC %</span>" ;

    $Solar_middayhigh_fc0_start       = ( $MiddayControlRunning == 1 and
                                      time >= time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start") and
                                          time <= time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_stop" ) ) ? "<span style='color:#00FF00'>$Solar_middayhigh_fc0_start</span>" : $Solar_middayhigh_fc0_start ;
    $Solar_middayhigh_fc0_stop        = ( $MiddayControlRunning == 1 and
                                      time >= time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_start") and
                                          time <= time_str2num(POSIX::strftime("%Y-%m-%d",localtime(time))." $Solar_middayhigh_fc0_stop" ) ) ? "<span style='color:#00FF00'>$Solar_middayhigh_fc0_stop</span>" : $Solar_middayhigh_fc0_stop ;


my $Midday_Inverter_Max_Power        = sprintf("%d W"   ,ReadingsVal($name,"SpeicherMidday_Inverter_Max_Power","0"));
    $Midday_Inverter_Max_Power        = ($MiddayControlRunning      == 1                ) ? ">= <span style='color:#00FF00'> $Midday_Inverter_Max_Power</span>" : $Midday_Inverter_Max_Power ;

my $MinSOC_fc1_Limit                 = ReadingsVal($name,"SpeicherMinSOC_fc1_Limit","0");
my $MinSOC_Sommer                    = sprintf("%d %%"  ,ReadingsVal($name,"SpeicherMinSOC_Sommer","0"));
    $MinSOC_Sommer                    = ($Solar_Calculation_fc0_day >= $MinSOC_fc1_Limit) ? "<span style='color:#00FF00'>$MinSOC_Sommer</span>"             : $MinSOC_Sommer ;

my $MinSOC_Winter                    = sprintf("%d %%"  ,ReadingsVal($name,"SpeicherMinSOC_Winter","0"));
    $MinSOC_Winter                    = ($Solar_Calculation_fc0_day <  $MinSOC_fc1_Limit) ? "<span style='color:#00FF00'>$MinSOC_Winter</span>"             : $MinSOC_Winter ;

    $MinSOC_fc1_Limit                 = ($Solar_Calculation_fc0_day >= $MinSOC_fc1_Limit) ? ">= <span style='color:#00FF00'>$MinSOC_fc1_Limit Wh</span>"    : $MinSOC_fc1_Limit." Wh" ;
    $MaxSOC_fc1_Limit                 = ($Solar_Calculation_fc0_day >= $MaxSOC_fc1_Limit) ? ">= <span style='color:#00FF00'>$MaxSOC_fc1_Limit Wh</span>" : $MaxSOC_fc1_Limit." Wh" ;

    $MaxSOC_Actual                    = ($MaxSOCControlRunning == 1) ? "<span style='color:#00FF00'>$MaxSOC_Actual %</span>"      : $MaxSOC_Actual." %" ;
    $Act_state_of_charge              = $Act_state_of_charge." %";
    $CmdRepeatRunning                 = ($CmdRepeatRunning     == 1) ? "<span style='color:#00FF00'>$CmdRepeatRunning</span>"     : $CmdRepeatRunning ;
    $MaxSOCControlRunning             = ($MaxSOCControlRunning == 1) ? "<span style='color:#00FF00'>$MaxSOCControlRunning</span>" : $MaxSOCControlRunning ;
    $MiddayControlRunning             = ($MiddayControlRunning == 1) ? "<span style='color:#00FF00'>$MiddayControlRunning</span>" : $MiddayControlRunning ;

    $ZeitStart                        = ($Entladung eq "Zeit") ? "<span style='color:#00FF00'>$ZeitStart</span>" : $ZeitStart ;
    $ZeitEnde                         = ($Entladung eq "Zeit") ? "<span style='color:#00FF00'>$ZeitEnde</span>"  : $ZeitEnde  ;

"<html><table border=2 bordercolor='darkgreen' cellspacing=0>
<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'>Speicher<dd>Steuerung / Status / Leistung / aktueller SOC</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Entladung."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</td><td style='padding-right:5px;padding-left:5px;text-align:center'>".$Status."<br></td><td style='padding-right:5px;padding-left:5px;text-align:center'>".$Power."<br>".$Act_state_of_charge."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Trigger<dd>Status / ExternTrigger / Start / Ende</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Trigger."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$ExternTrigger."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$ZeitStart."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$ZeitEnde."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Kommando Wiederholung<dd>aktiviert / läuft</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$CmdRepeatActive."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$CmdRepeatRunning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</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'>MaxSOC Kontrolle<dd>aktiviert / läuft</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOCControlActive."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOCControlRunning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</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'>MaxSOC Limit<dd>fc1_Limit / Minimum SOC Zeit / gestern / aktuell</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOC_fc1_Limit."</td><td style='padding-right:5px;padding-left:5px;text-align:center'>".$MaxSOC_MinSOC_Time."<br>".$MaxSOC_MinSOC_MinSOC."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOC_DayBefore."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOC_Actual."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Mittags Kontrolle<dd>aktiviert / läuft</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MiddayControlActive."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MiddayControlRunning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</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'>Mittags Limits<dd>Inverter_Max_Power / Laden nicht vor / Start /Stop<br><br>MaxSOC morgens / Power morgens / Power mittags</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Midday_Inverter_Max_Power."<br><br>".$Midday_MaxSOC."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Midday_NotBefore."<br><br>".$Midday_MaxChargePowerAbs_morning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Solar_middayhigh_fc0_start."<br><br>".$Midday_MaxChargePowerAbs_midday."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Solar_middayhigh_fc0_stop."<br><br><br>".$DUMMY."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>MinSOC Steuerung<dd>fc1_Limit / Winter / Sommer</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MinSOC_fc1_Limit."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MinSOC_Winter."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MinSOC_Sommer."</td></tr>
</table></html>"
}


Jeder Vorschlag ist willkommen.

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

Prof. Dr. Peter Henning

Klar geht das. Beispiel für Buttons in einem Reading in der 99_RoombaUtils.pm im contrib-Ordner. Allerdings rate ich dringend davon ab, wenn man nicht HTML- und JavaScript-Kenntnisse hat.

LG

pah

ch.eick

Zitat von: Prof. Dr. Peter Henning am 03 September 2021, 16:12:54
Klar geht das. Beispiel für Buttons in einem Reading in der 99_RoombaUtils.pm im contrib-Ordner. Allerdings rate ich dringend davon ab, wenn man nicht HTML- und JavaScript-Kenntnisse hat.

Vielen Dank für den Link,
ich möchte ja auch noch etwas dazu lernen :-)
Java würde ich gerne vermeiden, wenn es geht.

Das hier habe ich mit aus dem "Grundriss mit FHEM-Buttons" in der Zwischenzeit schon herausgesucht.
Leider öffnet es jeweils einen neuen TAB, obwohl &XHR=1 oder auch target="log" laut Beispiel auf der rufenden Seite bleiben sollten.
Mit dem Token klappt auch der Fhem Aufruf, jedoch nicht dynamisch, da sich der Token ja auch ändern kann.

<html>
<HEAD>
  <TITLE>Status Table</TITLE>
</HEAD>
<body>
<FRAMESET  ROWS="*,0" FRAMEBORDER=0 FRAMESPACING=0>
  <FRAME NAME="log">

<table frame="control" border=2 bordercolor='darkgreen' cellspacing=0>
<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'>Speicher<dd>Steuerung / Status / Leistung / aktueller SOC</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Entladung."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</td><td style='padding-right:5px;padding-left:5px;text-align:center'>".$Status."<br></td><td style='padding-right:5px;padding-left:5px;text-align:center'>".$Power."<br>".$Act_state_of_charge."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Trigger<dd>Status / ExternTrigger / Start / Ende</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Trigger."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$ExternTrigger."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$ZeitStart."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$ZeitEnde."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Kommando Wiederholung<dd>aktiviert / läuft</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$CmdRepeatActive."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$CmdRepeatRunning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</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'>MaxSOC Kontrolle<dd>aktiviert / läuft</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOCControlActive."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOCControlRunning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</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'>MaxSOC Limit<dd>fc1_Limit / Minimum SOC Zeit / gestern / aktuell</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOC_fc1_Limit."</td><td style='padding-right:5px;padding-left:5px;text-align:center'>".$MaxSOC_MinSOC_Time."<br>".$MaxSOC_MinSOC_MinSOC."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOC_DayBefore."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MaxSOC_Actual."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Mittags Kontrolle<dd>aktiviert / läuft</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MiddayControlActive."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MiddayControlRunning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</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'>Mittags Limits<dd>Inverter_Max_Power / Laden nicht vor / Start /Stop<br><br>MaxSOC morgens / Power morgens / Power mittags</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Midday_Inverter_Max_Power."<br><br>".$Midday_MaxSOC."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Midday_NotBefore."<br><br>".$Midday_MaxChargePowerAbs_morning."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Solar_middayhigh_fc0_start."<br><br>".$Midday_MaxChargePowerAbs_midday."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$Solar_middayhigh_fc0_stop."<br><br><br>".$DUMMY."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>MinSOC Steuerung<dd>fc1_Limit / Winter / Sommer</dd></td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MinSOC_fc1_Limit."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$DUMMY."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MinSOC_Winter."</td><td style='padding-right:5px;padding-left:5px;text-align:center'><br>".$MinSOC_Sommer."</td></tr>
<tr><td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Kommando ausführen</td><td><a href="http://192.168.178.40:8083/fhem?cmd.WR1=set%20WR_1_Speicher_1_ExternControl%20cmd_6&XHR=1&fwcsrf=csrf_557238226486953" target="log">CmdRepeat</a></td><td></td><td></td><td></td>
</table>

</FRAMESET>
</body>
</html>
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

Wenn du mit DOIF arbeitest, dann kannst du auch gleich uiTable in deinem DOIF-Device definieren. Damit kannst du beliebige Tabelle mit FHEM-Widgets und beliebiger Visualisierung ohne tiefere HTML-Kenntnisse realisieren: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 04 September 2021, 11:40:34
Wenn du mit DOIF arbeitest, dann kannst du auch gleich uiTable in deinem DOIF-Device definieren. Damit kannst du beliebige Tabelle mit FHEM-Widgets und beliebiger Visualisierung ohne tiefere HTML-Kenntnisse realisieren: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg
Okay, das nen ich mal umfangreich :-) Ich denke Ihr werdet einige Zeit nichts mehr von mir hören, bis ich mich da durchgearbeitet habe.

Vielen Dank, für das darstellen von Möglichkeiten
     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