FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: andies am 25 Dezember 2025, 23:41:54

Titel: DOIF als Taster
Beitrag von: andies am 25 Dezember 2025, 23:41:54
Ich möchte gern einen Taster realisieren, mit DOIF, und habe versucht ein Schalterbeispiel umzuschreiben. Das geht aber nicht,  weiß jemand weshalb:
defmod WarmwasserAn DOIF (["$SELF:mybutton: on"])  (set TelegramBot _msg 🛁,{},set $SELF mybutton off) DOELSEIF (["$SELF:mybutton: off"]) ()
attr WarmwasserAn cmdState on|off
attr WarmwasserAn cmdpause 900:0
attr WarmwasserAn devStateIcon on:ios-on-green:off off:ios-off:on offline:ios_setoff_fill:
attr WarmwasserAn do always
attr WarmwasserAn readingList mybutton
attr WarmwasserAn setList mybutton:on,off
attr WarmwasserAn webCmd mybutton
Der Telegrambefehl wird ausgeführt, nicht aber das zurückschalten. Eigentlich brauche ich so etwas wie einen Taster, den mal einmal klickt und dann wird der Telegrambefehl verschickt (und ein Perl-Befehl ausgeführt) und ich möchte nicht, dass die Kinder das ständig machen, sondern 5 Minuten "gesperrt" werden; das ist das eigentliche Ziel. Irgendwie wundert mich, dass das nicht so einfach ist. 
Titel: Aw: DOIF als Taster
Beitrag von: TomLee am 26 Dezember 2025, 09:40:57
OT

Zitat von: andies am 25 Dezember 2025, 23:41:54Irgendwie wundert mich, dass das nicht so einfach ist. 


Moin,

mit einem notify ist es ganz einfach:

defmod not_test notify not_test:myButton:.on {fhem("set TelegramBot _msg 🛁");;...}
attr not_test disabledAfterTrigger 300
attr not_test setList myButton:on

Gruß Thomas
Titel: Aw: DOIF als Taster
Beitrag von: andies am 26 Dezember 2025, 10:07:16
Inzwischen habe ich andere Lösungen auch gefunden, es gibt ein eigenes Modul und andere topics (https://forum.fhem.de/index.php?topic=100082.0). Manchmal sieht man den Wald usw.
Titel: Aw: DOIF als Taster
Beitrag von: xenos1984 am 26 Dezember 2025, 10:41:08
Hinter DOELSEIF gehört keine Bedingung. Und da ein leeres DOELSEIF implizit ist, kannst du es in diesem Fall auch ganz weglassen.
Titel: Aw: DOIF als Taster
Beitrag von: Per am 26 Dezember 2025, 10:53:51
Du verwechselst gerade DOELSE und DOELSEIF!
Titel: Aw: DOIF als Taster
Beitrag von: andies am 26 Dezember 2025, 11:05:02
Wenn wir das hier gerade diskutieren, habe ich eine sehr unspezifische Frage. Wenn ich mit DOIF auseinandersetze, ist mein erster Impuls: "Sehr gutes Tool" (betateilchen bitte weghören).  Aber dann gibt es etwas, das das Verständnis der Logik für mich extrem schwer macht - und ich kann einfach nicht sagen, was das ist. Anscheinend unterstelle ich eine bestimmte Logik bei DOIF, die aber falsch ist und die mich das Tool missverstehen lässt. Ich kann naturgemäß nicht sagen, was meine falsche Logik ist, sonst hätte ich das im Wiki oder anderswo geschrieben. Mir scheint auch, dass das einigen anderen (vor allem Nicht-IT-Leuten) so geht und ich würde mir wünschen, dass ich das herausbekomme. Selbst nach Jahren der Nutzung ist das noch so. Weiß jemand, was das Verständnis so schwer macht?
Titel: Aw: DOIF als Taster
Beitrag von: Per am 26 Dezember 2025, 14:16:50
Adhoc würde mir nur einfallen, dass DOIF im Gegensatz zu if (standardmäßig!) nur die Fälle prüft, in denen auch ein Event auftritt.
Titel: Aw: DOIF als Taster
Beitrag von: xenos1984 am 26 Dezember 2025, 22:02:40
Zitat von: Per am 26 Dezember 2025, 10:53:51Du verwechselst gerade DOELSE und DOELSEIF!

Ja, da hast du Recht, da habe ich zu schnell geschrieben. Was mich eigentlich gewundert hatte war stattdessen, ob der zweite, leere Zweig mit dem DOELSEIF hier überhaupt nötig ist. Es ist ja do always gesetzt, von daher sollte bei jedem Betätigen des Tasters der erste Zweig ausgelöst werden. Und das auch ohne einen zweiten Zweig zu haben, in den das DOIF wechseln kann, wenn der Taster aus ist.
Titel: Aw: DOIF als Taster
Beitrag von: TomLee am 02 Januar 2026, 00:13:51
Zitat von: andies am 26 Dezember 2025, 11:05:02Wenn wir das hier gerade diskutieren, habe ich eine sehr unspezifische Frage. Wenn ich mit DOIF auseinandersetze, ist mein erster Impuls: "Sehr gutes Tool" (betateilchen bitte weghören).  Aber dann gibt es etwas, das das Verständnis der Logik für mich extrem schwer macht - und ich kann einfach nicht sagen, was das ist. Anscheinend unterstelle ich eine bestimmte Logik bei DOIF, die aber falsch ist und die mich das Tool missverstehen lässt. Ich kann naturgemäß nicht sagen, was meine falsche Logik ist, sonst hätte ich das im Wiki oder anderswo geschrieben. Mir scheint auch, dass das einigen anderen (vor allem Nicht-IT-Leuten) so geht und ich würde mir wünschen, dass ich das herausbekomme. Selbst nach Jahren der Nutzung ist das noch so. Weiß jemand, was das Verständnis so schwer macht?

Zuerst muss man die FHEM-Syntax verstehen, dann ein bisschen Perl-Denken mitbringen – erst danach kann man die von Damian entworfene DOIF-Syntax richtig einordnen und ist auch bereit, sie zu lernen.
Wenn man sich nicht tief genug mit den beiden zuerst genannten Syntaxen auseinandersetzt, führt das zu Verständnisschwierigkeiten.

Ich glaube, darin liegt die Ursache.

Gruß Thomas