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
$g |
";
FW_pO "";
- FW_pO "";
+ FW_pO "";
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 **************/
|