asyncOutput() und FHEMWEB mit websocket Probleme

Begonnen von CoolTux, 06 März 2018, 16:54:49

Vorheriges Thema - Nächstes Thema

CoolTux

Ich bekomme einfach keine Daten angezeigt in FHEMWEB wenn ich die Instanz auf longpoll websocket setze. Bei longpoll 1 bekomme ich die Daten



2018.03.06 16:52:00 4: Connection closed for WEB_10.6.6.17_59734: EOF
2018.03.06 16:52:00 4: WEB_10.6.6.17_59723 POST /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_277902422370463&fw_id=17512; BUFLEN:0
2018.03.06 16:52:00 4: authorize WEB/cmd/get: allowed_WEB returned dont care
2018.03.06 16:52:00 4: authorize WEB/cmd/get: allowed_WEBhook returned dont care
2018.03.06 16:52:00 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.06 16:52:00 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.06 16:52:00 4: WEB: /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_277902422370463&fw_id=17512 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.06 16:52:01 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.06 16:52:01 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.06 16:52:01 4: Connection closed for WEB_10.6.6.17_59735: EOF
2018.03.06 16:52:06 4: Connection accepted from WEB_10.6.6.17_59739
2018.03.06 16:52:06 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.06 16:52:06 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.06 16:52:18 4: WEB_10.6.6.17_59723 GET /fhem?detail=aqicnMaster&fw_id=; BUFLEN:0
2018.03.06 16:52:18 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.06 16:52:18 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.06 16:52:18 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.06 16:52:18 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.06 16:52:18 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.06 16:52:18 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.06 16:52:18 4: WEB: /fhem?detail=aqicnMaster&fw_id= / RL:3038 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.06 16:52:18 4: Connection closed for WEB_10.6.6.17_59739: EOF
2018.03.06 16:52:18 4: WEB_10.6.6.17_59723 GET /fhem?cmd=%7BAttrVal(%22aqicnMaster%22%2C%22room%22%2C%22%22)%7D&XHR=1&fwcsrf=csrf_277902422370463; BUFLEN:0
2018.03.06 16:52:18 4: authorize WEB/cmd/perl: allowed_WEB returned dont care
2018.03.06 16:52:18 4: authorize WEB/cmd/perl: allowed_WEBhook returned dont care
2018.03.06 16:52:18 4: WEB: /fhem?cmd=%7BAttrVal(%22aqicnMaster%22%2C%22room%22%2C%22%22)%7D&XHR=1&fwcsrf=csrf_277902422370463 / RL:26 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.06 16:52:18 4: WEB_10.6.6.17_59723 GET /fhem/icons/favicon; BUFLEN:0
2018.03.06 16:52:18 4: Connection accepted from WEB_10.6.6.17_59741



Liegt es nur an meinem websocket?




Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Wie schaut denn "dein" websocket aus? Will sagen: hast du zwischen Browser und FHEM besondere Komponenten wie Proxy/Firewall/etc?
Wieso meinst du, dass etwas zum Browser geschickt werden sollte? Aus dem Log geht das nicht hervor.
Was genau meinst du mit "keine Daten angezeigt"?

CoolTux

Hallo Rudi,

Zwischen Browser und FHEM Server ist eine Firewall welche bezüglich FHEM nur Port 8083 Forwarded.
Bei dem Device mache ich ein get und es sollte dann ein Zusätzliches Fenster aufpoppen mit den entsprechenden Werten als HTML Tabelle. Kann da gerne morgen mal ein Screenshot machen.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Waere auch interessant zu wissen, ob das Problem auch ohne Firewall besteht.

CoolTux

