Warum hat das DOIF heute um 09:00 ausgelöst / Wochentagssteuerung

Begonnen von Jogi, 02 Februar 2019, 12:19:00

Vorheriges Thema - Nächstes Thema

Jogi

Hallo,
folgendes DOIF hat heute um 09:00 ausgelöst und ist auf cmd3 gegangen. Das verstehe ich nicht.
(([1_anwesend] eq "on" and [20:00-09:00|8]) or ([2_anwesend] eq "on" and [20:00-09:00|8]) or [22:00-09:00|8])
(set Lampen_Bett on)
DOELSEIF
(([1_anwesend] eq "on" and [20:00-10:30|7]) or ([2_anwesend] eq "on" and [20:00-10:30|7]) or [22:00-10:00|7])
(set Lampen_Bett on)
DOELSE
(set Lampen_Bett off)

Eigentlich müsste
or [22:00-10:00|7])
in cmd2 doch dafür sorgen, dass am Wochenende (und Samstag gehört doch zum Wochenende) bis 10:00 Uhr cmd2 aktiv bleibt.
Wo liegt mein Denkfehler?

Gruß,
Jogi

sash.sc

Ich würde im cmd2 die Zeitsteuerung mal zusammen fassen.

Wenn du das so lassen willst, dann mal ein paar klammern für die Verknüpfungen mehr setzen.

Ich habe damals in der Ausbildung gelernt :

Ein oder vor einem und wirds ohne klammern ungesund.

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Jogi

Zitat von: sash.sc am 02 Februar 2019, 13:09:51


Ein oder vor einem und wirds ohne klammern ungesund.


Bei mir sind es aber quasi 3 "oder" OHNE "und", denn die "und" sind ja in einer separaten Klammer und dürften das nicht beeinflussen.
Oder stehe ich jetzt total auf dem Schlauch?

Damian

Möglicherweise willst du so etwas:

([1_anwesend] eq "on" and ([20:00-09:00|8] or [20:00-10:30|7]) or [2_anwesend] eq "on" and ([20:00-09:00|8] or [20:00-10:30|7] or [22:00-09:00|8] or [22:00-10:00|7]))
(set Lampen_Bett on)
DOELSE
(set Lampen_Bett off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Jogi

Zitat von: Damian am 02 Februar 2019, 13:31:02
Möglicherweise willst du so etwas:

([1_anwesend] eq "on" and ([20:00-09:00|8] or [20:00-10:30|7]) or [2_anwesend] eq "on" and ([20:00-09:00|8] or [20:00-10:30|7] or [22:00-09:00|8] or [22:00-10:00|7]))
(set Lampen_Bett on)
DOELSE
(set Lampen_Bett off)

Ok, vielen Dank, das werde ich mal ausprobieren. Aber ich verstehe meinen Fehler immer noch nicht.
Warum funktioniert mein DOIF nicht?
Ich möchte ja gerne was lernen.

Gruß,
Jogi

Damian

Zitat von: Jogi am 02 Februar 2019, 13:45:59
Ok, vielen Dank, das werde ich mal ausprobieren. Aber ich verstehe meinen Fehler immer noch nicht.
Warum funktioniert mein DOIF nicht?
Ich möchte ja gerne was lernen.

Gruß,
Jogi

Um 09:00 Uhr triggerte das Intervall und die erste Bedingung war nicht wahr. Wenn ein Intervall nicht triggern soll, dann musst du ? davor setzen.





Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Jogi

Zitat von: Damian am 02 Februar 2019, 13:58:29
Um 09:00 Uhr triggerte das Intervall und die erste Bedingung war nicht wahr. Wenn ein Intervall nicht triggern soll, dann musst du ? davor setzen.
Entschuldige, wenn ich noch mal nachfrage, aber das verstehe ich nicht.
in der ersten Bedingung steht:
(([1_anwesend] eq "on" and [20:00-09:00|8]) or ([2_anwesend] eq "on" and [20:00-09:00|8]) or [22:00-09:00|8])
Jede Zeit ist mit
[...|8]
verknüpft, was, wenn ich es richtig verstehe bedeutet, "nur an Werktagen". Wieso löst das dann am Samstag aus?




Damian

Zitat von: Jogi am 02 Februar 2019, 17:04:01
Entschuldige, wenn ich noch mal nachfrage, aber das verstehe ich nicht.
in der ersten Bedingung steht:
(([1_anwesend] eq "on" and [20:00-09:00|8]) or ([2_anwesend] eq "on" and [20:00-09:00|8]) or [22:00-09:00|8])
Jede Zeit ist mit
[...|8]
verknüpft, was, wenn ich es richtig verstehe bedeutet, "nur an Werktagen". Wieso löst das dann am Samstag aus?

Stimmt, es sind nur Werktage angegeben. Ich habe es bei mir gerade nachgestellt - es wird bei mir nicht getriggert.

Am besten list vom betroffenen Zustand vom DOIF posten, dann kann man mehr dazu sagen.

Edit: Ich sehe gerade, dass deine Angaben über Mitternacht gehen. Das wird nicht gut funktionieren, denn ein Intervall welches am Freitag einschaltet, kann normalerweise nicht am Samstag ausschalten. Die Wochentagangabe bezieht sich auf den Anfang und das Ende.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF