From e7d61a9f97224fa8695d42055ae5d4172198d0bd Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Fri, 2 Apr 2010 16:26:58 +0000 Subject: [PATCH] FHEMWEB FHT changes git-svn-id: https://svn.fhem.de/fhem/trunk@616 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/fhem.pl | 17 ++++++++++++++++- fhem/webfrontend/pgm2/01_FHEMWEB.pm | 9 +++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 12ba01f1f..11b80b507 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -62,6 +62,7 @@ sub LoadModule($); sub Log($$); sub OpenLogfile($); sub PrintHash($$); +sub ReadingsVal($$$); sub ResolveDateWildcards($@); sub RemoveInternalTimer($); sub SecondsTillTomorrow($); @@ -160,7 +161,7 @@ my $nextat; # Time when next timer will be triggered. my $intAtCnt=0; my %duplicate; # Pool of received msg for multi-fhz/cul setups my $duplidx=0; # helper for the above pool -my $cvsid = '$Id: fhem.pl,v 1.104 2010-04-02 14:20:53 rudolfkoenig Exp $'; +my $cvsid = '$Id: fhem.pl,v 1.105 2010-04-02 16:26:58 rudolfkoenig Exp $'; my $namedef = "where is either:\n" . "- a single device name\n" . @@ -2238,3 +2239,17 @@ SecondsTillTomorrow($) # 86400, if tomorrow is no DST change return $stt_sec; } +sub +ReadingsVal($$$) +{ + my ($d,$n,$default) = @_; + if(defined($defs{$d}) && + defined($defs{$d}{READINGS}) && + defined($defs{$d}{READINGS}{$n}) && + defined($defs{$d}{READINGS}{$n}{VAL})) { + return $defs{$d}{READINGS}{$n}{VAL}; + } + return $default; +} + + diff --git a/fhem/webfrontend/pgm2/01_FHEMWEB.pm b/fhem/webfrontend/pgm2/01_FHEMWEB.pm index eeabe1217..6b362266a 100755 --- a/fhem/webfrontend/pgm2/01_FHEMWEB.pm +++ b/fhem/webfrontend/pgm2/01_FHEMWEB.pm @@ -751,20 +751,21 @@ FW_showRoom() } elsif($type eq "FHT") { - $v = $defs{$d}{READINGS}{"measured-temp"}{VAL}; - $v = "" if(!defined($v)); + $v = ReadingsVal($d, "measured-temp", ""); $v =~ s/ .*//; pO "$d"; pO "$v°"; $v = sprintf("%2.1f", int(2*$v)/2) if($v =~ m/[0-9.-]/); - my @tv = map { ($_.".0", $_+0.5) } (10..29); + my @tv = map { ($_.".0", $_+0.5) } (5..30); + shift(@tv); # 5.0 is not valid $v = int($v*20)/$v if($v =~ m/^[0-9].$/); pO FW_hidden("arg.$d", "desired-temp"); pO FW_hidden("dev.$d", $d); + pO "" . - FW_select("val.$d",\@tv,$v) . + FW_select("val.$d", \@tv, ReadingsVal($d, "desired-temp", $v)) . FW_submit("cmd.$d", "set") . ""; } elsif($type eq "FileLog") {