Slider für desired-temp eines Comet Dect Thermostaten für Status "on" zeigt 8°C

Begonnen von Harry47, 09 Dezember 2018, 12:33:57

Vorheriges Thema - Nächstes Thema

Harry47

Der Slider für desired-temp eines Comet Dect Thermostaten für Status "On" zeigt 8°C im FHEMWEB Frontend. Da der Status "on" und "off" vom Slider nicht unterstützt wird , sollte zumindest der Slider beim Status "on" auf den Maximalwert 28° C angezeigt werden.
Meine Lösung erfolgt im sub "FW_widgetFallbackFn" des Moduls "01_FHEMWEB.pm":
Folgend das komplette sub:

###########################
# Widgets START
sub
FW_widgetFallbackFn()
{
  my ($FW_wname, $d, $FW_room, $cmd, $values) = @_;

  # webCmd "temp 30" should remain text
  # noArg is needed for fhem.cfg.demo / Cinema
  return "" if(!$values || $values eq "noArg");

  my($reading) = split( ' ', $cmd, 2 );
  my $current;
  if($cmd eq "desired-temp" || $cmd eq "desiredTemperature") {
    $current = ReadingsVal($d, $cmd, 20);
#  Changed by Harry47 Start
    if($current eq "on") {
      $current = '28.0' ;
    }
#  Changed by Harry47 End
    $current =~ s/ .*//;        # Cut off Celsius
    $current = sprintf("%2.1f", int(2*$current)/2) if($current =~ m/[0-9.-]/);
  } else {
    $current = ReadingsVal($d, $reading, undef);
    if( !defined($current) ) {
      $reading = 'state';
      $current = Value($d);
    }
    $current =~ s/$cmd //;
    $current = ReplaceEventMap($d, $current, 1);
  }
  return "<td><div class='fhemWidget' cmd='$cmd' reading='$reading' ".
                "dev='$d' arg='$values' current='$current'></div></td>";
}
# Widgets END
###########################


rudolfkoenig

Die Loesung des Problems gehoert nicht in diese Funktion, eigentlich gehoeren die anderen Sonderbehandlungen auch entfernt.
Abgesehen davon waere das nur die halbe Miete, weil man on von 28 nicht unterscheiden kann.

Soweit ich sehe, sendet "set Comet open" den Wert 254, was auf dem Rueckweg zu "on" gewandelt wird (analog: closed/253/off).
Ich habe jetzt den slider in FBDECT fuer 7.5 bis 28.5 spezifiziert, wobei 7.5 off und 28.5 on entspricht.
on/off wird nicht mehr gemeldet, stattdessen kommt 7.5 und 28.5.