Hallo zusammen,
sitze hier an einem DOIF, was nicht so richtig will. Bin jedoch mit meinem Latein am Ende.
Hier das DOIF:
(([05:15|Mo Di Mi Do Fr] and [Feiertage:c-today] eq "0" and [Termine:t_001_summary] ne "Urlaub") or [06:00|Sa So] or ([06:00] and [Feiertage:c-today] eq "1") or ([06:00] and [Termine:t_001_summary] eq "Urlaub") and ([EG_fl_KM_Haustuer] eq "locked (uncertain)" or [EG_fl_KM_Haustuer] eq "locked") and [EG_fl_FK_Haustuer] eq "closed" and [Bewohner] ne "absent") (set EG_fl_KM_Haustuer unlock) DOELSEIF (([22:00|Mo Di Mi Do] and [Feiertage:c-today] eq "0" and [Termine:t_001_summary] ne "Urlaub" and $md ne "12-31") or [00:00:05|Sa So] or ([00:00:05] and [Feiertage:c-today] eq "1") or ([00:00:05] and [Termine:t_001_summary] eq "Urlaub") and ([EG_fl_KM_Haustuer] eq "unlocked (uncertain)" or [EG_fl_KM_Haustuer] eq "unlocked") and [EG_fl_FK_Haustuer] eq "geschlossen" and [Bewohner] ne "absent" and $md ne "01-01") (set EG_fl_KM_Haustuer lock)
Soweit tut alles wie gewünscht, jedoch wird die Tür auch abgeschlossen, wenn sie geöffnet ist. Habe es auch schon mit "closed" anstelle "geschlossen" versucht, jedoch auch kein Erfolg.
Hat vielleicht jemand den Durchblick und findet den Fehler oder hat eine Idee, wie ich das vlt. besser umsetzen könnte?
Hi,
ich würde zunächst alle Abfragen die nur abgefragt werden sollen und nicht als trigger wirken sollen mit einem ? versehen [?Gerät:Reading] damit die Events von diesen Geräten nicht triggern.
Dann verstehe ich nicht wie bemerkt wird ob die Tür offen oder zu ist? Nur an der Schloß Stellung?
Gruß Otto
Ich vermute, es liegt an der Klammersetzung.
Mit ein bisschen Formattierung kann man besser sehen:
(
([05:15|Mo Di Mi Do Fr]
and [Feiertage:c-today] eq "0"
and [Termine:t_001_summary] ne "Urlaub")
or [06:00|Sa So]
or ([06:00]
and [Feiertage:c-today] eq "1")
or ([06:00]
and [Termine:t_001_summary] eq "Urlaub")
and ([EG_fl_KM_Haustuer] eq "locked (uncertain)" or [EG_fl_KM_Haustuer] eq "locked")
and [EG_fl_FK_Haustuer] eq "closed"
and [Bewohner] ne "absent")
(set EG_fl_KM_Haustuer unlock)
DOELSEIF (
([22:00|Mo Di Mi Do]
and [Feiertage:c-today] eq "0"
and [Termine:t_001_summary] ne "Urlaub"
and $md ne "12-31"
)
or [00:00:05|Sa So]
or ([00:00:05]
and [Feiertage:c-today] eq "1")
or ([00:00:05]
and [Termine:t_001_summary] eq "Urlaub")
and (
[EG_fl_KM_Haustuer] eq "unlocked (uncertain)"
or [EG_fl_KM_Haustuer] eq "unlocked")
and [EG_fl_FK_Haustuer] eq "geschlossen"
and [Bewohner] ne "absent"
and $md ne "01-01")
(set EG_fl_KM_Haustuer lock)
Ich verstehe z.B. die Logik der Klammersetzung nicht, wenn du ein
or (das und das) und das und das
machst
Hallo zusammen,
vielen Dank für euren Einsatz.
@amenomade: Danke für die Formatierung, mit der machen wir weiter, ist übersichtlicher.
@Otto: Mit den Fragezeichen würde das dann so aussehen, Trigger ist eigendlich immer nur die Uhrzeit.
(
([05:15|Mo Di Mi Do Fr]
and [?Feiertage:c-today] eq "0"
and [?Termine:t_001_summary] ne "Urlaub")
or [06:00|Sa So]
or ([06:00]
and [?Feiertage:c-today] eq "1")
or ([06:00]
and [?Termine:t_001_summary] eq "Urlaub")
and ([?EG_fl_KM_Haustuer] eq "locked (uncertain)" or [?EG_fl_KM_Haustuer] eq "locked")
and [?EG_fl_FK_Haustuer] eq "closed"
and [?Bewohner] ne "absent")
(set EG_fl_KM_Haustuer unlock)
DOELSEIF (
([22:00|Mo Di Mi Do]
and [?Feiertage:c-today] eq "0"
and [?Termine:t_001_summary] ne "Urlaub"
and $md ne "12-31"
)
or [00:00:05|Sa So]
or ([00:00:05]
and [?Feiertage:c-today] eq "1")
or ([00:00:05]
and [?Termine:t_001_summary] eq "Urlaub")
and (
[?EG_fl_KM_Haustuer] eq "unlocked (uncertain)"
or [?EG_fl_KM_Haustuer] eq "unlocked")
and [?EG_fl_FK_Haustuer] eq "geschlossen"
and [?Bewohner] ne "absent"
and $md ne "01-01")
(set EG_fl_KM_Haustuer lock)
Über einen Fensterkontakt ([EG_fl_FK_Haustuer]) wird die Tür als offen oder geschlossen gesetzt.
Kurze Erklärung:
Es soll um 05:15 Uhr die Tür aufgeschlossen werden, wenn
Mo-Fr ist ([05:15|Mo Di Mi Do Fr])
und der Feiertagkalender keinen Feiertag erkennt ([Feiertage:c-today] eq "0")
und der Terminkalender keinen Urlaub erkennt ([Termine:t_001_summary] ne "Urlaub")
und das Keymatic-Türschloss abgeschlossen ist ([EG_fl_KM_Haustuer] eq "locked (uncertain)" or [EG_fl_KM_Haustuer] eq "locked")
und der Fensterkontakt der Tür geschlossen ist ([EG_fl_FK_Haustuer] eq "closed")
und die Bewohner nicht abwesend sind ([Bewohner] ne "absent")
Dann soll um 06:00 Uhr die Tür aufgeschlossen werden, wenn
am Wochenende ([06:00|Sa So])
oder am Feiertag ([Feiertage:c-today] eq "1")
oder im Urlaub ([Termine:t_001_summary] eq "Urlaub")
und das Keymatic-Türschloss abgeschlossen ist ([EG_fl_KM_Haustuer] eq "locked (uncertain)" or [EG_fl_KM_Haustuer] eq "locked")
und der Fensterkontakt der Tür geschlossen ist ([EG_fl_FK_Haustuer] eq "closed")
und die Bewohner nicht abwesend sind ([Bewohner] ne "absent")
Dann soll um 22:00 Uhr die Tür abgeschlossen werden, wenn
Mo-Do ist ([22:00|Mo Di Mi Do]
und der Feiertagkalender keinen Feiertag erkennt ([Feiertage:c-today] eq "0")
und der Terminkalender keinen Urlaub erkennt ([Termine:t_001_summary] ne "Urlaub")
und nicht Silvesterabend ($md ne "12-31")
und das Keymatic-Türschloss aufgeschlossen ist ([EG_fl_KM_Haustuer] eq "unlocked (uncertain)" or [EG_fl_KM_Haustuer] eq "unlocked")
und der Fensterkontakt der Tür geschlossen ist ([EG_fl_FK_Haustuer] eq "closed")
und die Bewohner nicht abwesend sind ([Bewohner] ne "absent")
Dann soll um 00:00 Uhr die Tür abgeschlossen werden, wenn
Sa-So [00:00:05|Sa So]
oder am Feiertag ([Feiertage:c-today] eq "1")
oder im Urlaub ([Termine:t_001_summary] eq "Urlaub")
und nicht Silvesterabend ($md ne "12-31")
und das Keymatic-Türschloss aufgeschlossen ist ([EG_fl_KM_Haustuer] eq "unlocked (uncertain)" or [EG_fl_KM_Haustuer] eq "unlocked")
und der Fensterkontakt der Tür geschlossen ist ([EG_fl_FK_Haustuer] eq "closed")
und die Bewohner nicht abwesend sind ([Bewohner] ne "absent")
Hi Stevie,
Zitatjedoch wird die Tür auch abgeschlossen, wenn sie geöffnet ist
ich habe mal die Klammern neu gesetzt, so wie ich Deinen Erklärtext verstanden habe. Im Prinzip nur die verschiedenen "or" am Anfang zusammengefasst. So wie sie in Deiner Def stehen würde es bedeuten, dass nur der Teil hinter dem letzten "or" mit den folgenden "and"s betrachtet wird, die Bedingungen davor schon alleine wirken. Versuch das mal. Aber vorher noch genau schauen, was der Fensterkontakt liefert (closed/geschlossen??), damit die Bedingung richtig ist.
(
(
([05:15|Mo Di Mi Do Fr] and [?Feiertage:c-today] eq "0" and [?Termine:t_001_summary] ne "Urlaub")
or [06:00|Sa So]
or ([06:00] and ([?Feiertage:c-today] eq "1" or [?Termine:t_001_summary] eq "Urlaub"))
)
and ([?EG_fl_KM_Haustuer] eq "locked (uncertain)" or [?EG_fl_KM_Haustuer] eq "locked")
and [?EG_fl_FK_Haustuer] eq "closed"
and [?Bewohner] ne "absent")
(set EG_fl_KM_Haustuer unlock)
DOELSEIF (
(
([22:00|Mo Di Mi Do] and [?Feiertage:c-today] eq "0" and [?Termine:t_001_summary] ne "Urlaub" and $md ne "12-31")
or [00:00:05|Sa So]
or ([00:00:05] and ([?Feiertage:c-today] eq "1" or [?Termine:t_001_summary] eq "Urlaub"))
)
and ([?EG_fl_KM_Haustuer] eq "unlocked (uncertain)" or [?EG_fl_KM_Haustuer] eq "unlocked")
and [?EG_fl_FK_Haustuer] eq "geschlossen"
and [?Bewohner] ne "absent"
and $md ne "01-01")
(set EG_fl_KM_Haustuer lock)
Du könntest auch noch
([?EG_fl_KM_Haustuer] eq "unlocked (uncertain)" or [?EG_fl_KM_Haustuer] eq "unlocked")
zu
[?EG_fl_KM_Haustuer] =~ "unlocked")
vereinfachen (weiter oben mit locked genauso)
Viel Erfolg!
Hallo Sany,
vielen Dank für deine Hilfe.
Ich habe mich jetzt schon lange nicht mehr mit Fhem beschäftigt, da alles soweit funktioniert und bin richtig erschrocken, wie lange das jetzt schon her ist :o
Ich werde das gleich mal testen und dann berichten.
Wünsche dir noch einen schönen Abend!
Viele Grüße
Stevie