Random Timer in Verbindung mit Twilight, EIN-Schaltzeit nach AUS-Schaltzeit

Begonnen von honkmasta, 09 Juni 2017, 19:56:26

Vorheriges Thema - Nächstes Thema

honkmasta

Hallo zusammen,

ich habe eine Verständnisfrage zum Thema RandomTimer in Verbindung mit Twilight:

Ich habe ca. 20 RandomTimer die für eine Anwesenheitssimulation über KNX Licht und weiteres schalten.
Funktioniert grundsätzlich wunderbar und ohne Probleme wenn der RandomTimer mit fixen Zeiten arbeitet:
*{"21:24:00"} HM.PowerMeter.Plug.Schlafzimmer.Switch *{"22:47:00"} 978

Ebenso funktioniert wie gewünscht der RandomTimer mit Twilight und einem Abschaltzeitpunkt am nächsten Tag: 
*{twilight("myTwilight","ss_weather","00:00:01","23:59:59")} KNX.Erdgeschoss.Flur.Decke.Licht *{"01:27:00"} 300

Problematisch wird es wenn ich das Licht mit Twilight frühestens zum Sonnenuntergang einschalten will und
spätestens zu einem fix definierten Zeitpunkt ausschalten will (weil Schlafenszeit für die Kinder), wobei die beiden Zeitpunkte sich überschneiden können.
*{twilight("myTwilight","ss_weather","00:00:01","23:59:59")} KNX.Obergeschoss.Kinderschlafzimmer.Switch *{"19:08:00"} 1771
Dieser Code funktioniert einwandfrei solange der Sunset vor 19:08 liegt. Findet der Sonnenuntergang nach 19:08
statt wird die Anweisung als Einschalten zum Sunset (z.B. 19:30) und zum Ausschalten für 19:08 aber des folgenden Tages interpretiert. Dies ist aber nicht in meinem Sinne. Wünschenswert wäre das dann die Anweisung ignoriert wird und das Licht gar nicht eingeschaltet wird.

Gibt es eine Möglichkeit im RandomTimer einen Flag o.ä. zu setzen dass ein Timer mit Einschaltzeitpunkt der rein Uhrzeitbasierend (ohne Beachtung der Tage) nach dem Ausschaltzeitpunkt liegt ignoriert wird? In der Art:
if ((tEin > tAus) && (doNotExtendOverNoon)) then this.disabled = true

Momentan helfe ich mir mit der disabledCondition, was aber ein riesiger Schreibaufwand ist bei dieser Anzahl von Timern und nicht immer sauber funktioniert.
((Value("isHausAutomatik") eq "off") or (Value("isWochenende") eq "on") or (comptimegt(twilight("myTwilight","ss_weather","00:00:01","23:59:59"),"19:08:00")))
Im April sind immer wieder komische "Fehlschaltungen" über Nacht aufgetreten obwohl die disabledCondition das unterdrücken sollte.

Gibt es eine versteckte Option im Randomtimer oder habe ich anderweitig etwas übersehen?
Für einen Tip in die richtige Richtung wäre ich sehr dankbar.

Gruss StefanGeorg

Dietmar63

Gibt es eine Möglichkeit im RandomTimer einen Flag o.ä. zu setzen dass ein Timer mit Einschaltzeitpunkt der rein Uhrzeitbasierend (ohne Beachtung der Tage) nach dem Ausschaltzeitpunkt liegt ignoriert wird? In der Art:
Code: [Auswählen]

if ((tEin > tAus) && (doNotExtendOverNoon)) then this.disabled = true

gibt es leider im Moment nicht
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

honkmasta

Hallo Dietmar, Danke für die schnelle Antwort.

Ist die Problemstellung nachvollziehbar?

Könnte eine Funktion in dieser Art von Dir implementiert werden? Eventuell stehen Andere vor einem ähnlichen Problem.

Ich habe mich auch schonmal durch den Code vom RandomTimer gewühlt, wollte aber erstmal nachfragen wie der aktuelle Stand zum Modul ist.

Danke und Gruß


Gesendet von iPhone mit Tapatalk

Dietmar63

Vielleicht ist das ganz einfach.
Ich schaue nachher mal nach ob ich mit meiner Vermutung richtig liege.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

kannst du den Code selbst verändern?
wenn ja dann mal folgende Zeile 389 auskommentieren und das Modul reloaden.

So:
   if ($hash->{helper}{startTime} > $stopTime) {
      #$stopTime  = RandomTimer_addDays($stopTime, 1);
   }

Dann bleibt der stoptimer immer am gleichen Tag und der RT sollte nicht ausgeführt werden.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

honkmasta

Danke - Das ist genau der Eingriffspunkt.

Mit einem Auskommentieren funktionieren dann aber RandomTimer in der Art "Einschalten um 22:00, Ausschalten um 01:00 des Folgetages" nicht mehr.
Idealerweise könnte man die Abfrage noch mit einem zusätzlichen Attribut wie im ersten Beitrag vorgeschlagen versehen.

Danke und Gruß



Gesendet von iPhone mit Tapatalk

Dietmar63

Ich wollte nur dass du es vielleicht ausprobierst, ob es so geht.
Natürlich  würde ich dann noch ein Attribut spendieren, dass heißen könnte forceStopTimerSameDay- oder so.

kannst du es ausprobieren?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

honkmasta

Super. Die Kommentierung Ist eingearbeitet. Ich gebe morgen Bescheid was das Protokoll sagt und was die Lampe gemacht hat.

Gruß


Gesendet von iPhone mit Tapatalk

Dietmar63

Du kannst heute(kurz nach Mitternacht) schon an den Readings die neue starttime stoptime sehen. Die stoptimes sollten dann nicht auf den Folgetag weisen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

honkmasta

Moin,

mit folgender Definition (eigentlich eine Schaltung über Mitternacht)
*{twilight("myTwilight","ss_weather","00:00:01","23:59:59")} KNX.Erdgeschoss.Flur.Decke.Licht *{"01:27:00"} 300
und o.a. kommentierter Passage wird die Stopzeit auf den gleichen Tag gesetzt.
Startzeit 2017-06-11 20:37:54 2017-06-11 00:05:30
Stoppzeit 2017-06-11 01:27:00 2017-06-11 00:05:30


Gruß

Dietmar63

Dann hoffen wir mal, dass heute nicht geschaltet wird.
Ich denke es wird klappen.

Wenn es klappt, werde ich es so einbauen: forceStoptimeSameDay

   if (!AttrVal($hash->{NAME}, "forceStoptimeSameDay", 0)) {
      if ($hash->{helper}{startTime} > $stopTime) {
         $stopTime  = RandomTimer_addDays($stopTime, 1);
      }
   }


Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

honkmasta

Hallo,

kurzes Statusupdate:
Ich hatte zwei RandomTimer angesetzt. Keiner von beiden hat geschaltet.
--> Das Auskommentieren hat funktioniert.


Gruß

Dietmar63

ok, dann gebe ich bei Gelegenheit das Programm frei - bin mit Linux umgezogen und muss zum ersten mal vom neuen Notebook einchecken.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

honkmasta

Super! Vielen Dank im Voraus. Gruß


Gesendet von iPhone mit Tapatalk

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm