[gelöst] Modulentwicklung - Message Dialog anzeigen

Begonnen von bismosa, 05 Mai 2019, 19:17:29

Vorheriges Thema - Nächstes Thema

bismosa

Hallo!

Ich bin gerade dabei das Modul "Max_Temp" (Ein kleiner Helfer um bei den Max-Thermostaten die Temperatur einzustellen) umzuprogrammieren.
Siehe hier: https://forum.fhem.de/index.php?topic=77678.0
Ich hatte das damals schon ein wenig angepasst...aber nie eine Doku etc. fertiggestellt. Der Code musste auch dringend mal aufgeräumt werden  ;)

Bei dem jetzigen Modul wird über die Attribute WebCmd gearbeitet. D.h. darüber werden die SET-Commands ausgeführt. Ich mache das etwas anders über das "summaryFn" wird mein HTML-Code erzeugt und ein Set-Command ausgeführt.

Mein Problem ist nun, dass ich gerne einen Dialog (mit einfachem OK Button) nach dem Senden von Einstellungen anzeigen möchte. Dann weiß man auf einem Mobilgerät, das die Einstellung auch gesetzt hat.
Beim bisherigen wird der Return-Wert auch als Nachricht in einem Dialog angezeigt.
Wenn ich ein SET-Befehl ausführe und einen Return-Wert habe, wird mir das nur oben links im Fenster (schwarz hinterlegt) angezeigt.
Kann ich dieses Verhalten irgendwie steuern?

Ich hoffe ihr versteht was ich meine...vermutlich fehlt mir nur der richtige Begriff...

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

krikan

Hallo!

Meinst Du so etwas: https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_AsyncOutput ?

Ansonsten stelle die Frage eventuell besser im Developer-Unterforum oder im Frontend-Forenbereich. Dort lesen mehr Leute mit, die sich mit Entwicklung auskennen als im Anfängerbereich.

Gruß, Christian

bismosa

#2
Hallo!

Du hast recht. Die Frage gehört eher zu Frontends. Im Developer-Bereich habe ich keine Schreibberechtigung  :)

Ich glaube nicht, das AsyncOutput etwas damit zu tun hat. Wenn ich das richtig verstanden habe...

Ich habe nochmal versucht herauszufinden, warum es funktioniert, wenn ich es über ein webCmd mache. Hier wird wohl der Set-Befehl ausgeführt und wenn es eine Rückgabe gibt dies als Fehlernachricht ausgegeben. Ich möchte dies jedoch nicht als Fehlernachricht sondern als Bestätigungsnachricht.
Ich glaube hier ist das was ich suche:
https://wiki.fhem.de/wiki/DevelopmentFHEMWEB-API#FW_okDialog
Und so muss es dann umgesetzt werden:
FW_cmd(FW_root+'?cmd={FW_makeImage("fts_shutter_10")}&XHR=1', function(data){FW_okDialog(data)});


Aber irgendwie schaffe ich es nicht richtig. Ein Tipp wäre super. Ich habe bisher:
$html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmd')\">$img</a>";
und müsste nun noch die function mit einbauen. Aber z.B. so:
html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmd',function(data){FW_okDialog(data)})\">$img</a>";
bekomme ich nur die Fehlermeldung:
fhem?detail=test&fw_id=&fw_id=1010 line 246:
Uncaught SyntaxError: Unexpected token )

Bestimmt komme ich hier immer mit den Hoch-Kommas durcheinander. Der richtige Weg ist mir aber noch verborgen geblieben  ::)

Gruß
Bismosa

[edit]
Ich konnte es nun wenigstens soweit eingrenzen, das alles was ich in geschweiften Klammern habe, später nicht mehr in der Weboberfläche vorhanden ist. Also aus
$html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmd',function(data){FW_okDialog(data)})\">$img</a>";
Wird nachher:
onclick="FW_cmd('/fhem?XHR=1&amp;cmd.test=set test start',function(data))">
Der Teil in den geschweiften Klammern fehlt. Egal wie ich es auch versuche...ich bekomme die da auch nicht hin ?
[/edit]
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

bismosa

Hallo!

Bitte vergesst mein Problem mit den geschweiften Klammern! Da habe ich mir selbst ein Ei gelegt  ::)
Ich werte den HTML-String selbst aus...und habe da eingebaut, das alles was in geschweiften Klammern ist von FHEM ausgewertet wird. Ich habe übersehen, das dies nachdem auch dieser Code hinzugefügt wurde gemacht wird. Somit habe ich alles was innerhalb geschweifter Klammern ist selbst wieder entfernt...

Also die richtige Lösung lautet:
FW_okDialog:
$html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmd',function(data){FW_okDialog(data)})\">$img</a>";

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...