Autor Thema: Wochentagsprogrammierung im DOIF  (Gelesen 576 mal)

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 758
Wochentagsprogrammierung im DOIF
« am: 30 November 2021, 11:37:21 »
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:
Zitat
Internals:
   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
Informativ Informativ x 1 Liste anzeigen

Offline Sany

  • Full Member
  • ***
  • Beiträge: 357
Antw:Wochentagsprogrammierung im DOIF
« Antwort #1 am: 01 Dezember 2021, 08:36:52 »
Zitat
grundsä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 LVM unter Proxmox, Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, ZigBee/deConz, Z-Wave  ....

Online Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9451
Antw:Wochentagsprogrammierung im DOIF
« Antwort #2 am: 01 Dezember 2021, 13:11:22 »
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

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 758
Antw:Wochentagsprogrammierung im DOIF
« Antwort #3 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.

Online Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9451
Antw:Wochentagsprogrammierung im DOIF
« Antwort #4 am: 01 Dezember 2021, 13:21:14 »
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

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 758
Antw:Wochentagsprogrammierung im DOIF
« Antwort #5 am: 02 Dezember 2021, 16:43:30 »
Ok, die Zeile darunter war mir nicht aufgefallen.

Woher nimmt er eigentlich die Feiertage?

Online Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9451
Antw:Wochentagsprogrammierung im DOIF
« Antwort #6 am: 03 Dezember 2021, 10:26:00 »
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

 

decade-submarginal