senden von daten an einen bestimmten web client

Begonnen von justme1968, 12 November 2015, 13:53:53

Vorheriges Thema - Nächstes Thema

justme1968

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;
   }
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Habs eingecheckt.

Laut Theorie muesste man PEER:PORT abfragen, das wird aber in der Praxis nicht relevant sein.

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968