Autor Thema: asyncOutput() und FHEMWEB mit websocket Probleme  (Gelesen 3665 mal)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
asyncOutput() und FHEMWEB mit websocket Probleme
« am: 06 März 2018, 16:54:49 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #1 am: 06 März 2018, 21:33:18 »
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"?

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #2 am: 06 März 2018, 21:39:07 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net
Hilfreich Hilfreich x 1 Liste anzeigen

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #3 am: 06 März 2018, 21:48:31 »
Waere auch interessant zu wissen, ob das Problem auch ohne Firewall besteht.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #4 am: 06 März 2018, 21:51:08 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #5 am: 06 März 2018, 21:58:28 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #6 am: 06 März 2018, 22:18:17 »
Zitat
funktioniert ohne AsyncOutput super, trotz websocket.
Das ist nicht wirklich ein Wunder, ohne asyncOutput wird die longpoll Verbindung nicht verwendet (websocket oder nicht).

Zitat
Wü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.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #7 am: 06 März 2018, 22:33:10 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #8 am: 07 März 2018, 22:36:43 »
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:
Zitat
WEB_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?

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #9 am: 08 März 2018, 06:21:44 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #10 am: 08 März 2018, 09:42:43 »
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
« Letzte Änderung: 08 März 2018, 09:47:28 von CoolTux »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #11 am: 08 März 2018, 09:55:55 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #12 am: 08 März 2018, 11:52:37 »
Zu deinen Proxys kann ich nichts sagen.
Ein close ist kein Problem, solange eine Verbindung mit der gleichen FW_ID gibt.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #13 am: 08 März 2018, 11:53:47 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3578
    • _.:|:._
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #14 am: 08 März 2018, 12:49:18 »
Zitat
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.
Ist das nicht der Beweis, dass es an der Firewall liegt?

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #15 am: 08 März 2018, 12:55:00 »
Ja ist es sicherlich. Steht ja auch ausser Frage. Mich interessiert aber wieso. Der Port wird forwarded, Protokoll TCP. Leider kenne ich websocket nicht, denke aber es sollte doch mit dem Forward ohne Probleme gehen. Oder?
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3578
    • _.:|:._
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #16 am: 08 März 2018, 12:57:30 »
Wenn es weitergeletet wird: ja. Bist Du sicher, dass es so ist?

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #17 am: 08 März 2018, 13:01:15 »
Ja denn die Webseite wird ja geladen, ich kann die Widgets verwenden, also damit auch schalten, es werden alles Readings angezeigt und das beste es werden mir aktuallisierte Readings angezeigt. Also Reading Timestamp ändert sich und wird rot.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3578
    • _.:|:._
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #18 am: 08 März 2018, 13:17:18 »
Wäre ich von diesem Problem betroffen, dann würde ich den in/out Traffic auf dem Switchport mitschneiden und mit Wireshark o.ä. nachschauen, ob wirklich alles _unverändert_ durchgeht. Oder die FW, zum Testen, deaktivieren. Je nach Aufwand.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #19 am: 08 März 2018, 13:24:49 »
Wäre ich von diesem Problem betroffen, dann würde ich den in/out Traffic auf dem Switchport mitschneiden und mit Wireshark o.ä. nachschauen, ob wirklich alles _unverändert_ durchgeht. Oder die FW, zum Testen, deaktivieren. Je nach Aufwand.

Es handelt sich dabei um simpelstes linux kernel packetfiltern. Ich schaue heute Abend gerne auch nich mit wenn ich teste was die Firewall dazu sagt.
Ausschalten geht leider nicht, dann ist alles tot.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #20 am: 08 März 2018, 20:07:47 »
Hallo Rudi,

Hier nun die Daten für den direkten Zugriff, lediglich über eine Firewall mit Portforwarding




Browserkonsole
20:01:14.586 FW_queryValue:{AttrVal("aqicnMaster","room","")}
fhemweb.js:427 20:01:14.680 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 20:01:15.093 Rcvd:
fhemweb.js:427 20:02:08.096 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...
fhemweb.js:1106 WebSocket connection to 'wss://fhem02.tuxnet.local:8083/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520535674;fmt=JSON&fw_id=919&timestamp=1520535674680' failed: A server must not mask any frames that it sends to the client.
fhemweb.js:427 20:02:09.895 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<
fhemweb.js:427 20:02:14.796 ERRMSG:<
fhemweb.js:427 20:02:14.896 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 20:02:15.151 Rcvd: ["aqicnMaster","search finished","<div id=\u0022aqicnMaster\u0022  title=\u0022search finished\u0022 class=\u0022col2\u0022>search f...(147)


FHEM Log
2018.03.08 20:02:08 4: WEB_10.6.6.17_37301 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=919; BUFLEN:0
2018.03.08 20:02:08 4: authorize WEB/cmd/get: allowed_WEB returned dont care
2018.03.08 20:02:08 4: authorize WEB/cmd/get: allowed_WEBhook returned dont care
2018.03.08 20:02:08 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.08 20:02:08 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.08 20:02:09 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=919 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
 /
2018.03.08 20:02:10 4: AsyncOutput from WEB_10.6.6.17_37301
2018.03.08 20:02:10 4: Connection closed for WEB_10.6.6.17_37340: EOF
2018.03.08 20:02:15 4: Connection accepted from WEB_10.6.6.17_37344
2018.03.08 20:03:05 4: Closing inactive connection WEB_10.6.6.17_37302
2018.03.08 20:04:05 4: Closing inactive connection WEB_10.6.6.17_37301

Das Firewalllog meldet nichts.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #21 am: 09 März 2018, 19:36:57 »
Habe nicht wirklich eine Idee, und verstehe auch die Chrome-Fehlermeldung nicht.
Kannst du bitte den Text noch ausgeben, indem du in 01_FHEMWEB.pm die neue Zeile
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME}";
durch
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME} $data";
ersetzt, und nochmal testest?

Gibt es diese Probleme auch durch einen ssh Tunnel zum FHEM Server?
D.h. "ssh -L8083:localhost:8083 fhemuser@fhemserver", und im Browser http://localhost:8083/fhem

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #22 am: 09 März 2018, 19:41:12 »
Habe nicht wirklich eine Idee, und verstehe auch die Chrome-Fehlermeldung nicht.
Kannst du bitte den Text noch ausgeben, indem du in 01_FHEMWEB.pm die neue Zeile
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME}";
durch
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME} $data";
ersetzt, und nochmal testest?

Gibt es diese Probleme auch durch einen ssh Tunnel zum FHEM Server?
D.h. "ssh -L8083:localhost:8083 fhemuser@fhemserver", und im Browser http://localhost:8083/fhem

Kann ich gerne testen.
Kann auch mal versuchen über ssh ein Socket Proxy auf zu bauen. Mal schauen.


Da keine Dir.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #23 am: 10 März 2018, 07:34:43 »
Guten Morgen Rudi,

Interessanter Weise bekomme ich über SSH den selben Effekt. Anbei die Logs

2018.03.10 07:31:30 4: WEB_127.0.0.1_45452 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=3098; BUFLEN:0
2018.03.10 07:31:30 4: authorize WEB/cmd/get: allowed_WEB returned dont care
2018.03.10 07:31:30 4: authorize WEB/cmd/get: allowed_WEBhook returned dont care
2018.03.10 07:31:30 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.10 07:31:30 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.10 07:31:30 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=3098 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
 /
2018.03.10 07:31:31 4: AsyncOutput from WEB_127.0.0.1_45452 ["#FHEMWEB:WEB","FW_okDialog('<table><tr><td><table class=\u0022block wide\u0022><tr class=\u0022even\u0022><td><b>City</b></td><td><b>Last Update Time</b></td><td><b>Latitude</b></td><td><b>Longitude</b></td><td></td></tr><tr class=\u0022odd\u0022><td>Potsdam, Großbeerenstr. v, Germany</td><td>2018-03-10 06:00:00</td><td>52.389817</td><td>13.0903142</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.389817+13.0903142\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam__Gro_beerenstr._v__Germany+Aqicn+6198&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr><tr class=\u0022even\u0022><td>Potsdam-Zentrum, Germany</td><td>2018-03-10 07:00:00</td><td>52.401111111111</td><td>13.059722222222</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.401111111111+13.059722222222\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam_Zentrum__Germany+Aqicn+6189&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr><tr class=\u0022odd\u0022><td>Potsdam, Zeppelinstr. v, Germany</td><td>2018-03-10 07:00:00</td><td>52.393888888889</td><td>13.037777777778</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.393888888889+13.037777777778\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam__Zeppelinstr._v__Germany+Aqicn+6199&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr><tr class=\u0022even\u0022><td>Potsdam, Groß Glienicke, Germany</td><td>2018-03-10 07:00:00</td><td>52.484166666667</td><td>13.123611111111</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.484166666667+13.123611111111\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam__Gro__Glienicke__Germany+Aqicn+6188&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr></table></td></tr></table>')",""]
2018.03.10 07:31:31 4: Connection closed for WEB_127.0.0.1_45498: EOF
2018.03.10 07:31:36 4: Connection accepted from WEB_127.0.0.1_45512
2018.03.10 07:31:36 4: Connection closed for WEB_127.0.0.1_45512: EOF
2018.03.10 07:31:37 4: Connection accepted from WEB_127.0.0.1_45516


