Boost Button f. HM-CC-RT-DN in readingsGroup

Begonnen von Jimbo, 24 Januar 2019, 11:14:26

Vorheriges Thema - Nächstes Thema

Jimbo

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

Beta-User

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 ;) .

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors