Hauptmenü

DOIF als Taster

Begonnen von andies, 25 Dezember 2025, 23:41:54

Vorheriges Thema - Nächstes Thema

andies

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. 
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

TomLee

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

andies

Inzwischen habe ich andere Lösungen auch gefunden, es gibt ein eigenes Modul und andere topics. Manchmal sieht man den Wald usw.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

xenos1984

Hinter DOELSEIF gehört keine Bedingung. Und da ein leeres DOELSEIF implizit ist, kannst du es in diesem Fall auch ganz weglassen.

Per

Du verwechselst gerade DOELSE und DOELSEIF!

andies

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?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Per

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.