[Gelöst] DOIF mit Zeitsteuerung: Wochentag immer am Ende !!

Begonnen von Gisbert, 05 März 2020, 07:48:28

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo Damian,
hallo Forumsmitglieder,

folgendes DOIF macht im 4. Zweig Probleme:

defmod HeizungResistWarmwasser DOIF ([21:30]) (set HeizungResist Warmwasser 0) \
DOELSEIF (([06:30|8] or [07:15|7]) and [?Anwesenheit.dum:state] eq "on") (set HeizungResist Warmwasser 1) \
DOELSEIF ([Anwesenheit.dum:state] eq "off") (set HeizungResist Warmwasser 0) \
DOELSEIF (([06:31|8-21:29] or [07:16|7-21:29]) and [Anwesenheit.dum:state] eq "on") (set HeizungResist Warmwasser 1)
attr HeizungResistWarmwasser do always
attr HeizungResistWarmwasser icon sani_heating_timer
attr HeizungResistWarmwasser room Heizung


Der 4. Zweig schaltet nicht, wenn ein Event von Anwesenheit.dum:state von off nach on wechselt. Es muss mit der Zeitsteuerung <([06:31|8-21:29] or [07:16|7-21:29])> tun zu haben, aber es müsste laut commandref eigentlich richtig sein. Ist die Klammersetzung richtig? Sind 2 Wochentagssteuerungen in einem Zweig ein Problem?

Hier noch ein list des Devices:

Internals:
   CFGFN      ./FHEM/HeizungWarmwasser.cfg
   DEF        ([21:30]) (set HeizungResist Warmwasser 0)
