GELÖST: DOIF schaltet immer ein und aus

Begonnen von Hellspawn, 08 September 2017, 22:38:39

Vorheriges Thema - Nächstes Thema

Hellspawn

Hallo,
eigentlich wollte ich mir für den DASH Button einen kleinen toggle schreiben.
aber irgendwie habe ich Tomaten auf den Augen.
Mein DOIF springt immer zwischen "an" und "aus" hin und her... klingt zwar lustig... ist aber nicht so gewollt...
kann mir mal jemand einen schubs in die richtige Richtung geben ?
([DashButton:fc-a6-67-f2-ca-0e] eq "short" and [SW_Bettheizung] eq "on")
(set SW_Bettheizung off)
DOELSE
([DashButton:fc-a6-67-f2-ca-0e] eq "short" and [SW_Bettheizung] eq "off")
(set SW_Bettheizung on)


vielen Dank
Carsten

Frank_Huber

Der short hält wohl länger an. Und  du triggerst auf den Zustand, nicht auf das event.
Bru dein doif auf den event um (tip : event Monitor) und es sollte klappen.

Gesendet von meinem S3_32 mit Tapatalk


CoolTux

Und Bettheizung würde ich nur Abfragen und nicht drauf reagieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Hellspawn

Ok, ich muss gerade gedanklich noch mal in die Schule, glaube ich...

folgendes Notify funktioniert...
DashButton:fc-a6-67-f2-ca-0e..short IF ([SW_Bettheizung] eq "on") (set SW_Bettheizung off) ELSE (set SW_Bettheizung on)

Jetzt wüsste ich wirklich gerne, wo der Unterschied zu dem DOIF ist, was halt nicht funktioniert :
([DashButton:fc-a6-67-f2-ca-0e.short] and [SW_Bettheizung] eq "on")
(set SW_Bettheizung off)
DOELSE
(set SW_Bettheizung on)

er springt immer in cmd_2...

was schmeisse ich diesmal durcheinander ?
klar, das notify geht... aber ich will ja lernen  ;)

Gruß
Carsten

amenomade

#4
Im notify hast Du ".short", und im DOIF "..short". Ist aber vielleicht normal, ich kenne deine Events nicht.
Die Syntax, um auf einem Event zu reagieren im DOIF ist eigentlich
[DashButton:"fc-a6-67-f2-ca-0e.short"] sonst nimmt er das als Reading

Letztendlich um auf SW_Bettheizung NICHT zu triggern (um ähnlich sein wie dein Notify), solltest Du so schreiben:
and [?SW_Bettheizung] eq "on"

Ahja... und das Konstrukt mit DOELSE führt zu Zustandwechseln sobald das Event vorbei ist. Es wäre besser mit
DOELSEIF ([DashButton:fc-a6-67-f2-ca-0e.short] and [?SW_Bettheizung] eq "off")
oder einfach auch im DOIF ein IF nutzen:

([DashButton:"fc-a6-67-f2-ca-0e.short"])
   (IF ([SW_Bettheizung] eq "on") (set SW_Bettheizung off) ELSE (set SW_Bettheizung on))

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Hellspawn

#5
Hallo,
so endlich Zeit gefunden zum testen...
vielen lieben Dank... nachdem ich den Bock mit dem event raus hatte, klappert es.

([DashButton:"18-74-2e-ba-27-1c..short"])
   (IF ([WZ_LichtEssecke] eq "on") (set WZ_LichtEssecke off) ELSE (set WZ_LichtEssecke on))


attr di_LichtEssecke do always
brachte die Lösung...

Danke noch mal.

Carsten