Hauptmenü

DOELSEIF triggert nicht...?

Begonnen von Morgennebel, 29 November 2018, 08:42:27

Vorheriges Thema - Nächstes Thema

Morgennebel

Moin Moin,


ich habe folgendes DOIF zur Steuerung meines Warmwasser-Boilers (Energie sparen):

([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8] and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
(set HM_EG.ATELIER_WarmWasserPwmSw_Sw on)
DOELSEIF ([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] >= [$SELF:desired])
    (set HM_EG.ATELIER_WarmWasserPwmSw_Sw off)

DOIF_Readings lowpoint:([$SELF:desired] - [$SELF:hysterese])


Stand jetzt liegt die gemessene Temperatur bei 51.50 Grad und desired bei 48. Meine Erwartung wäre, daß der DOELSEIF-Zweig triggert und das Relais ausgeschaltet wird. Leider passiert dies nicht - der Boiler heizt lustig weiter.

Was mache ich wohl falsch?

Danke, -MN

Ein list:


Internals:
   CFGFN     
   DEF        ([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8] and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
(set HM_EG.ATELIER_WarmWasserPwmSw_Sw on)
DOELSEIF ([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] >= [$SELF:desired])
    (set HM_EG.ATELIER_WarmWasserPwmSw_Sw off)
   NAME       DI_WWBoilerEnergySaverTH
   NR         500
   NTFY_ORDER 50-DI_WWBoilerEnergySaverTH
   STATE      cmd_1
   TYPE       DOIF
   DOIF_Readings:
     lowpoint   (ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','desired') - ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','hysterese'))
   READINGS:
     2018-11-29 08:39:02   Device          ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf
     2018-11-29 03:30:00   cmd             1
     2018-11-29 03:30:00   cmd_event       timer_3
     2018-11-29 03:30:00   cmd_nr          1
     2018-11-28 19:49:04   desired         48
     2018-11-29 08:36:02   e_DI_WWBoilerEnergySaverTH_desired 48
     2018-11-29 08:36:02   e_DI_WWBoilerEnergySaverTH_lowpoint 44
     2018-11-29 08:39:02   e_ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf_Temperature 51.50
     2018-11-28 19:50:14   hysterese       4
     2018-11-28 19:50:14   lowpoint        44
     2018-11-28 19:49:53   mode            enabled
     2018-11-29 03:30:00   state           cmd_1
     2018-11-28 19:49:53   timer_01_c01    29.11.2018 06:00:00|7
     2018-11-28 19:49:53   timer_02_c01    29.11.2018 10:30:00|7
     2018-11-28 19:49:53   timer_03_c01    29.11.2018 03:30:00|8
     2018-11-28 19:49:53   timer_04_c01    29.11.2018 09:00:00|8
     2018-11-28 20:30:01   timer_05_c01    29.11.2018 17:00:00|7
     2018-11-28 20:30:01   timer_06_c01    29.11.2018 20:30:00|7
     2018-11-28 20:15:00   timer_07_c01    29.11.2018 15:30:00|8
     2018-11-28 20:15:00   timer_08_c01    29.11.2018 20:15:00|8
   Regex:
     DOIF_Readings:
       DI_WWBoilerEnergySaverTH:
         lowpoint:
           desired    ^DI_WWBoilerEnergySaverTH$:^desired:
           hysterese  ^DI_WWBoilerEnergySaverTH$:^hysterese:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms,"7") or DOIF_time($hash,2,3,$wday,$hms,"8") or DOIF_time($hash,4,5,$wday,$hms,"7") or DOIF_time($hash,6,7,$wday,$hms,"8") and  (ReadingValDoIf($hash,'ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf','Temperature') <= ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','lowpoint'))
     1          ReadingValDoIf($hash,'ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf','Temperature') >= ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','desired')
   days:
     0          7
     1          7
     2          8
     3          8
     4          7
     5          7
     6          8
     7          8
   devices:
     0           ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf DI_WWBoilerEnergySaverTH
     1           ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf DI_WWBoilerEnergySaverTH
     all         ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf DI_WWBoilerEnergySaverTH
   do:
     0:
       0          set HM_EG.ATELIER_WarmWasserPwmSw_Sw on
     1:
       0          set HM_EG.ATELIER_WarmWasserPwmSw_Sw off
     2:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      Temperature: 51.50,Tem: 51.50
     globalinit 1
     last_timer 8
     sleeptimer -1
     timerdev   ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf
     timerevent Temperature: 51.50,Tem: 51.50
     triggerDev ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf
     timerevents:
       Temperature: 51.50
       Tem: 51.50
     timereventsState:
       Temperature: 51.50
       state: Tem: 51.50
     triggerEvents:
       Temperature: 51.50
       Tem: 51.50
     triggerEventsState:
       Temperature: 51.50
       state: Tem: 51.50
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
   itimer:
   localtime:
     0          1543467600
     1          1543483800
     2          1543458600
     3          1543478400
     4          1543507200
     5          1543519800
     6          1543501800
     7          1543518900
   readings:
     0           ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature DI_WWBoilerEnergySaverTH:lowpoint
     1           ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature DI_WWBoilerEnergySaverTH:desired
     all         ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature DI_WWBoilerEnergySaverTH:lowpoint DI_WWBoilerEnergySaverTH:desired
   realtime:
     0          06:00:00
     1          10:30:00
     2          03:30:00
     3          09:00:00
     4          17:00:00
     5          20:30:00
     6          15:30:00
     7          20:15:00
   time:
     0          06:00:00
     1          10:30:00
     2          03:30:00
     3          09:00:00
     4          17:00:00
     5          20:30:00
     6          15:30:00
     7          20:15:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1  2  3  4  5  6  7
   trigger:
   triggertime:
     1543478400:
       localtime  1543478400
       hash:
     1543483800:
       localtime  1543483800
       hash:
     1543501800:
       localtime  1543501800
       hash:
     1543507200:
       localtime  1543507200
       hash:
     1543518900:
       localtime  1543518900
       hash:
     1543519800:
       localtime  1543519800
       hash:
   uiState:
   uiTable:
Attributes:
   DOIF_Readings lowpoint:([$SELF:desired] - [$SELF:hysterese])
   readingList desired hysterese
   room       EG.Atelier,SYS_Events
   setList    hysterese:2,4,6,8,10,12,14,16 desired:40,44,48,52
   webCmd     desired:hysterese
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Frank_Huber

er "hängt" in cmd1.
Die zeitbereiche ziehen alleine so wie das and/or verknüpft ist.

mach mal aus dem hier:
([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8] and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))


das hier:
(([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8]) and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))


dann sollte es gehen

Morgennebel

Danke, Frank.


Mir ist nur nicht klar, warum das DOIF in den Zeitgrenzen hing. Ich habs mal geändert und beobachte....

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Frank_Huber

   READINGS:
     2018-11-29 03:30:00   cmd             1
     2018-11-29 03:30:00   cmd_event       timer_3

     2018-11-28 19:49:53   timer_03_c01    29.11.2018 03:30:00|8


dein Temperaturbereich wird nur im späteren Zeitbereich abgefragt:
or [15:30-20:15|8] and ([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))

FYI: AND hat Vorrang vor OR, deshalb immer klammern.