DOELSEIF (([06:30|8] or [07:15|7]) and [?Anwesenheit.dum:state] eq "on") (set HeizungResist Warmwasser 1)
DOELSEIF ([Anwesenheit.dum:state] eq "off") (set HeizungResist Warmwasser 0)
DOELSEIF (([06:31|8-21:29] or [07:16|7-21:29]) and [Anwesenheit.dum:state] eq "on") (set HeizungResist Warmwasser 1)
   FUUID      5deba9aa-f33f-e986-d2f4-4f0562593ba95ca8
   MODEL      FHEM
   NAME       HeizungResistWarmwasser
   NOTIFYDEV  global,Anwesenheit.dum
   NR         812
   NTFY_ORDER 50-HeizungResistWarmwasser
   STATE      cmd_3
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-03-05 07:43:49   Device          Anwesenheit.dum
     2020-03-05 07:29:16   cmd             3
     2020-03-05 07:29:16   cmd_event       Anwesenheit.dum
     2020-03-05 07:29:16   cmd_nr          3
     2020-03-05 07:43:49   e_Anwesenheit.dum_state on
     2020-03-05 07:28:31   mode            enabled
     2020-03-05 07:29:16   state           cmd_3
     2020-03-05 07:28:32   timer_01_c01    05.03.2020 21:30:00
     2020-03-05 07:28:32   timer_02_c02    06.03.2020 06:30:00|8
     2020-03-05 07:28:32   timer_03_c02    06.03.2020 07:15:00|7
     2020-03-05 07:28:32   timer_04_c04    06.03.2020 06:31:00|8-21:29
     2020-03-05 07:28:32   timer_05_c04    06.03.2020 07:16:00|7-21:29
   Regex:
     accu:
     cond:
       Anwesenheit.dum:
         0:
         1:
         2:
           state      ^Anwesenheit.dum$:^state:
         3:
           state      ^Anwesenheit.dum$:^state:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
     1          (::DOIF_time_once($hash,1,$wday,"8") or ::DOIF_time_once($hash,2,$wday,"7")) and ::ReadingValDoIf($hash,'Anwesenheit.dum','state') eq "on"
     2          ::ReadingValDoIf($hash,'Anwesenheit.dum','state') eq "off"
     3          (::DOIF_time_once($hash,3,$wday,"8-21:29") or ::DOIF_time_once($hash,4,$wday,"7-21:29")) and ::ReadingValDoIf($hash,'Anwesenheit.dum','state') eq "on"
   days:
     1          8
     2          7
     3          8-21:29
     4          7-21:29
   do:
     0:
       0          set HeizungResist Warmwasser 0
     1:
       0          set HeizungResist Warmwasser 1
     2:
       0          set HeizungResist Warmwasser 0
     3:
       0          set HeizungResist Warmwasser 1
     4:
   helper:
     DEVFILTER  ^global$|^Anwesenheit.dum$
     NOTIFYDEV  global|Anwesenheit.dum
     event      1
     globalinit 1
     last_timer 5
     sleeptimer -1
     timerdev   Anwesenheit.dum
     timerevent 0
     triggerDev Anwesenheit.dum
     bm:
       DOIF_Attr:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        05.03. 07:35:08
         max        0.00224614143371582
         tot        0.00224614143371582
         mAr:
           del
           HeizungResistWarmwasser
           verbose
       DOIF_Get:
         cnt        3
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        05.03. 07:34:59
         max        2.19345092773438e-05
         tot        6.38961791992188e-05
         mAr:
           HASH(0x55c593b7a650)
           HeizungResistWarmwasser
           ?
       DOIF_Notify:
         cnt        14
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        05.03. 07:29:16
         max        0.0800509452819824
         tot        0.10346794128418
         mAr:
           HASH(0x55c593b7a650)
           HASH(0x55c593646148)
       DOIF_Set:
         cnt        20
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        05.03. 07:29:16
         max        0.000100851058959961
         tot        0.00138998031616211
         mAr:
           HASH(0x55c593b7a650)
           HeizungResistWarmwasser
           ?
     timerevents:
       0
     timereventsState:
       state: off
     triggerEvents:
       1
     triggerEventsState:
       state: on
   internals:
   intervalfunc:
   localtime:
     0          1583440200
     1          1583472600
     2          1583475300
     3          1583472660
     4          1583475360
   readings:
     all         Anwesenheit.dum:state
   realtime:
     0          21:30:00
     1          06:30:00
     2          07:15:00
     3          06:31:00
     4          07:16:00
   time:
     0          21:30:00
     1          06:30:00
     2          07:15:00
     3          06:31:00
     4          07:16:00
   timeCond:
     0          0
     1          1
     2          1
     3          3
     4          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0
     1           1  2
     3           3  4
   trigger:
   triggertime:
     1583440200:
       localtime  1583440200
       hash:
     1583472600:
       localtime  1583472600
       hash:
     1583472660:
       localtime  1583472660
       hash:
     1583475300:
       localtime  1583475300
       hash:
     1583475360:
       localtime  1583475360
       hash:
   uiState:
   uiTable:
Attributes:
   devStateIcon (cmd_1|cmd_3):weather_night@red (cmd_2|cmd_4):scene_day@gray
   do         always
   icon       sani_heating_timer
   room       Heizung


Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

xenos1984

Sollten die Zeitintervalle mit Wochentag nicht die Form
[VON-BIS|WOCHENTAG]
statt
[VON|WOCHENTAG-BIS]
haben?

Damian

Zitat von: xenos1984 am 05 März 2020, 09:42:34
Sollten die Zeitintervalle mit Wochentag nicht die Form
[VON-BIS|WOCHENTAG]
statt
[VON|WOCHENTAG-BIS]
haben?

Wochentag immer am Ende ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gisbert

Zitat von: Damian am 05 März 2020, 09:50:26
Wochentag immer am Ende ;)
Schon macht man's richtig, funktioniert es auch ;D
Den Sinn der Regel kann ich sogar gut nachvollziehen; ich war nur durch den zweiten Zweig, bei dem auch eine Wochentagsteuerung eingesetzt wird, auf der falschen Fährte.

Vielen Dank
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome