Hauptmenü

Wochentagsprogrammierung im DOIF

Begonnen von Superposchi, 30 November 2021, 11:37:21

Vorheriges Thema - Nächstes Thema

Superposchi

Ich versuche für meine Weihnachtsbeleuchtung eine schöne Programmierung zu finden, doch leider schaffe ich es nicht Werktags und Wochenende zu differenzieren.
Unter der Woche soll die beleuchtung 1 Stunde vor Sonnenuntergang angehen und am Wochenende grundsätzlich um 14 Uhr.
(([{sunset(-3600)}|8]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
(set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF (([02:00|9]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
(set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF ([Anwesenheitsstatus] eq "2")
(set light_wz_weihnachtsbeleuchtung off) (set plug_wz_weihnacht off)

Hat am Wochenende aber leider nicht reagiert.

Hat jemand eine Idee wo der Fehler steckt?

Hier noch das List zum DOIF:
ZitatInternals:
   DEF        (([{sunset(-3600)}|8]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
   (set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF (([02:00|9]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
   (set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF ([Anwesenheitsstatus] eq "2")
   (set light_wz_weihnachtsbeleuchtung off) (set plug_wz_weihnacht off)
   FUUID      619ad051-f33f-6c14-bd8c-92271681f80c033e
   FVERSION   98_DOIF.pm:0.249050/2021-09-01
   MODEL      FHEM
   NAME       christmastree_control
   NOTIFYDEV  Anwesenheitsstatus,global,Schlafend
   NR         280
   NTFY_ORDER 50-christmastree_control
   STATE      initialized
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-11-30 11:17:32   cmd             0
     2021-11-30 11:17:32   mode            enabled
     2021-11-30 11:17:32   state           initialized
     2021-11-30 11:17:32   timer_01_c01    30.11.2021 16:11:25|8
     2021-11-30 11:17:32   timer_02_c02    01.12.2021 02:00:00|9
   Regex:
     accu:
     collect:
     cond:
       Anwesenheitsstatus:
         0:
           &STATE     ^Anwesenheitsstatus$
         1:
           &STATE     ^Anwesenheitsstatus$
         2:
           &STATE     ^Anwesenheitsstatus$
       Schlafend:
         0:
           &STATE     ^Schlafend$
         1:
           &STATE     ^Schlafend$
   attr:
     cmdState:
     wait:
       0:
         0
         1800
       1:
         0
         1800
       2:
         0
         0
     waitdel:
   condition:
     0          (::DOIF_time_once($hash,0,$wday,"8")) and (::InternalDoIf($hash,'Anwesenheitsstatus','STATE') eq "1") and (::InternalDoIf($hash,'Schlafend','STATE') eq "off")
     1          (::DOIF_time_once($hash,1,$wday,"9")) and (::InternalDoIf($hash,'Anwesenheitsstatus','STATE') eq "1") and (::InternalDoIf($hash,'Schlafend','STATE') eq "off")
     2          ::InternalDoIf($hash,'Anwesenheitsstatus','STATE') eq "2"
   days:
     0          8
     1          9
   do:
     0:
       0          set light_wz_weihnachtsbeleuchtung on
       1          set plug_wz_weihnacht on
     1:
       0          set light_wz_weihnachtsbeleuchtung on
       1          set plug_wz_weihnacht on
     2:
       0          set light_wz_weihnachtsbeleuchtung off
       1          set plug_wz_weihnacht off
     3:
   helper:
     DEVFILTER  ^global$|^Anwesenheitsstatus$|^Schlafend$
     NOTIFYDEV  global|Anwesenheitsstatus|Schlafend
     globalinit 1
     last_timer 2
     sleeptimer -1
   internals:
     all         Anwesenheitsstatus:STATE Schlafend:STATE
   intervalfunc:
   localtime:
     0          1638285085
     1          1638320400
   realtime:
     0          16:11:25
     1          02:00:00
   time:
     0          {sunset(-3600)}
     1          02:00:00
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   triggertime:
     1638285085:
       localtime  1638285085
       hash:
     1638320400:
       localtime  1638320400
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Steuerung Weihnachtsbeleuchtung
   do         always
   group      Weihnachtsbeleuchtung
   room       Steuerung->Licht->Wohnzimmer
   wait       0,1800:0,1800:0,0

Sany

Zitatgrundsätzlich um 14 Uhr is aber nich ([02:00|9])
und um 2:00 war [Schlafend] vermutlich nicht "off"

fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Damian

Zitat von: Sany am 01 Dezember 2021, 08:36:52
und um 2:00 war [Schlafend] vermutlich nicht "off"

9 bedeutet "morgen Wochenende", ich denke, dass das hier nicht gewollt war

7 bedeutet "Wochenende"

8 bedeutet "Arbeitstage"

siehe https://fhem.de/commandref_DE.html#DOIF_Wochentagsteuerung
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Superposchi

Stimmt, 2 Uhr ist natürlich nicht 14 Uhr. Mein Fehler.

Laut CommandRef ist 9 Wochenende und Feiertage.
Keine Ahnung was mit "morgen Wochenende" gemeint ist.

Damian

Zitat von: Superposchi am 01 Dezember 2021, 13:13:57
Stimmt, 2 Uhr ist natürlich nicht 14 Uhr. Mein Fehler.

Laut CommandRef ist 9 Wochenende und Feiertage.
Keine Ahnung was mit "morgen Wochenende" gemeint ist.

Auszug aus der Commandref:

[<time>|0123456789] 0-9 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we), 8 für Arbeitstage (entspricht !$we) und 9 für Wochenende oder Feiertag morgen (entspricht intern $twe)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Superposchi

Ok, die Zeile darunter war mir nicht aufgefallen.

Woher nimmt er eigentlich die Feiertage?

Damian

Zitat von: Superposchi am 02 Dezember 2021, 16:43:30
Ok, die Zeile darunter war mir nicht aufgefallen.

Woher nimmt er eigentlich die Feiertage?

Wochenende und Feiertage entsprechen der globalen FHEM-Variable $we. Diese wiederum wird für Feiertage vom Modul holiday belegt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF