es gibt ja seit einiger zeit dir möglichkeit per trigger WEB JS:<javascript> javascript kommandos an die offenen fhemweb browser fenster zu senden.
mit der folgenden kleinen ergänzung ist es möglich nur die fenster von einem bestimmten client zu adressieren. damit kann man dann z.b. gezielt ein oder mehrere bestimmtes info displays zu addressieren: trigger WEB JS#<ip regex>:FW_okDialog("test")
Index: TcpServerUtils.pm
===================================================================
--- TcpServerUtils.pm (revision 9866)
+++ TcpServerUtils.pm (working copy)
@@ -113,6 +113,8 @@
my %nhash;
$nhash{NR} = $devcount++;
$nhash{NAME} = $cname;
+ $nhash{PEER} = $caddr;
+ $nhash{PORT} = $port;
$nhash{FD} = $clientinfo[0]->fileno();
$nhash{CD} = $clientinfo[0]; # sysread / close won't work on fileno
$nhash{TYPE} = $type;
Index: 01_FHEMWEB.pm
===================================================================
--- 01_FHEMWEB.pm (revision 9866)
+++ 01_FHEMWEB.pm (working copy)
@@ -2409,8 +2409,10 @@
if($dn eq $ntfy->{SNAME} &&
$dev->{CHANGED} &&
- $dev->{CHANGED}->[0] =~ m/^JS:(.*)$/) {
- my $data = FW_longpollInfo($h->{fmt}, "#FHEMWEB:$ntfy->{NAME}",$1,"");
+ $dev->{CHANGED}->[0] =~ m/^JS(#([^:]*))?:(.*)$/) {
+ my $data = $3;
+ return if( $2 && $ntfy->{PEER} !~ m/$2/ );
+ $data = FW_longpollInfo($h->{fmt}, "#FHEMWEB:$ntfy->{NAME}",$data,"");
addToWritebuffer($ntfy, $data."\n");
return;
}
Habs eingecheckt.
Laut Theorie muesste man PEER:PORT abfragen, das wird aber in der Praxis nicht relevant sein.
im prinzip schon aber der port wechselt ja dauernd. wenn man ein tablet als info display verwendet wird dort kaum mehr als ein fenster offen sein.