Das bekomme ich leider nicht hin. Ich kann halt nur sagen das es mit longpoll 1 funktioniert. Würde denn die Entwicklerkonsole des Browsers etwas Aufschluss geben können?
Werde mir das ganze morgen noch mal anschauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ein anderes Modul welches auf selbige Art arbeitet, also Daten für eine Ausgabe als Tabelle in einem Pop-up auf zu arbeiten funktioniert ohne AsyncOutput super, trotz websocket.
Hier werden die Daten per HttpUtils_BlockingGet geholt und bei AsyncOutput per HttpUtils_NonblockingGet
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Zitatfunktioniert ohne AsyncOutput super, trotz websocket.
Das ist nicht wirklich ein Wunder, ohne asyncOutput wird die longpoll Verbindung nicht verwendet (websocket oder nicht).

ZitatWürde denn die Entwicklerkonsole des Browsers etwas Aufschluss geben können?
Vielleicht, ich glaube aber eher nicht. Vermutlich muss ich mehr Debug in FHEMWEB einbauen.

CoolTux

Habe kein Problem damit da was rum zu bauen. Sag mir nur wo ich welchen Code einfügen soll und dann kann ich testen. Das System auf dem ich das Modul zu laufen habe ist nicht ganz so kritisch.

Ich danke Dir schon mal für die Unterstützung.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Ich habe eine neue 01_FHEMWEB.pm eingecheckt mit etwas mehr debugging fuer AsyncOutput.
Bitte:
- attr WEB verbose 4 setzen, Problem reproduzieren, und FHEM-Log + JavaScript-ConsolenInhalt hier anhaengen.
- Achtung: AsyncOutput funktioniert _nicht_ im EventMonitor
- Auf eine "normale" FHEM-Seite wechseln (Raum oder Detailansicht), danach im telnet oder andere FHEMWEB-Instanz
fhem> li WEB_.* FW_ID
absetzen, ich kriege:
ZitatWEB_127.0.0.1_56033      307
Damit Folgendes passend ersetzen, und ausfuehren:
{ FW_AsyncOutput($defs{"WEB_127.0.0.1_56033"}, "HALLO") }

Was steht im FHEM-Log? Kommt ein Dialog?

CoolTux

Guten Morgen Rudi,

Ich konnte das ganze nun einmal auf einer lokalen VM auf meinem Notebook testen und da bekomme ich trotz websocket ein aufpoppendes Fenster. Genau so wie es sein sollte.
Ich teste Deine neue Version wie beschrieben heute im laufe des Tages.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

#10
Hallo Rudi,

Ich habe mal mit der Developerkonsole vom Chrome probiert. Da kommt eine Ausagbe

09:38:56.122 FW_queryValue:{AttrVal("aqicnMaster","room","")}
fhemweb.js:427 09:38:56.216 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 09:38:56.953 Rcvd:
fhemweb.js:427 09:39:05.132 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...
fhemweb.js:1106 WebSocket connection to 'wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520498334;fmt=JSON&fw_id=185&timestamp=1520498336216' failed: A server must not mask any frames that it sends to the client.
FW_longpoll @ fhemweb.js:1106
(anonymous) @ VM114:1
fhemweb.js:427 09:39:06.579 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<
fhemweb.js:427 09:39:11.479 ERRMSG:<
fhemweb.js:427 09:39:11.581 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 09:39:12.211 Rcvd:


Hier muß ich aber dazu sagen das ich hier von außen über einen Reverse Proxy gegangen bin. Intern teste ich heute Abend.


Hier das selbe mit Firefox


09:45:09.947 FW_queryValue:{AttrVal("aqicnMaster","room","")}  fhemweb.js:427:5
09:45:10.035 Inform-channel opened (websocket) with filter aqicnMaster  fhemweb.js:427:5
09:45:10.723 Rcvd:   fhemweb.js:427:5
09:45:55.424 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...  fhemweb.js:427:5
Die Verbindung zu wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520498706;fmt=JSON&fw_id=252&timestamp=1520498710035 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1106:18
09:45:57.110 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:427:5
09:46:02.012 ERRMSG:<  fhemweb.js:427:5
09:46:02.113 Inform-channel opened (websocket) with filter aqicnMaster  fhemweb.js:427:5
09:46:08.379 Rcvd:




Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Hier noch mal mit Reverse Proxy. Diesmal aber FHEMWEB mit verbose 4 und Java Konsole


