diff --git a/fhem/CHANGED b/fhem/CHANGED index 6500c8157..5e7d732e6 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -49,6 +49,7 @@ - feature: stateFormat (readingsFn modules) and showInternalValues attributes - feature: new readingsFn modules: FS20 CUL_WS HMS CUL_EM CUL_TX EnOcean ZWave - feature: telnet client mode + - bugfix: FHEMWEB longpoll misses initial state change (HM: set_on vs. on) - 2012-10-28 (5.3) - feature: added functions trim, ltrim, rtrim, UntoggleDirect, diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 8e2e30ca3..e62f1482c 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -486,7 +486,8 @@ FW_answerCall($) my $c = $me->{CD}; print $c "HTTP/1.1 200 OK\r\n", $FW_headercors, - "Content-Type: application/octet-stream; charset=$FW_encoding\r\n\r\n"; + "Content-Type: application/octet-stream; charset=$FW_encoding\r\n\r\n", + FW_roomStatesForInform($FW_room); return -1; } @@ -1090,7 +1091,7 @@ FW_showRoom() FW_pO "\n<tr><td><div class=\"devType\">$g</div></td></tr>"; FW_pO "<tr><td>"; - FW_pO "<table class=\"block wide\" id=\"$g\">"; + FW_pO "<table class=\"block wide\" id=\"TYPE_$g\">"; foreach my $d (sort { lc(AttrVal($a,"alias",$a)) cmp lc(AttrVal($b,"alias",$b)) } keys %{$group{$g}}) { @@ -2448,6 +2449,21 @@ FW_dumpFileLog($$$) return $row; } +sub +FW_roomStatesForInform($) +{ + my ($room) = @_; + return "" if(!$room); + + my $data = ""; + my @rl = devspec2array("room=$room"); + foreach my $dn (@rl) { + my ($allSet, $cmdlist, $txt) = FW_devState($dn, ""); + $data .= "$dn<<$defs{$dn}{STATE}<<$txt\r\n"; + } + return $data; +} + sub FW_Notify($$) { @@ -2462,6 +2478,7 @@ FW_Notify($$) my $rn = AttrVal($dn, "room", ""); if($filter eq "all" || $rn =~ m/\b$filter\b/) { + # Why is saving this stuff needed? FLOORPLAN? my @old = ($FW_wname, $FW_ME, $FW_longpoll, $FW_ss, $FW_tp, $FW_subdir); $FW_wname = $ntfy->{SNAME}; $FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem"); @@ -2471,7 +2488,7 @@ FW_Notify($$) $FW_tp = AttrVal($FW_wname, "touchpad", $FW_ss); my ($allSet, $cmdlist, $txt) = FW_devState($dn, ""); ($FW_wname, $FW_ME, $FW_longpoll, $FW_ss, $FW_tp, $FW_subdir) = @old; - $data = "$dn;$dev->{STATE};$txt\n"; + $data = "$dn<<$dev->{STATE}<<$txt\n"; } elsif($filter eq "console") { if($dev->{CHANGED}) { # It gets deleted sometimes (?) diff --git a/fhem/www/images/default/set_off.png b/fhem/www/images/default/set_off.png new file mode 100644 index 000000000..e4e349b06 Binary files /dev/null and b/fhem/www/images/default/set_off.png differ diff --git a/fhem/www/images/default/set_on.png b/fhem/www/images/default/set_on.png new file mode 100644 index 000000000..bc172ff80 Binary files /dev/null and b/fhem/www/images/default/set_on.png differ diff --git a/fhem/www/pgm2/fhemweb.js b/fhem/www/pgm2/fhemweb.js index b7601f903..be86c5143 100644 --- a/fhem/www/pgm2/fhemweb.js +++ b/fhem/www/pgm2/fhemweb.js @@ -30,7 +30,7 @@ FW_doUpdate() //We wait until it is complete, i.e. terminated by "\n" lines.pop(); for(var i=FW_curLine; i < lines.length; i++) { - var d = lines[i].split(";", 3); // Complete arg + var d = lines[i].split("<<", 3); // Complete arg if(d.length != 3) continue; var el = document.getElementById(d[0]); @@ -66,7 +66,7 @@ FW_longpoll() function FW_delayedStart() { - setTimeout("FW_longpoll()", 1000); + setTimeout("FW_longpoll()", 100); } /*************** LONGPOLL END **************/