FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jimbo am 24 Januar 2019, 11:14:26

Titel: Boost Button f. HM-CC-RT-DN in readingsGroup
Beitrag von: Jimbo am 24 Januar 2019, 11:14:26
Hallo zusammen,

Ich habe vor kurzem angefangen mir nach der Anleitung im Wiki eine readingsGroup zu basteln.

<%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil / RH>,<Modus>,<Lock>,<Bat>,<Boost> Thermostat_Buero_Clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-btnLock@Thermostat_Buero,batteryLevel@Thermostat_Buero,XXXXX  \ Thermostat_Schlafzimmer_Clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-btnLock@Thermostat_Schlafzimmer,batteryLevel@Thermostat_Schlafzimmer,XXXXX  \ Thermostat_Wohnzimmer_Clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-btnLock@Thermostat_Wohnzimmer,batteryLevel@Thermostat_Wohnzimmer, XXXXX
setuuid heatingInfo X

Nun würde ich darin gerne einen Knopf in der letzten Spalte haben der den controlMode auf boost setzt und bei einem zweiten Klicken darauf diesen wieder zurücksetzt (sprich zurück in Auto/Manual Mode)
Ich bekomme es aber leider einfach nicht hin - Könnte mir hier vielleicht jemand kurz aushelfen?

Liebe Grüße
Titel: Antw:Boost Button f. HM-CC-RT-DN in readingsGroup
Beitrag von: Beta-User am 24 Januar 2019, 11:32:25
Moin.

Bin grade auch dabei, meine FHEMWEB-Schnittstelle etwas aufzuhübschen, fand aber das mit der ReadingsGroup auch aus anderen Gründen nicht optimal - ich will eigentlich in der Raumansicht auch eine sinnvolle Darstellung der RT's usw. haben. Geht wohl am Ende am einfachsten über die Ansicht des Clima-Kanals bei RT's. Hier hatte partinp876 mal was sehr knackiges aber aufschlussreiches dazu gepostet: https://forum.fhem.de/index.php/topic,26479.msg742318.html#msg742318.

Als Zwischenergebnis kann ich myUtils-Code anbieten, der bastelt ein nettes, multifunktionales devStateIcon für den Clima-Kanal (RT) bzw. den Climate-Kanal der WT:
sub devStateIcon_Clima($) {
my $climaname = shift(@_);
my $ret ="";
my $name = $climaname;
$name =~ s/_Climate$//;
$name =~ s/_Clima$//;
my $TC = AttrVal($name,"model","HM-CC-RT-DN") eq "HM-TC-IT-WM-W-EU" ? 1:0;
my $state = ReadingsVal($name,"state","NACK");

#Battery
my $batval  = ReadingsVal($name,"battery","");
my $symbol_string = "measure_battery_0";
my $command_string = "getConfig";
$batval eq "ok" ? $symbol_string = "measure_battery_75" : $batval eq "low" ? $symbol_string = "measure_battery_25":undef;

if ($state =~ /CMDs_p/) {
  $symbol_string = "edit_settings";
  $command_string = "clear msgEvents";
} elsif ($state =~ /RESPONSE|NACK/) {
  $command_string = "clear msgEvents";
  $symbol_string = 'edit_settings@red' ;
}
$ret .= "<a href=\"/fhem?cmd.dummy=set $name $command_string&XHR=1\">" . FW_makeImage($symbol_string,"measure_battery_50") . "</a>";

unless ($TC) {
#Lock Mode
my $btnLockval = ReadingsVal($name,".R-btnLock","on") ;
my $btnLockvalSet = $btnLockval eq "on" ? "off":"on";
$symbol_string = $btnLockval eq "on"? "secur_locked": "secur_open";
$ret .= " " . "<a href=\"/fhem?cmd.dummy=set $name regSet btnLock $btnLockvalSet&XHR=1\">" . FW_makeImage($symbol_string, "locked")."</a>";
}

#ControlMode
my $controlval = ReadingsVal($climaname,"controlMode","manual") ;
my $controlvalSet = ($controlval eq "manual")? "auto":"manual";
$symbol_string = $controlval eq "manual" ? "sani_heating_manual" : "sani_heating_automatic";
$ret .= " " . "<a href=\"/fhem?cmd.dummy=set $climaname controlMode $controlvalSet&XHR=1\">" . FW_makeImage($symbol_string,"sani_heating_manual")."</a>";
#my $symbol_mode = "<a href=\"/fhem?cmd.dummy=set $climaname controlMode $controlvalSet&XHR=1\">" . FW_makeImage($mode_symbol_string,"sani_heating_manual")."</a>";

#Humidity or actuator
if ($TC) {
  my $humval = ReadingsVal($climaname,"humidity","") ;
  #my $humcolor = "";
  $symbol_string = "humidity";
  $ret .= " " . FW_makeImage($symbol_string,"humidity") . " $humval%rH";
} else {
  my $actorval = ReadingsVal($name,"actuator","");
  my $actor_rounded = int (($actorval +5)/10)*10;
  $symbol_string = "sani_heating_level_$actor_rounded";
  $ret .= " " . FW_makeImage($symbol_string,"sani_heating_level_40") ;
}

#measured temperature
my $tempval = ReadingsVal($climaname,"measured-temp",0) ;
my $tempcolor ="";
my $symbol_string = "temp_temperature";
$symbol_string .= "@".$tempcolor if ($tempcolor);
$ret .= FW_makeImage($symbol_string,"temp_temperature") . "$tempval°C ";


#desired temperature: getConfig
my $desired_temp = ReadingsVal($name,"desired-temp","21") ;
$symbol_string = "temp_control";# if $state eq "CMDs_done";
$symbol_string = "sani_heating_boost" if $controlval =~ /boost/;
my $boostname = $TC ? $climaname : $name;
$ret .= "<a href=\"/fhem?cmd.dummy=set $boostname controlMode boost&XHR=1\">" . FW_makeImage($symbol_string,"temp_control") . "</a>";

#$ret .= FW_widgetOverride($climaname,"selectnumbers,4.5,0.5,30.5,1,lin");
#https://forum.fhem.de/index.php/topic,26479.msg559170.html#msg559170

return "<div><p style=\"text-align:right\">$ret</p></div>"
;
}

In das Attribut devStateIcon dann im betreffenden Clima-Kanal (RT) bzw. Climate-Kanal (WT) eintragen:
{devStateIcon_Clima($name)}

Ist zwar noch nicht vollständig ausgetestet, aber hoffentlich trotzdem hilfreich, aber wie üblich keine Gewähr ;) .