WeekDayTimer - Problem mit variabler Zeitberechnung

Begonnen von Cluni, 03 April 2017, 09:57:45

Vorheriges Thema - Nächstes Thema

Cluni

Morgen zusammen,

ich habe mir für meine Rollladen jeweils einen WeekDayTimer angelegt und möchte, dass der jeweilige Rollladen zu immer unterschiedlichen Zeiten fährt. Hier erstmal ein List von einem Timer:

Internals:
   COMMAND
   CONDITION
   DEF        Rol.Flur Mo-Fr|{sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}|on Sa-So|{sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}|on Mo-So|{sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("19,45,30"))}|off
   DEVICE     Rol.Flur
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       Timer.Rol.Flur
   NR         259
   Profil 0: Sonntag 08:42:40 on, 20:03:11 off
   Profil 1: Montag 07:24:53 on, 20:14:45 off
   Profil 2: Dienstag 07:22:37 on, 19:51:59 off
   Profil 3: Mittwoch 07:15:57 on, 19:49:38 off
   Profil 4: Donnerstag 07:30:51 on, 19:55:29 off
   Profil 5: Freitag 07:22:51 on, 19:59:03 off
   Profil 6: Samstag 08:55:05 on, 19:58:36 off
   STATE      2017-04-03 07:24:53:on
   STILLDONETIME 0
   TYPE       WeekdayTimer
   Readings:
     2017-04-03 07:11:09   currValue       off
     2017-04-02 22:41:42   disabled        0
     2017-04-03 07:11:09   nextUpdate      2017-04-03 07:24:53
     2017-04-03 07:11:09   nextValue       on
     2017-04-03 07:11:09   state           on
   SWITCHINGTIMES:
     Mo-Fr|{sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}|on
     Sa-So|{sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}|on
     Mo-So|{sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("19,45,30"))}|off
   Timer:
     Timer.rol.flur_1:
       HASH       Timer.Rol.Flur
       MODIFIER   1
       NAME       Timer.Rol.Flur_1
     Timer.rol.flur_2:
       HASH       Timer.Rol.Flur
       MODIFIER   2
       NAME       Timer.Rol.Flur_2
     Timer.rol.flur_3:
       HASH       Timer.Rol.Flur
       MODIFIER   3
       NAME       Timer.Rol.Flur_3
     Timer.rol.flur_settimerofday:
       HASH       Timer.Rol.Flur
       MODIFIER   SetTimerOfDay
       NAME       Timer.Rol.Flur_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         08:42:40   on
         20:03:11   off
       1:
         07:24:53   on
         20:14:45   off
       2:
         07:22:37   on
         19:51:59   off
       3:
         07:15:57   on
         19:49:38   off
       4:
         07:30:51   on
         19:55:29   off
       5:
         07:22:51   on
         19:59:03   off
       6:
         08:55:05   on
         19:58:36   off
   Longdays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   Profil:
     1:
       EPOCH      1491196269
       PARA       on
       TIME       {sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}
       TAGE:
         1
         2
         3
         4
         5
     2:
       EPOCH      1491202477
       PARA       on
       TIME       {sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}
       TAGE:
         0
         6
     3:
       EPOCH      1491242481
       PARA       off
       TIME       {sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("19,45,30"))}
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   Profile_idx:
     0:
       08:42:40   2
       08:48:00   2
       19:48:24   3
       20:03:11   3
     1:
       07:22:00   1
       07:24:53   1
       19:56:36   3
       20:14:45   3
     2:
       07:22:37   1
       07:24:01   1
       19:51:59   3
       20:02:03   3
     3:
       07:15:57   1
       07:27:17   1
       19:43:39   3
       19:49:38   3
     4:
       07:20:56   1
       07:30:51   1
       19:43:47   3
       19:55:29   3
     5:
       07:22:51   1
       07:28:36   1
       19:59:03   3
       20:13:08   3
     6:
       08:43:10   2
       08:55:05   2
       19:58:36   3
       19:59:34   3
   Shortdays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   commandTemplate set $NAME  $EVENT
   disable    0
   group      Rollladen-Timer
   icon       fts_shutter_automatic
   room       Flur,Rollladen
   stateFormat nextUpdate:nextValue


Ich möchte z.B. durch meine Zeitangabe sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30")) erreichen, dass
1. durch randomtime("07,00,30") frühestens zwischen 7Uhr und 7:30Uhr geschaltet wird, wenn der Sonnenaufgang früher ist,
2. durch randomtime("08,00,30") spätestens zwischen 8Uhr und 8:30Uhr geschaltet wird, wenn der Sonnenaufgang später ist und
3. durch 1200-rand(2400) +/-20 Minuten um den Sonnenaufgang herum geschaltet wird, wenn der Zeitpunkt zwischen 1. und 2. liegt.

Die Zeitberechnung klappt auch recht gut, aber für mich sieht es so aus als würde manchmal ein Schaltzeitpunkt einfach übergangen (wie im obigen Listing - der angegebene Schaltzeitpunkt war bereits abgelaufen. Es könnte aber auch sein, dass ein Zeitpunkt berechnet und eingetragen wird als nächster Schaltzeitpunkt, der bereits in der Vergangenheit liegt. So richtig konnte ich das bis jetzt noch nicht nachvollziehen.

Es scheint ja so zu sein, dass alle Zeiten bei einem Timer-Event neu berechnet werden, richtig?! Dabei ist mir jedenfalls schon aufgefallen, dass z.B. das on-Event ja auch öfters hintereinander kommen kann, bei meiner Konstruktion - und zwar dann, wenn der neu berechnete Zeitpunkt nach der aktuellen Uhrzeit liegt. Könnte man dies irgendwie verhindern? Und könnte es sein, dass an dieser Stelle auch der Fehler auftreten könnte, dass ein früherer Zeitpunkt als die aktuelle Uhrzeit herauskommt und als nächsten Timer-Zeitpunkt gesetzt wird (der dann ja nicht eintreten kann, weil ja schon vorbei)? Wird im Modul überprüft, ob de nächste Schalttermin gültig und in der Zukunft ist?

Ich hoffe, dass ich mich nicht zu kompliziert ausgedrückt habe und dass alles einigermaßen verständlich ist?! Ansonsten bitte nochmal nachfragen... ;)

Lieben Gruß und schon mal Danke für eure Hilfe
Bernd

Dietmar63

Die Zeiten werden jede Nacht gegen Mitternacht neu berechnet.
Meines Wissens werden die Zeiten der aktuellen Woche berechnet, auch wenn sie schon in der Vergangenheit liegen.
Weiterhin werden die InternalTimer(interne at) des aktuelle Tages gesetzt, in deinem Fall immer zwei. Ich habe mir eine kleine Funktion geschrieben, die alle aktiven  InternalTimer  ins Log ausgeben kann, könnte ich zur Verfügung stellen.

Logische Abhängigkeiten zwischen den unabhängig voneinander berechneten Werten, werden nicht berücksichtigt.

Mit verbose 4 oder verbose 5 kannst du Dir Logging pro WDT einschalten, und prüfen, ob alles zum richtigen Zeitpunkt auch passiert.
Eventuell reichen die Infos aus, um analysieren zu können was nicht korrekt läuft.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Cluni

Zitat von: Dietmar63 am 03 April 2017, 11:26:20
Ich habe mir eine kleine Funktion geschrieben, die alle aktiven  InternalTimer  ins Log ausgeben kann, könnte ich zur Verfügung stellen.

Das wäre toll! Dank dir. Den verbose habe ich schon mal auf 5 gestellt. ;)

Wie schaut das eigentlich mit der Berechnung aus, wenn der WDT auf disable gestellt wird - werden die Werte dann trotzdem um Mitternacht neu berechnet? Oder erst, wenn er wieder enabled wird? Ich würde das enable/disable gerne für alle Rollladen-WDT über die Anwesenheitserkennung ein- bzw ausschalten. D.h. wenn wir zu Hause sind, dann sollen die Rollladen auf Handbetrieb stehen und wenn niemand da ist die Automatik eingeschaltet sein. Das sollte sich ja recht einfach durch ein notify mit der bereits vorhandenen Anwesenheitserkennung schnell machen lassen...

Ich würde auch gerne noch eine Sache machen: Ich habe mir für die Rollladen einige UserAttribute erzeugt - diese würde ich gerne im WDT benutzen. Dazu hatte ich bereits folgendes ausprobiert:
Rol.Bad Mo-Fr|{sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}|{AttrVal("$DEVICE", "Auto_offen_Pos", "Luft")} Sa-So|{sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}|(AttrVal("$DEVICE", "Auto_offen_Pos", "Luft")) Mo-So|{sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("19,45,30"))}|off

Erklärung: Ich würde gerne den als UserAttribut eingetragenen Schaltwert ("Luft" ist ein bei mir in der eventMap hinterlegter Wert: "eventMap /pct 41:Luft/") auslesen und diesen Rollladen entsprechend fahren. Später würde ich auch gerne die eingetragenen frühesten bzw spätesten Schaltzeiten daher holen. Aber das holen des gewünschten Zustands funktioniert schon nicht. Oder muss ich das anders erledigen?

Dietmar63


sub printIntTimer() {

  my %cop;
  foreach my $a (keys %intAt) {

    my $nam = "";
    my $aaa = sprintf ("%6d",$a);
    my $arg = $intAt{$a}{ARG};
       $nam = $arg->{NAME} if (ref($arg) eq "HASH" && defined($arg->{NAME})  );
    my $tim = strftime('%d.%m.%Y %H:%M:%S',localtime($intAt{$a}{TRIGGERTIME}));
    my $func = sprintf ("%-35s %-35s",$nam,$intAt{$a}{FN});

    $cop{$nam." ".$aaa} = $aaa . " " . $tim . " " .  " " . $func if ($nam =~  m/.*/g);
   #$cop{$nam." ".$aaa} = $aaa . " " . $tim . " " .  " " . $func if ($nam =~  m/Twilight_wea/g);
  }
  Log 3, "===============================================";
  foreach my $k (sort keys %cop) {
    Log 3, $cop{$k};
  }
  Log 3, "===============================================";
}



ZitatWie schaut das eigentlich mit der Berechnung aus, wenn der WDT auf disable gestellt wird - werden die Werte dann trotzdem um Mitternacht neu berechnet? Oder erst, wenn er wieder enabled wird? Ich würde das enable/disable gerne für alle Rollladen-WDT über die Anwesenheitserkennung ein- bzw ausschalten. D.h. wenn wir zu Hause sind, dann sollen die Rollladen auf Handbetrieb stehen und wenn niemand da ist die Automatik eingeschaltet sein. Das sollte sich ja recht einfach durch ein notify mit der bereits vorhandenen Anwesenheitserkennung schnell machen lassen...

Es wird immer um Mitternacht alles neu berechnet - dass sollte auch aus dem Logging so hervorgehen.
Mit dem Attribut disable kannst du die aktiven timer quasi unterdrücken - im laufendem Betrieb. Die allerletzte Feinheit funktioniert manchmal nicht so wie erwartet - aber wir sind dran.

Besser funktioniert das Attribut disableCond. Hier musst du eine Condition angeben, wann der Timer abgeschaltet werden soll(neg. Logik) - Da kannst du auf den notify verzichten, weil der Ausdruck immer  zum Zeitpunkt des Schaltens ausgeführt wird.

Ich würde auch gerne noch eine Sache machen: Ich habe mir für die Rollladen einige UserAttribute erzeugt - diese würde ich gerne im WDT benutzen. Dazu hatte ich bereits folgendes ausprobiert:

Zitat
Variabler Parameter:

Auch das funktionierte mit WDT schon einmal. Aber leider haben viele hier im Forum nicht wirklich genau verstanden, wie er zu gebrauchen ist. Deshalb habe ich ihn wieder ausgebaut - zu viel Arbeit beim Support. Der Code steckt noch im Modul drin und müsste aktiviert 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

Cluni

#4
Ich habe jetzt wieder einen Rollladen, der nicht geschaltet wurde:
Internals:
   COMMAND
   CONDITION
   DEF        Rol.WZ.Seitentuer Mo-Fr|{sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}|Luft Sa-So|{sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}|Luft Mo-So|{sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("21,30,30"))}|off
   DEVICE     Rol.WZ.Seitentuer
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       Timer.Rol.WZ.Seitentuer
   NR         261
   Profil 0: Sonntag 08:30:14 Luft, 20:01:26 off
   Profil 1: Montag 07:29:26 Luft, 19:46:03 off
   Profil 2: Dienstag 07:13:49 Luft, 20:06:03 off
   Profil 3: Mittwoch 07:20:04 Luft, 20:06:57 off
   Profil 4: Donnerstag 07:28:27 Luft, 20:08:27 off
   Profil 5: Freitag 07:12:16 Luft, 19:46:45 off
   Profil 6: Samstag 08:43:25 Luft, 20:06:41 off
   STATE      2017-04-03 19:46:03:off
   STILLDONETIME 0
   TYPE       WeekdayTimer
   Readings:
     2017-04-03 12:57:06   currValue       Luft
     2017-04-03 12:56:54   disabled        0
     2017-04-03 12:57:06   nextUpdate      2017-04-03 19:46:03
     2017-04-03 12:57:06   nextValue       off
     2017-04-03 12:57:06   state           active
   SWITCHINGTIMES:
     Mo-Fr|{sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}|Luft
     Sa-So|{sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}|Luft
     Mo-So|{sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("21,30,30"))}|off
   Timer:
     Timer.rol.wz.seitentuer_3:
       HASH       Timer.Rol.WZ.Seitentuer
       MODIFIER   3
       NAME       Timer.Rol.WZ.Seitentuer_3
     Timer.rol.wz.seitentuer_settimerofday:
       HASH       Timer.Rol.WZ.Seitentuer
       MODIFIER   SetTimerOfDay
       NAME       Timer.Rol.WZ.Seitentuer_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         08:30:14   Luft
         20:01:26   off
       1:
         07:29:26   Luft
         19:46:03   off
       2:
         07:13:49   Luft
         20:06:03   off
       3:
         07:20:04   Luft
         20:06:57   off
       4:
         07:28:27   Luft
         20:08:27   off
       5:
         07:12:16   Luft
         19:46:45   off
       6:
         08:43:25   Luft
         20:06:41   off
   Longdays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   Profil:
     1:
       EPOCH      1491196306
       PARA       Luft
       TIME       {sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}
       TAGE:
         1
         2
         3
         4
         5
     2:
       EPOCH      1491201616
       PARA       Luft
       TIME       {sunrise_abs("REAL",600-rand(1200),randomtime("08,30,30"),randomtime("09,30,30"))}
       TAGE:
         0
         6
     3:
       EPOCH      1491243240
       PARA       off
       TIME       {sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("21,30,30"))}
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   Profile_idx:
     0:
       08:30:14   2
       20:01:26   3
     1:
       07:29:26   1
       19:46:03   3
     2:
       07:13:49   1
       20:06:03   3
     3:
       07:20:04   1
       20:06:57   3
     4:
       07:28:27   1
       20:08:27   3
     5:
       07:12:16   1
       19:46:45   3
     6:
       08:43:25   2
       20:06:41   3
   Shortdays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   commandTemplate set $NAME  $EVENT
   disable    0
   group      Rollladen-Timer
   icon       fts_shutter_automatic
   room       Rollladen,Wohnzimmer
   stateFormat nextUpdate:nextValue
   verbose    5


Habe erstmal den List kopiert, damit er nicht abhanden kommt. Der Rolladen hätte um 19:46 zu fahren müssen. Schaue nun mal ins Log, ob ich was finde...

Edit: So nun ist er grade gefahren - eine knappe halbe Stunde später. Gibt es dafür eine Erklärung?

Cluni

2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] time={sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("21,30,30"))}/1491243240 delay=0, nextDelay=60, nextRetry=1491243300
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] delayedExecutionCond:0
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] result of delayedExecutionCond:0
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] list of window sensors found: 'Timer.Rol.WZ.Seitentuer'
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] condition: - Tage:0,1,2,3,4,5,6
2017.04.03 20:14:00 5: [Timer.Rol.WZ.Seitentuer] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2017.04.03 20:14:00 5: [Timer.Rol.WZ.Seitentuer] result of condition:1
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] Update   - timer seems to be active today: 0123456|{sunset_abs("REAL",1200-rand(2400),randomtime("18,30,30"),randomtime("21,30,30"))}|off
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] aktParam: newParam:off - is  not disabled
2017.04.03 20:14:00 4: [Timer.Rol.WZ.Seitentuer] command: 'set $NAME  $EVENT' executed with %NAME=>Rol.WZ.Seitentuer,%EVENT=>off
2017.04.03 20:14:00 3: CUL_HM set Rol.WZ.Seitentuer off

Cluni

Bei der nächsten Rolllade ist die Zeit nun auch vorbei, aber der Rollladen ist noch oben. Ist das etwa normal, dass nicht genau der Zeitpunkt eingehalten wird? Die Fhem Uhr geht jedenfalls richtig. Und jetzt grade fährt auch dieser Rollladen (ca. 6 Minuten zu spät)...

Dietmar63

Nein, dafür habe ich keine Erklärung.
Versuch mal mit printIntTimer() in 99_utils zu prüfen, ob dort die Zeiten mit den Zeiten des RT übereinstimmen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Cluni

Wo genau muss ich die printIntTimer denn aufrufen bzw einhängen?

Dietmar63

#9
über Edit Files:

Dort solltest du dir langfristig eine eigene 99_utils unter eingenem Namen anlegen( 99_myUtils.pm ... ich habe zwei) - kannst du auch später machen.

Dort die Funktion hineinkopieren, speichern und eventuell reload 99_utils ausführen - ich editiere direkt, deshalb muss ich einen reload ausführen, wenn man aus der Oberfläche heraus editiert ist das vielleicht überflüssig  - lange nicht gemacht.

Passs aber auf, dass du die Struktur nicht zerstörst - dann hast du ein Problem.

Umfangreichen Perlcode am besten immer in die eigene 99_utils erfassen - dann bekommst du Syntaxfehler besser heraus.
so etwas:
{sunrise_abs("REAL",1200-rand(2400),randomtime("07,00,30"),randomtime("08,00,30"))}
könntest du dann in eine eigene Funktion auslagern, und der WDT bleibt übersichtlicher. Habe selbst viele eigene Funktionen:

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

Cluni

Ach so, nein, du hast mich falsch verstanden. Wie das mit der 99_utils läuft, weiß ich. Meine Frage war nur, wo ich die Funktion einbinden muss.

Ich habe sie nun über die command line über "{printIntTimer()}" aufgerufen und dann die Log angesehen:

2017.04.03 21:36:31 3: ===============================================
2017.04.03 21:36:31 3:   5266 04.04.2017 00:00:05  Timer.Rol.Bad_SetTimerOfDay         WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    250 04.04.2017 00:00:05  Timer.Rol.Buero_SetTimerOfDay       WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    240 04.04.2017 00:00:05  Timer.Rol.Flur_SetTimerOfDay        WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    242 04.04.2017 00:00:05  Timer.Rol.GaesteWC_SetTimerOfDay    WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    234 04.04.2017 00:00:05  Timer.Rol.Gaestezimmer_SetTimerOfDay WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    238 04.04.2017 00:00:05  Timer.Rol.Jana_SetTimerOfDay        WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    230 04.04.2017 00:00:05  Timer.Rol.Kueche_SetTimerOfDay      WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    236 04.04.2017 00:00:05  Timer.Rol.Schlafzimmer_SetTimerOfDay WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    244 04.04.2017 00:00:05  Timer.Rol.WZ.Seitentuer_SetTimerOfDay WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    246 04.04.2017 00:00:05  Timer.Rol.WZ.links_SetTimerOfDay    WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    248 04.04.2017 00:00:05  Timer.Rol.WZ.rechts_SetTimerOfDay   WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3:    192 04.04.2017 00:00:05  WDT.Licht.WZ.Gruppe_SetTimerOfDay   WeekdayTimer_SetTimerOfDay         
2017.04.03 21:36:31 3: ===============================================


Ich denke mal, dass ich das nach Mitternacht machen müsste?! Vielleicht automatisch über ein at?

Dietmar63

Ich habe mir ein dummy gebastelt.

ja, die Tagestimer sind ja abgearbeitet. Kurz nach Mitternacht werden die timer von morgen gesetzt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Cluni

Habe ich nun gemacht! Mal sehen, was heraus kommt.

Vielen Dank für deinen Einsatz und deine Hilfe!

Cluni

Da passt irgendetwas absolut nicht. So wie ich das sehe, stimmen die Zeiten, die von deiner Funktion ausgelesen werden. Aber die in den WDT sind total Banane. Ich frage mich aber auch, warum 3 Timer pro Rollladen (außer bei denen, die keinen on-Timer haben) angelegt werden laut deiner Funktion? Oder wird beim zweiten Timer dann erst das nächste interne at angelegt?

2017.04.04 00:00:05 4: [Timer.Rol.Flur] 07:19:36 on, 19:51:18 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.GaesteWC] 07:09:05 on, 19:52:11 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.Jana] 07:20:01 on, 20:08:20 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.Bad] 07:28:02 on, 19:55:16 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.Kueche] 07:30:02 on, 19:51:32 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.WZ.links] 07:20:50 Luft, 20:10:36 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.WZ.Seitentuer] 07:29:31 Luft, 20:12:03 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.WZ.rechts] 19:54:20 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.Gaestezimmer] 07:29:54 on, 19:48:53 off (Profil 2: Dienstag)

2017.04.04 00:00:05 4: [Timer.Rol.Buero] 19:59:31 off (Profil 2: Dienstag)


2017.04.04 00:00:05 4: [Timer.Rol.Schlafzimmer] 07:29:43 on, 19:52:07 off (Profil 2: Dienstag)

2017.04.04 01:30:00 3: ===============================================
2017.04.04 01:30:00 3:  21598 04.04.2017 07:08:21  Timer.Rol.Bad_1                     WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21599 04.04.2017 08:36:08  Timer.Rol.Bad_2                     WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21600 04.04.2017 19:48:55  Timer.Rol.Bad_3                     WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21601 05.04.2017 00:00:05  Timer.Rol.Bad_SetTimerOfDay         WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21620 04.04.2017 19:58:27  Timer.Rol.Buero_1                   WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21621 05.04.2017 00:00:05  Timer.Rol.Buero_SetTimerOfDay       WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21583 04.04.2017 07:26:17  Timer.Rol.Flur_1                    WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21584 04.04.2017 08:31:57  Timer.Rol.Flur_2                    WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21585 04.04.2017 19:54:21  Timer.Rol.Flur_3                    WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21586 05.04.2017 00:00:05  Timer.Rol.Flur_SetTimerOfDay        WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21590 04.04.2017 07:23:57  Timer.Rol.GaesteWC_1                WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21591 04.04.2017 08:36:43  Timer.Rol.GaesteWC_2                WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21592 04.04.2017 20:25:21  Timer.Rol.GaesteWC_3                WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21593 05.04.2017 00:00:05  Timer.Rol.GaesteWC_SetTimerOfDay    WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21616 04.04.2017 07:12:02  Timer.Rol.Gaestezimmer_1            WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21617 04.04.2017 08:34:03  Timer.Rol.Gaestezimmer_2            WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21618 04.04.2017 19:46:05  Timer.Rol.Gaestezimmer_3            WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21619 05.04.2017 00:00:05  Timer.Rol.Gaestezimmer_SetTimerOfDay WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21594 04.04.2017 07:17:11  Timer.Rol.Jana_1                    WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21595 04.04.2017 08:52:25  Timer.Rol.Jana_2                    WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21596 04.04.2017 19:52:43  Timer.Rol.Jana_3                    WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21597 05.04.2017 00:00:05  Timer.Rol.Jana_SetTimerOfDay        WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21602 04.04.2017 07:25:12  Timer.Rol.Kueche_1                  WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21603 04.04.2017 08:38:05  Timer.Rol.Kueche_2                  WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21604 04.04.2017 20:19:36  Timer.Rol.Kueche_3                  WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21605 05.04.2017 00:00:05  Timer.Rol.Kueche_SetTimerOfDay      WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21622 04.04.2017 07:29:40  Timer.Rol.Schlafzimmer_1            WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21623 04.04.2017 08:42:21  Timer.Rol.Schlafzimmer_2            WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21624 04.04.2017 19:59:42  Timer.Rol.Schlafzimmer_3            WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21625 05.04.2017 00:00:05  Timer.Rol.Schlafzimmer_SetTimerOfDay WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21610 04.04.2017 07:02:14  Timer.Rol.WZ.Seitentuer_1           WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21611 04.04.2017 08:48:32  Timer.Rol.WZ.Seitentuer_2           WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21612 04.04.2017 20:07:52  Timer.Rol.WZ.Seitentuer_3           WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21613 05.04.2017 00:00:05  Timer.Rol.WZ.Seitentuer_SetTimerOfDay WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21606 04.04.2017 07:14:31  Timer.Rol.WZ.links_1                WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21607 04.04.2017 08:46:42  Timer.Rol.WZ.links_2                WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21608 04.04.2017 20:18:29  Timer.Rol.WZ.links_3                WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21609 05.04.2017 00:00:05  Timer.Rol.WZ.links_SetTimerOfDay    WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  21614 04.04.2017 20:23:00  Timer.Rol.WZ.rechts_1               WeekdayTimer_Update               
2017.04.04 01:30:00 3:  21615 05.04.2017 00:00:05  Timer.Rol.WZ.rechts_SetTimerOfDay   WeekdayTimer_SetTimerOfDay         
2017.04.04 01:30:00 3:  20393 04.04.2017 01:30:00  TimerZeitenCheck                    at_Exec                           
2017.04.04 01:30:00 3: ===============================================

Dietmar63

Das ist in der Tat merkwürdig.
Ich probiere das heute Abend bei mir mal aus.

kannst du mir den Code von randomtime() schicken.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm