FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: frank am 17 Juni 2020, 10:04:24

Titel: suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 17 Juni 2020, 10:04:24
moin,

ich suche eine funktion/api, um den informchannel eines devices (detailseite) um zusätzliche events eines 2. devices zu erweitern.

gibt es dazu eventuell beispiele oder tipps?

hintergrund sind homematic geräte, die in fhem häufig aus mehreren devices bestehen. ein hauptdevice, das infos über die reale kommunikation mit dem gerät bereitstellt, plus weitere channeldevices.

mein plan ist nun, auf jeder detailseite der channeldevices eine "anzeige" zu installieren, die den kommunikationsstatus wieder gibt, der aber nur im hauptdevice existiert.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: Beta-User am 17 Juni 2020, 10:16:01
Vermutlich nur eine Teillösung, aber hier habe ich mal was bzgl. devStateIcon vorgestellt: https://forum.fhem.de/index.php/topic,97430.msg906576.html#msg906576 (es gibt leicht aktualisierten Code hier (https://github.com/rejoe2/FHEM/blob/master/99_myUtils_Homematic.pm)).
Müßte alternativ auch mit einem userReading funktionieren, sofern irgendein Reading des 1. Devices aktualisiert wird?
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: rudolfkoenig am 17 Juni 2020, 12:23:03
Was mir einfaellt/Alternativen:

- readingsGroup konfigurieren.

- ein Modul implementieren, das auf Events aller betroffenen Devices hoert (wie structure), und diese als eigene Events wiederholt. Falls noetig, ueber $hash->{FW_detailFn} eigenen HTML-Code einschleusen. Womoeglich kan man das auch mit structure erreichen.

- eigenes JavaScript einbinden (per FHEMWEB JavaScripts Attribut), was per $(document).ready() in Aktion tritt, und ueber eine neue Inform-Verbindung vom FHEM-Server ueber alle Einzelgeraete sich benachrichtigt, und die Daten auf der Seite darstellt.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 17 Juni 2020, 12:31:51
hallo Beta-User,

mit fhem "boardmitteln" wäre meine idee nur um zu setzen, wenn ich die benötigten readings von allen hauptdevices jeweils in alle channeldevices über zb notifys "clone".

diese eventuell enorme zusatzlast sollte natürlich vermieden werden. zumal diese zusatzlast jeden tag über 24 std erzeugt werden würde, obwohl es in manchen channels vielleicht einmal bei neuinstallation für 10 minuten benötigt werden würde.

ganz schlechte idee, fällt also aus.

ich möchte ja ein hilfsmittel zur verfügung stellen, das die kommunikation "nur" visualisieren soll, und nicht durch zusätzliche systemlast eventuell noch erschwert.

bisher fehlt ja ein richtiges "feedback", wenn man zb eine message an ein batterie device sendet, welches erst aufwachen muss, um die kommunikation zu starten.
das verleitet scheinbar viele, auf alles zu klicken, was verfügbar ist. gestern erst habe ich wieder ein list mit 60 pending cmds gesehen.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 17 Juni 2020, 12:52:12
Zitat von: rudolfkoenig am 17 Juni 2020, 12:23:03
- eigenes JavaScript einbinden (per FHEMWEB JavaScripts Attribut), was per $(document).ready() in Aktion tritt, und ueber eine neue Inform-Verbindung vom FHEM-Server ueber alle Einzelgeraete sich benachrichtigt, und die Daten auf der Seite darstellt.

so stelle ich mir das auch vor.
ein hm.js file gibt es auch schon, das bereits ein paar tools zur verfügung stellt. https://forum.fhem.de/index.php/topic,106959.0.html (https://forum.fhem.de/index.php/topic,106959.0.html)

mir fehlt nun zb ein beispiel, wie ich das am besten dem backend mitteile.

ich habe auch schon etwas in fhemweb.js gestöbert und FW_longpoll() gefunden. mir fehlt aber noch der durchblick, wie ich ansetzen kann.

ein paar zusätzliche tipps wären hilfreich.

am besten wäre natürlich eine erweiterung des informchannels nur um einzelne readings eines 2. devices.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: Beta-User am 17 Juni 2020, 12:57:08
Hi frank,

daher hatte ich ja angemerkt, dass das bestenfalls eine Teillösung ist - für die WT/RT's macht das auch nur dewegen (halbwegs) Sinn, weil ich nur die desired-Temp-Kanäle zur Steuerung nutze, das ist "nur" eine Verdoppelung der Abfrage diverser Readings von woanders her.

Was die Systemlast angeht, bin ich mir unsicher, gehe aber davon aus, dass devStateIcon nur ausgeführt wird, wenn es aktuell mind. einen Abnehmer dafür gibt, also das Gerät irgendwo auch angezeigt wird (?).

