WeekdayTimer nicht zuverlässig

Begonnen von ulli, 27 Dezember 2019, 12:40:06

Vorheriges Thema - Nächstes Thema

ulli

Hallo zusammen,
Ich möchte mein Licht entsprechend der Tagezeit steuern.
Dazu nutze ich aktuell das Modul WeekdayTimer um die Tagezeit als reading für mein skript zur Verfügung zu stellen.
Abhängig vom Sonnen auf/Untergang bestimme ich wie folgt die Tageszeit

Internals:
   COMMAND   
   CONDITION 
   DEF        wdt_Tageslicht de $we,!$we|{sunrise_abs_dat($date,-3600,)}|Sonnenaufgang $we,!$we|{sunrise_abs_dat($date)}|Tag $we,!$we|{sunset_abs_dat($date,-3600)}|Sonnenuntergang $we,!$we|{sunset_abs_dat($date)}|Nacht
   DEVICE     wdt_Tageslicht
   FUUID      5e00f3fb-f33f-aa80-e916-0f9d5e4a65f638f4
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       wdt_Tageslicht
   NR         170410
   Profil 0: Sonntag 06:23:30 Sonnenaufgang, 07:23:30 Tag, 15:58:51 Sonnenuntergang, 16:58:51 Nacht
   Profil 1: Montag 06:23:59 Sonnenaufgang, 07:23:59 Tag, 15:59:22 Sonnenuntergang, 16:59:22 Nacht
   Profil 2: Dienstag 06:24:27 Sonnenaufgang, 07:24:27 Tag, 15:59:55 Sonnenuntergang, 16:59:55 Nacht
   Profil 3: Mittwoch 06:24:51 Sonnenaufgang, 07:24:51 Tag, 16:00:31 Sonnenuntergang, 17:00:31 Nacht
   Profil 4: Donnerstag 06:25:13 Sonnenaufgang, 07:25:13 Tag, 16:01:09 Sonnenuntergang, 17:01:09 Nacht
   Profil 5: Freitag 06:25:33 Sonnenaufgang, 07:25:33 Tag, 16:01:50 Sonnenuntergang, 17:01:50 Nacht
   Profil 6: Samstag 06:25:50 Sonnenaufgang, 07:25:50 Tag, 16:02:33 Sonnenuntergang, 17:02:33 Nacht
   Profil 7: Wochenende 06:25:50 Sonnenaufgang, 07:25:50 Tag, 16:02:33 Sonnenuntergang, 17:02:33 Nacht
   Profil 8: Werktags 06:25:33 Sonnenaufgang, 07:25:33 Tag, 16:01:50 Sonnenuntergang, 17:01:50 Nacht
   STATE      Tag
   STILLDONETIME 0
   TYPE       WeekdayTimer
   OLDREADINGS:
   READINGS:
     2019-12-27 07:25:33   currValue       Nacht
     2019-12-27 07:25:33   nextUpdate      2019-12-28 06:25:50
     2019-12-27 07:25:33   nextValue       Sonnenaufgang
     2019-12-27 07:25:33   state           Tag
   SWITCHINGTIMES:
     $we,!$we|{sunrise_abs_dat($date,-3600,)}|Sonnenaufgang
     $we,!$we|{sunrise_abs_dat($date)}|Tag
     $we,!$we|{sunset_abs_dat($date,-3600)}|Sonnenuntergang
     $we,!$we|{sunset_abs_dat($date)}|Nacht
   TIMER:
     wdt_Tageslicht_1:
       HASH       wdt_Tageslicht
       MODIFIER   1
       NAME       wdt_Tageslicht_1
     wdt_Tageslicht_2:
       HASH       wdt_Tageslicht
       MODIFIER   2
       NAME       wdt_Tageslicht_2
     wdt_Tageslicht_3:
       HASH       wdt_Tageslicht
       MODIFIER   3
       NAME       wdt_Tageslicht_3
     wdt_Tageslicht_4:
       HASH       wdt_Tageslicht
       MODIFIER   4
       NAME       wdt_Tageslicht_4
     wdt_Tageslicht_SetTimerOfDay:
       HASH       wdt_Tageslicht
       MODIFIER   SetTimerOfDay
       NAME       wdt_Tageslicht_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:
         06:23:30   Sonnenaufgang
         07:23:30   Tag
         15:58:51   Sonnenuntergang
         16:58:51   Nacht
       1:
         06:23:59   Sonnenaufgang
         07:23:59   Tag
         15:59:22   Sonnenuntergang
         16:59:22   Nacht
       2:
         06:24:27   Sonnenaufgang
         07:24:27   Tag
         15:59:55   Sonnenuntergang
         16:59:55   Nacht
       3:
         06:24:51   Sonnenaufgang
         07:24:51   Tag
         16:00:31   Sonnenuntergang
         17:00:31   Nacht
       4:
         06:25:13   Sonnenaufgang
         07:25:13   Tag
         16:01:09   Sonnenuntergang
         17:01:09   Nacht
       5:
         06:25:33   Sonnenaufgang
         07:25:33   Tag
         16:01:50   Sonnenuntergang
         17:01:50   Nacht
       6:
         06:25:50   Sonnenaufgang
         07:25:50   Tag
         16:02:33   Sonnenuntergang
         17:02:33   Nacht
       7:
         06:25:50   Sonnenaufgang
         07:25:50   Tag
         16:02:33   Sonnenuntergang
         17:02:33   Nacht
       8:
         06:25:33   Sonnenaufgang
         07:25:33   Tag
         16:01:50   Sonnenuntergang
         17:01:50   Nacht
     WEDAYS:
       1          1
       2          1
       5          Neujahr
   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
     nl:
       Zondag
       Maandag
       Dinsdag
       Woensdag
       Donderdag
       Vrijdag
       Zaterdag
       weekend
       werkdagen
   profil:
     1:
       EPOCH      1577424333
       PARA       Sonnenaufgang
       TIME       {sunrise_abs_dat($date,-3600,)}
       WE_Override 0
       TAGE:
         7
         8
     2:
       EPOCH      1577427933
       PARA       Tag
       TIME       {sunrise_abs_dat($date)}
       WE_Override 0
       TAGE:
         7
         8
     3:
       EPOCH      1577458910
       PARA       Sonnenuntergang
       TIME       {sunset_abs_dat($date,-3600)}
       WE_Override 0
       TAGE:
         7
         8
     4:
       EPOCH      1577462510
       PARA       Nacht
       TIME       {sunset_abs_dat($date)}
       WE_Override 0
       TAGE:
         7
         8
   profile_IDX:
     0:
       06:23:30   1
       07:23:30   2
       15:58:51   3
       16:58:51   4
     1:
       06:23:59   1
       07:23:59   2
       15:59:22   3
       16:59:22   4
     2:
       06:24:27   1
       07:24:27   2
       15:59:55   3
       16:59:55   4
     3:
       06:24:51   1
       07:24:51   2
       16:00:31   3
       17:00:31   4
     4:
       06:25:13   1
       07:25:13   2
       16:01:09   3
       17:01:09   4
     5:
       06:25:33   1
       07:25:33   2
       16:01:50   3
       17:01:50   4
     6:
       06:25:50   1
       07:25:50   2
       16:02:33   3
       17:02:33   4
     7:
       06:25:50   1
       07:25:50   2
       16:02:33   3
       17:02:33   4
     8:
       06:24:27   1
       06:24:51   1
       06:25:13   1
       06:25:33   1
       07:24:27   2
       07:24:51   2
       07:25:13   2
       07:25:33   2
       15:59:55   3
       16:00:31   3
       16:01:09   3
       16:01:50   3
       16:59:55   4
       17:00:31   4
       17:01:09   4
       17:01:50   4
   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
     nl:
       zo
       ma
       di
       wo
       do
       vr
       za
       $we
       !$we


Wie man in dem list sehen kann stimmt state und currValue nicht überein. Müsste das nicht so sein?
Komisch ist das aktuell um 12:30 Uhr das currValue noch den vorletzten Status hat, das nextValue gar keinen Sinn ergibt und das state reading den eigentlich korrekten.
Mach ich was falsch oder ist das ein Bug?

Danke im Voraus!

Beta-User

Ob es ein bug ist, kann ich noch nicht recht sagen...

Was den WDT auf alle Fälle irritiert (und vermutlich schon immer irritiert hat), ist eine Angabe wie "$we,!$we|". Die kann man einfach weglassen, also den Schaltzeitpunt z.B. so schreiben "{sunrise_abs_dat($date,-3600,)}|Sonnenaufgang". Sonst prüft der WDT, ob der betreffende Timer heute zuschlagen soll (nein, weil nicht $we ist und das die erste Angabe war), und man sieht diesen Schaltzeitpunkt nicht mehr in den Readings (ausgeführt wird er aber mit einiger Sicherheit)...

Wäre interessant zu wissen, warum du das so gesetzt hattest, denn der WDT-Code geht recht schlicht davon aus, dass man eben entweder einen oder mehrere Tage setzt, oder $we verwendet (bzw. das Gegenteil), aber eben keine Kombination davon. Ggf. muß ich da noch was nacharbeiten, zumindest, was die Doku angeht.

Dieser Thread gehört übrigens zu "Kalendermodule" (lt. MAINTAINER.txt), bitte bei Gelegenheit verschieben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ulli

#2
Okay ich teste es mal ohne die we,
Danke!