(gelöst) DOIF: Problem mit Zeitraum

Begonnen von wolliballa73, 28 November 2020, 10:38:25

Vorheriges Thema - Nächstes Thema

wolliballa73

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?
CU,
Matze

Damian

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)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

wolliballa73

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.

CU,
Matze

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

wolliballa73

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.
CU,
Matze