Ansonst ist das mit den Sub-Kanälen ein Thema, das nicht nur CUL_HM betrifft, auch wenn es da bei unbedarften Nutzern besonders "intensiv" zu beobachten ist. Das "Kommunikations-Visualisierungs-Thema" trifft man so ähnlich auch bei anderen Modulen an, ohne dass "assocatedWith" da sehr viel weiter hilft:
- ZWave - da habe ich einige 2-kanalige Aktoren, für die dann im Ergebnis 3 Devices gebildet werden; besonders beim Jalousie-Aktor ist das "unschön", weil der Lamellen-Befehl eigentlich nichts wirklich getrenntes ist - auch da habe ich das mit devStateIcon-Code zumindest optisch wieder so zusammengeflickt, dass man damit in FHEMWEB was anfangen kann... (Funktionalität macht sowieso überwiegend ASC) ;
- HUEDevice macht aus einer innr SP120 (Zwischenstecker mit Strommessfunktion) auch gleich drei Devices, ähnliches gilt für praktisch alle (Multi-) Sensoren;
(- MQTT2_DEVICE; da ist aber die "Konstruktion" des Moduls aufgrund des Protokoll-Designs sehr offen, so dass man da nicht Modulintern wirklich weiterkommen könnte)
Von daher wäre eine nicht auf hm.js beschränkte (generische) Lösung sicher auch für andere interessant.

Ansonsten geht das, was Rudi hier anregt, vermutlich eher in die Richtung, die du benötigst.

Wie dem auch sei: Viel Erfolg!
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: rudolfkoenig am 17 Juni 2020, 13:05:41
Im "neuen" Javascript:
- FW_widgets Eintrag hinzufuegen mit einer updateLine oder updateDev Funktion.
- body attribut longpollfilter anpassen/aendern (ist ein devspec), und FW_longpoll nochmal aufrufen.
(ungetestet).
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 17 Juni 2020, 13:45:39
Zitat von: Beta-User am 17 Juni 2020, 12:57:08
Von daher wäre eine nicht auf hm.js beschränkte (generische) Lösung sicher auch für andere interessant.
da stimme ich dir zu.

übrigens:
du solltest vielleicht in deiner geposteten 99_...pm auf das neue reading commState ergänzen/umstellen. wer weiss wie lange "CMDS_done" & co noch in state zu finden sind.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 17 Juni 2020, 13:50:01
Zitat von: rudolfkoenig am 17 Juni 2020, 13:05:41
Im "neuen" Javascript:
- FW_widgets Eintrag hinzufuegen mit einer updateLine oder updateDev Funktion.
- body attribut longpollfilter anpassen/aendern (ist ein devspec), und FW_longpoll nochmal aufrufen.
(ungetestet).

danke.
dann versuche ich mich da mal durch zu "wurschteln".
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: Beta-User am 17 Juni 2020, 14:23:08
Zitat von: frank am 17 Juni 2020, 13:45:39
übrigens:
du solltest vielleicht in deiner geposteten 99_...pm auf das neue reading commState ergänzen/umstellen. wer weiss wie lange "CMDS_done" & co noch in state zu finden sind.
Danke für die Info, kommt auf meine ToDo :) .
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 21 Juni 2020, 12:34:03
Zitat von: rudolfkoenig am 17 Juni 2020, 13:05:41
Im "neuen" Javascript:
- FW_widgets Eintrag hinzufuegen mit einer updateLine oder updateDev Funktion.
- body attribut longpollfilter anpassen/aendern (ist ein devspec), und FW_longpoll nochmal aufrufen.
(ungetestet).

grundsätzlich habe ich meine vorstellungen so umsetzen können.

allerdings gibt es beim erneuern des informchannels probleme, wenn "attr webdevice longpoll websocket" gesetzt ist.
fhemweb zeigt teilweise die fehlermeldung: "fhemweb.js line 1054: TypeError: FW_pollConn is undefined".
(in der aktuellen fhemweb.js ist es zeile 1059)

diese probleme sind zudem wohl browser und/oder os spezifisch:

android 9/chrome => ok.
android 9/firefox => fehlermeldung, nach bestätigung ok.
winxp/chrome => kurzzeitig "connection lost...", dann ok.
winxp/firefox => fehlermeldung, nach bestätigung ok.

bei longpoll=1 gibt es anscheinend null probleme.