Entwicklerkonsole mit Java Ausgabe

09:49:09.749 FW_queryValue:{AttrVal("aqicnMaster","room","")}  fhemweb.js:427:5
09:49:09.836 Inform-channel opened (websocket) with filter aqicnMaster  fhemweb.js:427:5
09:49:10.456 Rcvd:   fhemweb.js:427:5
Die Verbindung zu wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520498706.805;fmt=JSON&fw_id=252&timestamp=1520498762112 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1106:18
Die Verbindung zu wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=WEB;since=1520498930;fmt=JSON&fw_id=271&timestamp=1520498932412 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1106:18
09:49:26.391 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...  fhemweb.js:427:5
Die Verbindung zu wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=WEB;since=1520498943;fmt=JSON&fw_id=277&timestamp=1520498944690 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1106:18
Die Verbindung zu wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520498948;fmt=JSON&fw_id=283&timestamp=1520498949836 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1106:18
09:49:28.263 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:427:5
Die Verbindung zu wss://fhem02.net/fhem?XHR=1&inform=type=status;filter=room=Klima;since=1520498946;fmt=JSON&fw_id=281&timestamp=1520498948474 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1106:18
09:49:33.167 ERRMSG:<  fhemweb.js:427:5
09:49:33.266 Inform-channel opened (websocket) with filter aqicnMaster  fhemweb.js:427:5
09:49:34.113 Rcvd: ["aqicnMaster","search finished","<div id=\u0022aqicnMaster\u0022  title=\u0022search finished\u0022 class=\u0022col2\u0022>search f...(147)  fhemweb.js:427:5




FHEM Log FHEMWEB Instanz WEB mit verbose 4

2018.03.08 09:49:23 4: Connection closed for WEB_10.6.6.17_57271: EOF
2018.03.08 09:49:26 4: Connection accepted from WEB_10.6.6.17_57289
2018.03.08 09:49:26 4: WEB_10.6.6.17_57289 POST /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_821718558298017&fw_id=283; BUFLEN:0
2018.03.08 09:49:26 4: authorize WEB/cmd/get: allowed_WEB returned dont care
2018.03.08 09:49:26 4: authorize WEB/cmd/get: allowed_WEBhook returned dont care
2018.03.08 09:49:26 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.08 09:49:26 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.08 09:49:26 4: WEB: /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_821718558298017&fw_id=283 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.08 09:49:26 4: Connection closed for WEB_10.6.6.17_57289: EOF
2018.03.08 09:49:27 4: Connection closed for WEB_10.6.6.17_57281: EOF
2018.03.08 09:49:28 4: AsyncOutput from WEB_10.6.6.17_57289
2018.03.08 09:49:28 4: Connection closed for WEB_10.6.6.17_57286: EOF
2018.03.08 09:49:29 4: Connection closed for WEB_10.6.6.17_57283: EOF
2018.03.08 09:49:33 4: Connection accepted from WEB_10.6.6.17_57291



Ich denke mal hier haben wir schon mal eine Sache
2018.03.08 09:49:26 4: Connection closed for WEB_10.6.6.17_57289: EOF
2018.03.08 09:49:28 4: AsyncOutput from WEB_10.6.6.17_57289

Die Verbindung wurde getrennt bevor  AsyncOutput ausliefern konnte. Das kann aber nun auch am Proxy liegen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Zu deinen Proxys kann ich nichts sagen.
Ein close ist kein Problem, solange eine Verbindung mit der gleichen FW_ID gibt.

CoolTux

Danke Dir.
Dann lassen wir das mit dem Proxy erstmal aussen vor und schauen uns an was eine direkte Verbindung macht. Also durch meine Firewall natürlich. Dazu gebe ich heute Abend mehr Daten.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dev0

ZitatIch konnte das ganze nun einmal auf einer lokalen VM auf meinem Notebook testen und da bekomme ich trotz websocket ein aufpoppendes Fenster. Genau so wie es sein sollte.
Ist das nicht der Beweis, dass es an der Firewall liegt?