FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wolliballa73 am 28 November 2020, 10:38:25

Titel: (gelöst) DOIF: Problem mit Zeitraum
Beitrag von: wolliballa73 am 28 November 2020, 10:38:25
Hallo zusammen,

ich möchte meine Weihnachtsbeleuchtung über ein DOIF innerhalb eines bestimmten Datumsbereiches zu bestimmten Zeiträumen ein- und ausschalten (durch Aufruf der entsprechenden KNX-Szene):
defmod di_Weihnachten DOIF (
  ([06:00-08:00] or [10:27-10:28] or [16:00-22:30] ) and ($md ge "11-28" or $md le "01-06")
)
(set knx_Szene 20)

DOELSEIF(
  ($md ge "11-28" or $md le "01-06")
)
(set knx_Szene 21)



Zum Testen habe ich den Zeitraum [10:27-10:28] mit eingebaut.
Problem: das Einschalten zu den gewünschten Zeiten (hier: 10:27) funktioniert, aber das Ausschalten (10:28) nicht, state bleibt auf "cmd_1" stehen:
setstate di_Weihnachten cmd_1
setstate di_Weihnachten 2020-11-28 10:27:00 cmd 1
setstate di_Weihnachten 2020-11-28 10:27:00 cmd_event timer_3
setstate di_Weihnachten 2020-11-28 10:27:00 cmd_nr 1
setstate di_Weihnachten 2020-11-28 10:26:24 mode enabled
setstate di_Weihnachten 2020-11-28 10:27:00 state cmd_1
setstate di_Weihnachten 2020-11-28 10:26:24 timer_01_c01 29.11.2020 06:00:00
setstate di_Weihnachten 2020-11-28 10:26:24 timer_02_c01 29.11.2020 08:00:00
setstate di_Weihnachten 2020-11-28 10:28:00 timer_03_c01 29.11.2020 10:27:00
setstate di_Weihnachten 2020-11-28 10:28:00 timer_04_c01 29.11.2020 10:28:00
setstate di_Weihnachten 2020-11-28 10:26:25 timer_05_c01 28.11.2020 16:00:00
setstate di_Weihnachten 2020-11-28 10:26:25 timer_06_c01 28.11.2020 22:30:00


Erst, wenn ich manuell set di_Weihnachten checkall ausführe, springt state auf "cmd_2"

Kann mir jemand verraten, wo mein Fehler liegt?
Titel: Antw:DOIF: Problem mit Zeitraum
Beitrag von: Damian am 28 November 2020, 10:43:23
defmod di_Weihnachten DOIF (([06:00-08:00] or [10:27-10:28] or [16:00-22:30] ) and ($md ge "11-28" or $md le "01-06"))
  (set knx_Szene 20)
DOELSE
  (set knx_Szene 21)
Titel: Antw:DOIF: Problem mit Zeitraum
Beitrag von: wolliballa73 am 28 November 2020, 11:24:55
Hallo Damian,

das ist aber nicht dasselbe:
Da die Szene-Mitglieder zwischenzeitlich auch mal manuell geschaltet werden könnten, ist das Attribut "do always" gesetzt. Ohne DOELSEIF und erneute Einschränkung auf den Datumsbereich wird "set knx_Szene 21" dann auch zu den Start- und Stoppzeiten AUSSERHALB des definierten Datumsbereiches ausgeführt. Und das ist unpraktisch, weil an diesen Steckdosen dann andere Geräte als die Weihnachtsbeleuchtung angeschlossen sind.

Titel: Antw:DOIF: Problem mit Zeitraum
Beitrag von: Damian am 28 November 2020, 11:50:50
Dann solltest du nicht mit Zeitintervallen arbeiten, sondern mit Zeitpunkten:

defmod di_Weihnachten DOIF (
  ([06:00] or [10:27] or [16:00] ) and ($md ge "11-28" or $md le "01-06")
)
(set knx_Szene 20)

DOELSEIF(
  ([08:00] or [10:28] or [22:30] ) $md ge "11-28" or $md le "01-06")
)
(set knx_Szene 21)


evtl. ist dieses Codeschnipsel für dich interessant: https://forum.fhem.de/index.php/topic,116246.0.html
Titel: Antw:DOIF: Problem mit Zeitraum
Beitrag von: wolliballa73 am 28 November 2020, 15:24:45
Hi,
Zitat von: Damian am 28 November 2020, 11:50:50
Dann solltest du nicht mit Zeitintervallen arbeiten, sondern mit Zeitpunkten:

Hätte man auch selber drauf kommen können ;-)
So klappt das - vielen Dank!

Der Code-Schnipsel ist sicherlich interessant, bei meiner KNX-Installation reicht mir aber (vorerst) das Aufrufen einer KNX-Szene.