FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: moonsorrox am 02 Januar 2019, 15:57:57

Titel: DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: moonsorrox am 02 Januar 2019, 15:57:57
vor einiger Zeit hatten wir hier an dem DOIF für eine Kalenderwoche gebastelt.
Das hatte bisher auch gut funktioniert, nun aber zeigt es mir die Kalnederwoche 00 an, wie kann ich das jetzt ändern

Hier das list:
Internals:
   CFGFN      ./FHEM/System.cfg
   DEF        ([00:00])
   MODEL      FHEM
   NAME       di_Kalenderwoche
   NR         4293
   NTFY_ORDER 50-di_Kalenderwoche
   STATE      00
   TYPE       DOIF
   READINGS:
     2019-01-02 00:00:00   cmd             1
     2019-01-02 00:00:00   cmd_event       timer_1
     2019-01-02 00:00:00   cmd_nr          1
     2018-03-09 14:46:43   mode            enabled
     2019-01-02 00:00:00   state           00
     2019-01-02 00:00:00   timer_01_c01    03.01.2019 00:00:00
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
   days:
   devices:
   do:
     0:
       0         
     1:
   helper:
     event      timer_1
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   
     timerevent timer_1
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       state: 00
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   internals:
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1546470000
   perlblock:
   readings:
   realtime:
     0          00:00:00
   time:
     0          00:00:00
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1546470000:
       localtime  1546470000
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       HWR
   state      {(strftime ('%W', localtime))}
Titel: Antw:DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: Otto123 am 02 Januar 2019, 16:24:19
Hi,

schau mal hier -> https://forum.fhem.de/index.php?topic=37427.0

Gruß Otto
Titel: Antw:DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: moonsorrox am 02 Januar 2019, 17:43:34
Ich habe dort einiges gefunden unter anderem diese Aussage:

ZitatErstens wird die erste Kalenderwoche als nullte Woche eingesetzt, und zweitens beginnt danach die Kalenderwoche schon Sonntags.

Aber etwas einfaches mit DOIF habe ich nicht gefunden, alle anderen Dinge sind aufwendiger ich fand mein DOIF von Damian eigentlich sehr komfortabel  ;)
Dann werde ich mal schauen ob ich einen passende Perlcode finde den ich in meinem DOIF bereit stelle.
Habe schon einiges probiert, aber nichts hat geklappt  :-\
Vielleicht sieht es nächste Woche schon anders aus...  :D
Titel: Antw:DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: Damian am 02 Januar 2019, 21:02:33
siehe: https://perlmaven.com/simple-timestamp-generation-using-posix-strftime

Zitat%W   Week number of the year as a decimal number.                       44
     (Monday as the first day of the week)
     All days in a new year preceding the first Monday
     are considered to be in week 0.

Dieses Jahr haben wir Pech gehabt, danach ist Week number das ganze Jahr über um eins zu klein.
Titel: Antw:DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: Otto123 am 02 Januar 2019, 21:05:33
Der passende Perlcode steht doch zu Hauf in dem Thread? z.B. https://forum.fhem.de/index.php/topic,37427.msg468855.html#msg468855

Oder lese ich da zu flüchtig? Und dein DOIF kannst Du doch lassen wie es ist, Du musst doch nur den Code ändern

Gruß Otto
Titel: Antw:DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: Damian am 02 Januar 2019, 23:20:40
Du kannst dein DOIF wie folgt anpassen und schauen, ob es bei dir funktioniert:

DOIF ([00:00])
attr state {(localtime->week)}
attr do always


oder

DOIF init {[00:00];set_State(::localtime->week)}
Titel: Antw:DOIF - Frage zu meinem DOIF Kalenderwoche
Beitrag von: moonsorrox am 03 Januar 2019, 12:49:53
vielen Dank Damian,
DOIF ([00:00])
attr state {(localtime->week)}
attr do always

ich habe diese Variante genommen, wobei ich nur den state ausgetauscht habe der Rest war ja OK