DOIF ab einem Zeitpunkt triggern lassen

Begonnen von Darkmozart, 10 Februar 2018, 17:44:38

Vorheriges Thema - Nächstes Thema

Darkmozart

Tachchen,

ich habe mir (u.a.) ein DOIF gebastelt, welches mir die Rollos in den Kinderzimmern steuert.
Nun möchte ich folgendes erreichen:
An Wochentagen sollen die Rollos aufgehen, wenn es Hell genug ist, jedoch nicht bevor es an der Zeit zum aufstehen (definiert als Dummy) ist.
Am Wochenede prinzipiell das selbe, nur die Zeit zum aufstehen ist später.

Jetzt funktioniert meine Lösung wunderbar, solange die Helligkeit vor der Zeit triggert. Im Winter, wenn es später hell wird triggert mein DOIF nicht mehr, da es zu den besagten Zeitpunkten ja noch zu dunkel ist.
Wie erkläre ich also einem DOIF das es ab einem Zeitpunkt eine zweite Bedingung (die Helligkeit) überprüft und dann triggert, auch wenn der Zeitpunkt selbst bereits verstrichen ist?

Ich habe bisher folgendes:
Internals:
   DEF        ##erster Fall: Aufstehen
(([[Kinder_aufstehen_Wochentag]|8] or [[Aufstehen_Wochenende]|7]) and ([Helligkeit] > [hellRollosAuf]))
(set Rollos Ronja open, set Rollos Julian open)

##zweiter Fall: Rollos zu
DOELSE([[Kinder_zu_Bett_Wochentag]|01234] or ([Helligkeit] < [dunkelRollosZu]))
(set Rollos Ronja dim 85, set Rollos Julian dim 85)

   NAME       di_KinderzimmerSteuerung
   NR         198
   NTFY_ORDER 50-di_KinderzimmerSteuerung
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-02-10 17:29:11   Device          Helligkeit
     2018-02-10 09:00:21   cmd             2.2
     2018-02-10 09:00:21   cmd_event       Helligkeit
     2018-02-10 09:00:21   cmd_nr          2
     2018-02-10 09:00:21   cmd_seqnr       2
     2018-02-10 17:29:11   e_Helligkeit_STATE 7
     2018-01-12 16:44:09   e_hellRollosAuf_STATE 19
     2018-02-10 09:00:21   state           cmd_2
     2018-02-10 17:20:36   timer_01_c01    11.02.2018 06:30:00|8
     2018-02-10 17:20:36   timer_02_c01    11.02.2018 09:00:00|7
   Regex:
   condition:
     0          (DOIF_time_once($hash,0,$wday,"8") or DOIF_time_once($hash,1,$wday,"7")) and (InternalDoIf($hash,'Helligkeit','STATE') > InternalDoIf($hash,'hellRollosAuf','STATE'))
   days:
     0          8
     1          7
   devices:
     0           Helligkeit hellRollosAuf
     all         Helligkeit hellRollosAuf
   do:
     0:
       0          set Rollos Ronja open, set Rollos Julian open
     1:
       0          [[Kinder_zu_Bett_Wochentag]|01234] or ([Helligkeit] < [dunkelRollosZu])
       1          set Rollos Ronja dim 85, set Rollos Julian dim 85
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      7
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   Helligkeit
     timerevent 7
     triggerDev Helligkeit
     timerevents:
       7
     timereventsState:
       state: 7
     triggerEvents:
       7
     triggerEventsState:
       state: 7
   internals:
     0           Helligkeit:STATE hellRollosAuf:STATE
     all         Helligkeit:STATE hellRollosAuf:STATE
   itimer:
     all         Kinder_aufstehen_Wochentag Aufstehen_Wochenende
   localtime:
     0          1518327000
     1          1518336000
   readings:
   realtime:
     0          06:30:00
     1          09:00:00
   time:
     0          [Kinder_aufstehen_Wochentag]
     1          [Aufstehen_Wochenende]
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1518327000:
       localtime  1518327000
       hash:
     1518336000:
       localtime  1518336000
       hash:
   uiState:
   uiTable:
Attributes:
   room       Haus allgemein->System->Rolladensteuerung

Die ganzen Steuerungswerte sind in Dummys ausgelagert, da ich die Werte änderbar haben möchte, ohne die Logik einsehbar haben zu müssen.

Irgendjemand eine hilfreiche Idee?
RasPi3 mit aktuellem FHEM
CUL 433MHZ
Ne Menge Somfy Rollläden
Aktuelles Projekt: Sensoren (MySensors) für Helligkeit und Temperatur zur Rollladensteuerung
Diverse Spielereien...

Damian

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

Darkmozart

Den Gedanken hatte ich auch schon...
Gibt es ein nach hinten offenes Zeitintervall?
RasPi3 mit aktuellem FHEM
CUL 433MHZ
Ne Menge Somfy Rollläden
Aktuelles Projekt: Sensoren (MySensors) für Helligkeit und Temperatur zur Rollladensteuerung
Diverse Spielereien...

Ellert

Zitat von: Darkmozart am 10 Februar 2018, 17:44:38
Die ganzen Steuerungswerte sind in Dummys ausgelagert, da ich die Werte änderbar haben möchte, ohne die Logik einsehbar haben zu müssen.
Irgendjemand eine hilfreiche Idee?

Die Dummys könntest Du Dir sparen, denn Du könntest im DOIF die Widgets auf selbsbenannte Readings legen und im Frontend über readingList, setList, webCmd, und webCmdLabel anzeigen, wie in einem Dummy aber an einer Stelle.

Oder Du nutzt das Attribut uiTable mit weitergehenden Konfigurationsmöglichkeiten zum Erstellen der Benutzerschnittstelle.

ZitatGibt es ein nach hinten offenes Zeitintervall?
Hast Du in der Befehlsreferenz eins gesehen? ;)

Darkmozart

Zitat von: Ellert am 10 Februar 2018, 18:26:57

Hast Du in der Befehlsreferenz eins gesehen? ;)
Nope, darum frag ich ja, undokumentiertes Feature, Workaround und so Sachen :-)

Aber dann bastel ich mal ein passendes Intervall zusammen...
RasPi3 mit aktuellem FHEM
CUL 433MHZ
Ne Menge Somfy Rollläden
Aktuelles Projekt: Sensoren (MySensors) für Helligkeit und Temperatur zur Rollladensteuerung
Diverse Spielereien...