Hallo zusammen,
ich habe gerade ein kleines Logik Problem (steuerung Rollos zum Sonnenschutz) bei dem ich vermutlich einfach nur blind davor stehen und die Lösung vermutlich soooo einfach ist. Das ist mein DOIF
(([Dummy_Sonnenschutz_Balkon_hoch] eq "on") or ([Dummy_RFID] eq "455881555865")
(set Sprachausgabe tts :klingel.mp3:)
(set Rollo_SZ off)
(set Rollo_AZ off)
DOELSEIF
(([Dummy_Sonnenschutz_Balkon_runter] eq "on") or ([Dummy_RFID] eq "593638227802")
(set Sprachausgabe tts :klingel.mp3:)
(set Rollo_SZ on)
(set Rollo_AZ on)
(set Rollo_SZ off-for-timer 6)
(set Rollo_AZ off-for-timer 6)
DOELSEIF
......
jetzt zu meinem Problem:
- Das DOIF läuft seid 3 Jahren nur mit den Dummy Devices die immer auf on stehen und das DOIF immer auf ein neues set on triggert
- Baue ich das DOIF "nur" mit dem RFID Tag funktioniert es problemlos
- aber wenn ich das DOIF so wie oben bau, dann triggert er z.B. cmd_2 (über den RFID-Tag) und springt dann direkt wieder auf cmd_1 folglich bleiben die Rollos oben. Ich finde aber keinen Auslösegrund für cmd_1. Das Reading von dem Dummy_RFID stimmt nicht und das Reading von Dummy_Sonnenschutz_Balkon_hoch stimmt zwar, ist aber ja alt, d.h nicht neu angestoßen wurden.
Vielleicht sieht ja jemand spontan meinen Logikknoten im Kopf.
Gruß Carsten
Hi Carsten,
Bitte poste ein List im vermeintlichen Fehlerfall. Das sagt uns dann schon wer cmd_1 ausgelöst hat. :-)
Hi Carsten:
da sind die Klammern doch falsch! In beiden Abfragen!
(([Dummy_Sonnenschutz_Balkon_hoch] eq "on") or ([Dummy_RFID] eq "455881555865")
so
([Dummy_Sonnenschutz_Balkon_hoch] eq "on" or [Dummy_RFID] eq "455881555865")
Klammern zählen hilft und manchmal sind weniger Klammern übersichtlicher und besser. ;)
Gruß Otto
hi Frank,
auf list hätte ich auch selber kommen können, das cmd_1 wird duch den Dummy getriggert, das Reading "on" ist aber aber älter als der erneute triggger auf cmd_1
Hi Otto,
die Klammern hatte ich am Anfang so wie du sie korrigiert hast, geändert habe ich es dann im laufe der Fehlersuche. cmd_1 funktioniert bei beiden Varianten über den Dummy und mittels des RFID Tags
Gruß Carsten
Jede Änderung am dummy lässt das doif laufen.
Du kannst auf eventtriggerung umbauen oder mal versuchen das Attribut checkreadungevents zu setzen.
Oder im dummy mit den Event-on Attributen...
Viele Wege.... 😉
und nun? Wissen wir nicht mehr was das Problem ist?
Zitatdas cmd_1 wird duch den Dummy getriggert, das Reading "on" ist aber aber älter als der erneute triggger auf cmd_1
Der Trigger von DOIF wird durch eine Änderung im Device [Dummy_RFID] ausgelöst. Das Alter von anderen Readings spielt keine Rolle, das wird immer trotzdem mit abgefragt.
Da Du
oder Verknüpft hast: Wenn [Dummy_RFID] getriggert wird, rennt das DOIF los stellt fest Bedingung 1 ist erfüllt -> erledigt.
Du willst vielleicht anstatt ODER -> UND also and statt or ?
Zitat
Da Du oder Verknüpft hast: Wenn [Dummy_RFID] getriggert wird, rennt das DOIF los stellt fest Bedingung 1 ist erfüllt -> erledigt.[/quote]
Ok, das erklärt wieso er direkt wieder auf cmd_1 triggert. War mir so nicht bewusst, aber ist natürlich logisch, sonst müssten sich ja alle Readings gleichzeitig aktualisieren, damit ein DOIF auslösen kann
Eine "und" verknüpfung funktioniert leider nicht, da ich insgesamt 14 RFID-Tags habe und wenn ich den Sonnenschutz mit dem Dummy anstoßen will und als letztes ein anderer RFID Tag ausgelsesen wurde, würde das passende cmd ja nicht auslösen.
Dann werde ich das wohl auf 2 DOIF ändern müssen, einen für die RFID Tags und einen für die Dummys
Danke für Hilfe meinen Knoten im Kopf zu lösen
Frank_Huber hats auch schon vorgeschlagen: Eventtriggerung sollte funktionieren, je nach dem was deine Dummy_Sonnenschutz_Blakon_* sind und ob sie Events auslösen:
https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
also
[Dummy_Sonnenschutz_Balkon_hoch:"on"]
sollte dann nur triggern, wenn das Event kommt und nicht wenn der Zustand so ist.
Zitat
[Dummy_Sonnenschutz_Balkon_hoch:"on"]
perfekt, funktioniert danke