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 **************/