console nach refresh der detailseite (winxp/firefox):
10:37:49.712 FW_queryValue:{ReadingsVal("Thermostat.OZ_Climate","burstXmit","")}  fhemweb.js:502:5
10:37:49.876 FW_queryValue:{AttrVal("Thermostat.OZ_Climate","room","")}  fhemweb.js:502:5
jsonlist2 Thermostat.OZ_Climate  hm.js:24:17
10:37:50.252 Loading script /fhem/pgm2/station-clock.js  fhemweb.js:502:5
10:37:52.558 Inform-channel opened (websocket) with filter Thermostat.OZ_Climate  fhemweb.js:502:5
10:37:54.554 Inform-channel opened (websocket) with filter Thermostat.OZ,Thermostat.OZ_Climate  fhemweb.js:502:5
jsonlist2 Thermostat.OZ  hm.js:112:17
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=Thermostat.OZ_Climate;since=1592728633;fmt=JSON&fw_id=14808&timestamp=1592728671736 aufbauen.  fhemweb.js:1208:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=Thermostat.OZ_Climate;since=1592728633;fmt=JSON&fw_id=14808&timestamp=1592728671736 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1208:18
10:38:21.494 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=Thermostat.OZ,Thermostat.OZ_Climate;since=1592728633;fmt=JSON&fw_id=14808&timestamp=1592728674552 aufbauen.  fhemweb.js:1208:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=Thermostat.OZ,Thermostat.OZ_Climate;since=1592728633;fmt=JSON&fw_id=14808&timestamp=1592728674552 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1208:18
10:38:22.310 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
TypeError: FW_pollConn is undefined[Weitere Informationen]  fhemweb.js:1054:7
10:38:26.412 ERRMSG:<  fhemweb.js:502:5
10:38:26.534 Inform-channel opened (websocket) with filter Thermostat.OZ,Thermostat.OZ_Climate  fhemweb.js:502:5
10:38:27.104 Rcvd: ["Thermostat.OZ","Tsoll:6.5°C, Tist:21.1°C, Hist:65%, Mode:central, Bat:ok, Ventil:actuator","<div id=\u0022Thermostat.OZ\u0022  tit...(325)  fhemweb.js:502:5
10:38:27.298 ERRMSG:<  fhemweb.js:502:5
10:45:37.752 Rcvd: ["Thermostat.OZ","Tsoll:6.5°C, Tist:21.2°C, Hist:65%, Mode:central, Bat:ok, Ventil:actuator","<div id=\u0022Thermostat.OZ\u0022  tit...(325)  fhemweb.js:502:5




muss ich den aufruf von FW_longpoll() eventuell besser "vorbereiten", um kompatibel mit websocket zu werden?
oder kann fhemweb.js das besser handeln?


meine ready funktion:
$(document).ready(function() {
// get csrf token
var body = document.querySelector('body');
if(body != null) {csrf = body.getAttribute('fwcsrf');}
// get the device name
var seldiv = document.querySelector('div.makeSelect');
if(seldiv != null) {
var device = seldiv.getAttribute('dev');
// use jsonlist2 to get all device data
var cmd = 'jsonlist2 ' + device;
if(hm_debug) {console.log(cmd);}
var url = HM_makeCommand(cmd);
$.getJSON(url,function(data) {
var object = data.Results[0];
// we add the actions for CUL_HM only
if(object != null && object.Internals.TYPE == 'CUL_HM') {
if(object.Internals.DEF.length == 8) {
var devspec = object.Internals.device +','+ object.Internals.NAME;
body.setAttribute('longpollfilter',devspec);
FW_longpoll();
}
HM_createRegisterTable(object);
}
});
}
});
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: rudolfkoenig am 22 Juni 2020, 12:57:19
Ich vermute ein race-condition.
Ich habe eine zusaetzliche Pruefung in fhemweb.js, Zeile 1059 eingebaut, kannst Du es bitte testen?
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 22 Juni 2020, 15:45:05
die prüfung verhindert jetzt zwar die fehlermeldung im firefox, dafür kommt aber keine verbindung mehr zustande (connection lost...), wenn ich versuche den informchannel zu ändern.

es macht mir den eindruck, als möchte ff den zuerst etablierten informchannel zunächst "sauber" beendet wissen.

14:15:43.640 FW_queryValue:{ReadingsVal("DimPBU01_chn01","pct","")}  fhemweb.js:502:5
14:15:43.662 FW_queryValue:{AttrVal("DimPBU01_chn01","room","")}  fhemweb.js:502:5
jsonlist2 DimPBU01_chn01  hm.js:25:17
14:15:43.740 Loading script /fhem/pgm2/station-clock.js  fhemweb.js:502:5
14:15:43.844 Inform-channel opened (websocket) with filter DimPBU01_chn01  fhemweb.js:502:5
14:15:44.806 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
jsonlist2 DimPBU01  hm.js:118:17
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01_chn01;since=1592828122;fmt=JSON&fw_id=37971&timestamp=1592828143840 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01_chn01;since=1592828122;fmt=JSON&fw_id=37971&timestamp=1592828143840 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:15:45.144 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828122;fmt=JSON&fw_id=37971&timestamp=1592828144804 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828122;fmt=JSON&fw_id=37971&timestamp=1592828144804 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:15:45.422 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
14:15:50.048 ERRMSG:<  fhemweb.js:502:5
14:15:50.150 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
14:15:50.326 ERRMSG:<  fhemweb.js:502:5
14:15:50.402 Rcvd:   fhemweb.js:502:5
14:15:50.428 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
14:15:50.470 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828150426 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828150426 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:15:50.476 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
14:15:55.376 ERRMSG:<  fhemweb.js:502:5
14:15:55.382 ERRMSG:<  fhemweb.js:502:5
14:15:55.478 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
14:15:55.504 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828155476 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828155476 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:15:55.508 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828155502 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828155502 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:15:55.512 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
14:16:00.412 ERRMSG:<  fhemweb.js:502:5
14:16:00.432 ERRMSG:<  fhemweb.js:502:5
14:16:00.528 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
14:16:00.532 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828160526 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828160526 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:16:00.534 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828160530 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828160530 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:16:00.538 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
14:16:05.444 ERRMSG:<  fhemweb.js:502:5
14:16:05.448 ERRMSG:<  fhemweb.js:502:5
14:16:05.556 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
14:16:05.558 Inform-channel opened (websocket) with filter DimPBU01,DimPBU01_chn01  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828165554 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828165554 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:16:05.576 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828165558 aufbauen.  fhemweb.js:1209:18
Die Verbindung zu ws://raspberrypi:8083/fhem?XHR=1&inform=type=status;filter=DimPBU01,DimPBU01_chn01;since=1592828130.546;fmt=JSON&fw_id=37971&timestamp=1592828165558 wurde unterbrochen, während die Seite geladen wurde.  fhemweb.js:1209:18
14:16:05.580 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:502:5
14:16:10.482 ERRMSG:<  fhemweb.js:502:5
14:16:10.488 ERRMSG:<  fhemweb.js:502:5



ich habe die prüfung allerdings in meine fhemweb.js (20554) eingebaut, da die aktuelle version mit meinem fhem (Latest Revision: 20893) nicht "harmonierte".
ich muss mal schauen, dass ich mir eine "vernünftige" internetverbindung organisiere.

zumindestens bitte ich mal noch einen weiteren tester, der ebenfalls die probleme mit win10/firefox hat, ebenfalls die prüfung aus zu probieren.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: rudolfkoenig am 23 Juni 2020, 10:39:00
Kannst Du bitte versuchen, erst die aktive Verbindung mit FW_closeCon() zu schliessen, und dann deine Verbindung (evtl. mit setTimeout verzoegert) zu oeffnen?
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 24 Juni 2020, 12:27:42
eine verzögerung ist scheinbar nutzlos.


die interessanteste beobachtung mit FW_closeConn() ist folgendes:

wenn ich nur FW_closeConn() ausführe bleibt die console ruhig und auch keine einblendungen von "connection lost..." im browsertab.
die verbindung vom browsertab zum fhemserver ist dann nur noch in richtung fhemserver aktiv, es gibt quasi kein rückkanal mehr.

ich kann zb ein attribut ändern. das erzeugt ja ein refresh, welches am ende erneut mein addon mit FW_closeConn() ausführt. ein folgendes "Save config" löscht auf anderen, "normalen" tabs nun auch das rote fragezeichen, auf diesem tab natürlich nicht mehr, da der rückkanal ja geschlossen ist.

ist das so vorgesehen?

edit: wahrscheinlich schon, da es "nur" um das schliessen der longpollverbindung geht.
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: rudolfkoenig am 24 Juni 2020, 12:50:50
Genau :)
Titel: Antw:suche funktion zur erweiterung des informchannels einer detailseite
Beitrag von: frank am 25 Juni 2020, 13:11:46
macht man es richtig, klappt es auch mit firefox.  :)

body.setAttribute('longpollfilter',devspec);
FW_closeConn();
setTimeout(FW_longpoll, 3000); // ff/longpoll=websocket only with delay



kürzere delays funktionieren in der regel auch. aber wenn es, warum auch immer, beim ersten mal nicht funktioniert den informchannel zu ändern, schaft es firefox nimmer mehr.
wenn der geänderte informchannel einmal etabliert war, dann funktioniert auch der reconnect mechanismus einwandfrei (lankabel zeitweise entfernen).

bleibt die frage: warum schafft firefox die änderung des informchannels nicht mit dem einfachen aufruf von FW_longpoll()?