07:31:01.530 FW_queryValue:{AttrVal("aqicnMaster","room","")}
fhemweb.js:427 07:31:01.625 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 07:31:02.005 Rcvd:
fhemweb.js:427 07:31:30.392 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...
fhemweb.js:1106 WebSocket connection to 'wss://localhost:8083/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520663460;fmt=JSON&fw_id=3098&timestamp=1520663461624' failed: Invalid frame header
FW_longpoll @ fhemweb.js:1106
(anonymous) @ VM214:1
fhemweb.js:427 07:31:31.669 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<
fhemweb.js:427 07:31:36.570 ERRMSG:<
fhemweb.js:427 07:31:36.670 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 07:31:37.085 Rcvd:
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #24 am: 10 März 2018, 12:06:03 »
Bin ratlos, bei mir funktioniert es: Ich habe aus der AsyncOutput-Zeile in deinem Log die <table>...</table> Daten in /tmp/t.txt gespeichert, es mit <html> "umkeidet", \u0022 in " konvertiert und es per
Zitat
fhem> { FW_AsyncOutput($defs{"WEB_127.0.0.1_53192"}, `cat /tmp/t.txt`) }
angezeigt, und ich bekomme die angehaengte Darstellung, was meiner Ansicht nach ok ist.

Irgendwer muss bei Dir die Daten aendern, ich wuerde, wie dev0 das vorgeschlagen hat, mit Wireshark / tcpdump / etc es in beiden Faellen (geht/geht nicht) protokollieren, und die beiden Protokolle vergleichen. Sorry, aber das ist das Beste, was mir z.Zt. einfaellt.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #25 am: 10 März 2018, 12:30:54 »
Bin ratlos, bei mir funktioniert es: Ich habe aus der AsyncOutput-Zeile in deinem Log die <table>...</table> Daten in /tmp/t.txt gespeichert, es mit <html> "umkeidet", \u0022 in " konvertiert und es per angezeigt, und ich bekomme die angehaengte Darstellung, was meiner Ansicht nach ok ist.

Irgendwer muss bei Dir die Daten aendern, ich wuerde, wie dev0 das vorgeschlagen hat, mit Wireshark / tcpdump / etc es in beiden Faellen (geht/geht nicht) protokollieren, und die beiden Protokolle vergleichen. Sorry, aber das ist das Beste, was mir z.Zt. einfaellt.

Musst Dich entschuldigen. Vielen Dank für Deine Unterstützung. Ich werde mir das ganze dann die Tage mal in Ruhe anschauen. Auch so wie dev0 und Du es vorgeschlagen haben.



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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #26 am: 11 März 2018, 20:46:45 »
Gute Nachrichen. Ich habe neue Infos. Es liegt nicht an websocket, es liegt an HTTPS. Sobald ich HTTPS deaktiviere und alles andere so lasse, geht es.
Jetzt muss ich nur noch rausfinden was HTTPS da macht.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #27 am: 11 März 2018, 21:13:33 »
Ich habe soeben die Gegenprobe auf meinem lokalen virtualisierten FHEM gemacht, da wo es vorher (ohne HTTPS) ging. Nun habe auch hier, nach aktivieren von HTTPS, genau das selbige Fehlerbild.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #28 am: 13 März 2018, 10:29:12 »
Wäre es möglich das ein anderer Entwickler einmal asyncOutput unter HTTPS testet bitte?
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1557
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #29 am: 13 März 2018, 11:56:05 »
Wäre es möglich das ein anderer Entwickler einmal asyncOutput unter HTTPS testet bitte?
Hi,

das Verhalten kann ich nachstellen.

Allerdings habe ich direkt auf dem FHEM Server kein SSL aktiviert, sondern einen SSL Server davor hängen. Der SSL Server leitet alles auf den entsprechenden HTTP Port vom FHEM Server weiter.

Mit Longpoll=1 zeigt es die Dialog. Mit Longpoll=websocket kommt im Browser folgende Fehlermeldung.

fhemweb.js:1106 WebSocket connection to 'wss://10.10.0.242/fhem?XHR=1&inform=type=status;filter=WEB.Test;since=1520938390;fmt=JSON&fw_id=154&timestamp=1520938389720' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #30 am: 13 März 2018, 12:03:06 »
Ich danke Dir Micha. Das Verhalten kann man als selbiges wie bei mir bezeichnen.

@Rudi
Kann ich Dir irgendwie helfen beim finden? Weitere Debugausgaben oder so? Ich bin was Web-Geschichten an geht nicht so versiert.



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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22260
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #31 am: 13 März 2018, 23:17:58 »
Zitat
Sobald ich HTTPS deaktiviere und alles andere so lasse, geht es.
Bei mir funktioniert es mit HTTPS, wenn HTTPS von FHEMWEB implementiert wird.
Wenn Apache als HTTPS nach HTTP Uebersetzer fungiert, dann habe ich auch die erwaehnten Probleme.
Laut Internet haben Andere das gleiche Problem mindestens vor 1.5 Jahren entdeckt, ich habe aber auf Anhieb keine Loesung gefunden.

Waere dankbar, wenn jemand laenger/geschickter im Internet suchen koennte :)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #32 am: 14 März 2018, 05:36:38 »
Bei mir funktioniert es mit HTTPS, wenn HTTPS von FHEMWEB implementiert wird.
Wenn Apache als HTTPS nach HTTP Uebersetzer fungiert, dann habe ich auch die erwaehnten Probleme.
Laut Internet haben Andere das gleiche Problem mindestens vor 1.5 Jahren entdeckt, ich habe aber auf Anhieb keine Loesung gefunden.

Waere dankbar, wenn jemand laenger/geschickter im Internet suchen koennte :)

Bin da bisschen ratlos weil es ja auf meiner VM auf dem Notebook wo ich FHEMWEB dann direkt vom Browser auf dem Notebook aufrufe auch nicht geht. Aber ich werde die Tage da mal intensiv suchen.

Danke Rudi
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25237
Antw: asyncOutput() und FHEMWEB mit websocket Probleme
« Antwort #33 am: 16 März 2018, 18:55:53 »
Es gibt weitere Erkenntnis. Ich habe nun in der FHEMWEB Instanz WEB das SSL deaktiviert und mich dann über meinen reverse Proxy der SSL macht mit FHEM verbunden. Ergebnis. Eine saubere Ausgabe.

18:46:58.211 FW_queryValue:{AttrVal("aqicnMaster","room","")}
fhemweb.js:427 18:46:58.306 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 18:46:58.353 Rcvd:
fhemweb.js:427 18:47:05.468 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_909705882183684&cmd.getaqicnMaster=get&arg.getaqicnM...
fhemweb.js:427 18:47:06.704 Rcvd: ["#FHEMWEB:WEB","FW_okDialog('<table><tr><td><table class=\u0022block wide\u0022><tr class=\u0022even\u0022><td><b>City</b></td><td>...(1984)
fhemweb.js:427 18:47:06.743 Rcvd: ["aqicnMaster","search finished","<div id=\u0022aqicnMaster\u0022  title=\u0022search finished\u0022 class=\u0022col2\u0022>search f...(147)
fhemweb.js:427 18:47:06.745 Rcvd: ["aqicnMaster-state","search finished","search finished"]
fhemweb.js:427 18:47:06.746 Rcvd: ["aqicnMaster-state-ts","2018-03-16 18:47:06","2018-03-16 18:47:06"]


Sorry aber irgendwo muss ich ein Problem mit der HTTPS SSL Konfig von FHEMWEB haben.


Internals:
   CFGFN     
   CONNECTS   75
   CSRFTOKEN  csrf_xxxxxxxx
   DEF        8083 global
   FD         5
   NAME       WEB
   NR         3
   NTFY_ORDER 50-WEB
   PORT       8083
   SSL        1
   STATE      Initialized
   TYPE       FHEMWEB
Attributes:
   HTTPS      1
   JavaScripts codemirror/fhem_codemirror.js
   codemirrorParam { "autocomplete":true, "indentWithTabs":false, "autoCloseBrackets":false, "height":"auto", "jumpToLine":true, "jumpToLine_extraKey":"Alt-H", "indentUnit":2 }
   longpoll   websocket
   sslVersion TLSv12:!SSLv3
   styleData  ""
   stylesheetPrefix dark

Könnte es etwas mit meinen eigenen Zertifikat zu tun haben?
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

 

decade-submarginal