Hallo,
ist es möglich aus einem DOIF im Perl-Modus heraus eine modale Textbox anzuzeigen? Die Box soll erscheinen, wenn der Nutzer per set-Befehl einen bestimmten Block ausführen lässt. Die dafür vorgesehene Methode FW_directNotify("#FHEMWEB:WEB","FW_okDialog('Mein Text')","") funktioniert jedenfalls nicht, weder im Block selbst (mit vorangestellten ::) noch über ein userReading, das ja auch Perl Code ausführen kann. Das 98_DOIF.pm hat Version 2026-04-27.
In einem dummy Device hingegen geht es, d.h. dort ruft FW_directNotify / FW_okDialog in einem userReading tatsächlich eine modale Textbox auf.
Grüße
Dann zeig mal das Beispiel, was du im DOIF erstellt hast.
Hallo,
Version 1 im Block:
define Test DOIF action {\
::FW_directNotify("#FHEMWEB:WEB","FW_okDialog('Meine Nachricht')","");;\
}
Mit set Test action wird der Block ausgeführt, aber es erscheint keine Textbox (und keine Fehlermeldung).
Version 2 mit userReading:
define Test2 DOIF action {\
set_Reading("TestStr","Mein Trigger",1);;\
}
attr Test2 userReadings show:TestStr.* {\
FW_directNotify("#FHEMWEB:WEB","FW_okDialog('Mein Test')","");;\
return "Hat getriggert";;}
Warum geht das aus dem DOIF nicht?
Viele Grüße
Hier wird das user Reading "show" auf "Hat getriggert" gesetzt, aber es erscheint keine Textbox (und keine Fehlermeldung).
Mit einem dummy klappt es zumindest beim zweiten Mal, wenn man Text bei TestStr eingibt:
define Test3 dummy
attr Test3 readingList TestStr show
attr Test3 setList TestStr
attr Test3 userReadings show:TestStr.* {\
my $msg = ReadingsVal($NAME,"TestStr","?");;\
FW_directNotify("#FHEMWEB:WEB","FW_okDialog('$msg')","");;\
}
Bei mir funktioniert es ohne Probleme.