FW_okDialog wird durch Navigated to http:// verdrängt

Begonnen von phys1, 13 Mai 2026, 19:45:22

Vorheriges Thema - Nächstes Thema

phys1

Hallo,

wenn ich aus einem DOIF (Perl-Modus, DeviceName: Test) in einem Block folgendes aufrufe:
::FW_directNotify("#FHEMWEB:WEB","FW_okDialog('Meine Nachricht')","");
erscheint der modale FW_okDialog nur Sekundenbruchteile und danach wieder die DeviceOverview Seite.
In der DevTools Console sieht man:

19:21:13.117 Rcvd:
fhemweb.js:613 19:21:16.177 Rcvd: ["#FHEMWEB:WEB","FW_okDialog('Meine Nachricht')",""]
Navigated to http://192.168.178.11:8083/fhem?detail=Test&fw_id=
fhemweb.js:613 19:21:16.465 FW_queryValue:{ReadingsVal("Test","action","")}
fhemweb.js:613 19:21:16.466 FW_queryValue:{AttrVal("Test","room","")}
fhemweb.js:613 19:21:16.473 f18.js resize W:853 S:1920
fhemweb.js:613 19:21:16.475 f18.js resize W:853 S:1920
contentScript.js:2 i18next: languageChanged de-DE
contentScript.js:2 i18next: initialized {debug: true, initImmediate: true, ns: Array(1), defaultNS: Array(1), fallbackLng: Array(1), ...}
content-script.js-a8PnzBQ-.js:1 [Smart Unit Converter] Content script loaded
content-script.js-a8PnzBQ-.js:1 [Smart Unit Converter] Smart Unit Converter initialized with state: false
content-script.js-a8PnzBQ-.js:1 [Smart Unit Converter] State changed: false
fhemweb.js:613 19:21:16.565 Inform-channel opened (websocket) with filter Test
fhemweb.js:613 19:21:16.621 Rcvd:

D.h. sofort nach dem Ausführen von FW_okDialog kommt:
Navigated to http://192.168.178.11:8083/fhem?detail=Test&fw_id=
und damit verschwindet der modale Dialog.
Frage: wer löst das Navigated to... aus? fhemweb.js? Und warum wird das ausgelöst?
Kann man das Verhalten eventuell im FHEMWEB Device über ein Attribut ändern?
Das Verhalten ist identisch bei Browsern unter Windows 11 oder Ubuntu.

Andere modale Dialoge von fhem funktionieren ohne Probleme. fhem selbst (aktuelle Version) läuft auf einem RasPi unter Debian Trixie.

Viele Grüße

rudolfkoenig

Ich kann das Problem mit einem einfachen fhem.cfg (dummy Test) nicht nachstellen.

phys1

Hallo,

ich habe das Verhalten etwas genauer untersucht:
Nach einem "set <device> <reading>" scheint fhemweb.js mittels FW_queryValue:{ReadingsVal(<device>,<reading>,"")} dessen Wert anzufordern, sofern <reading> noch NICHT im DeviceOverview gelistet ist. Daraufhin wird die Seite neu geladen, was wiederum eine modale TextBox sofort beendet.
Ist <reading> bereits im Device vorhanden, passiert das nicht und die TextBox bleibt sichtbar.

Bei meinem DOIF führe ich den benannten Block, der FW_directNotify / FW_okDialog aufruft, mit "set <DOIF-device> <Blockname>" aus.
fhemweb.js fordert sodann FW_queryValue:{ReadingsVal(<DOIF-device>,<Blockname>,"")} an, da das DOIF kein Reading namens <Blockname> hat. Es wird, wie oben beschrieben, die TextBox sofort beendet. Es funktioniert aber, wenn der Block keinen vom Nutzer spezifizierten Namen hat, d.h. z.B. block_01. Ein solches Reading legt das DOIF automatisch an und die modale TextBox wird angezeigt. Wenn man den Mechanismus mal verstanden hat, lässt sich also leicht ein Workaround finden.

Viele Grüße