[SOLVED] DOIF ignoriert wait und cmdpause

Begonnen von Morgennebel, 26 Januar 2016, 13:43:19

Vorheriges Thema - Nächstes Thema

Morgennebel

Guten Tag,


diese DOIF-Anweisung zur Steuerung eines STELLMOTOR-Heizungsmischers macht Zicken:

Internals:
   CFGFN      ./FHEM/fhem-timers.cfg
   DEF        ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 25 and [EG.HWR.Fussbodenmischer:position]<97)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 27 and [EG.HWR.Fussbodenmischer:position]<98)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 29 and [EG.HWR.Fussbodenmischer:position]<98)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 31 and [EG.HWR.Fussbodenmischer:position]<98)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] > 34 and [EG.HWR.Fussbodenmischer:position]>5)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-4)})
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] > 33 and [EG.HWR.Fussbodenmischer:position]>3)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-2)})
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] > 32 and [EG.HWR.Fussbodenmischer:position]>2)
    (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-1)})
DOELSEIF ([04:00])
    (set EG.HWR.Fussbodenmischer calibrate)
   NAME       DI_MischerCommands
   NR         795
   NTFY_ORDER 50-DI_MischerCommands
   STATE      cmd_5
   TYPE       DOIF
   Readings:
     2016-01-26 13:35:31   Device          EG.Heizung.Mischer.Vorlauf
     2016-01-26 13:35:31   cmd_event       EG.Heizung.Mischer.Vorlauf
     2016-01-26 13:35:31   cmd_nr          5
     2016-01-26 13:33:51   e_EG.HWR.Fussbodenmischer_position 85
     2016-01-26 13:35:31   e_EG.Heizung.Mischer.Vorlauf_temperature.avg 44.362
     2016-01-26 13:35:31   state           cmd_5
     2016-01-26 04:00:00   timer_1_c8      27.01.2016 04:00:00
     2016-01-26 13:34:27   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') < 25 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')<97
     1          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') < 27 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')<98
     2          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') < 29 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')<98
     3          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') < 31 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')<98
     4          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') > 34 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')>5
     5          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') > 33 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')>3
     6          ReadingValDoIf('EG.Heizung.Mischer.Vorlauf','temperature.avg','') > 32 and ReadingValDoIf('EG.HWR.Fussbodenmischer','position','')>2
     7          DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
   Days:
   Devices:
     0           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     1           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     2           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     3           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     4           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     5           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     6           EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
     all         EG.Heizung.Mischer.Vorlauf EG.HWR.Fussbodenmischer
   Do:
     0:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)}
     1:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)}
     2:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)}
     3:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)}
     4:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-4)}
     5:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-2)}
     6:
       0          set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-1)}
     7:
       0          set EG.HWR.Fussbodenmischer calibrate
     8:
   Helper:
     globalinit 1
     last_timer 1
     sleepdevice EG.Heizung.Mischer.Vorlauf
     sleepsubtimer 0
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     0           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     1           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     2           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     3           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     4           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     5           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     6           EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
     all         EG.Heizung.Mischer.Vorlauf:temperature.avg EG.HWR.Fussbodenmischer:position
   Realtime:
     0          04:00:00
   State:
   Time:
     0          04:00:00
   Timecond:
     0          7
   Timer:
     0          0
   Timerfunc:
   Timers:
     7           0
   Trigger:
Attributes:
   cmdpause   240,300,360,480,150,240,360,0
   do         always
   room       EG.HWR
   wait       180,240,300,450,180,240,300,0


Die Anweisung hat 4 Konditionen zum schrittweisen öffnen und 3 Konditionen zum schrittweisen schließen des Mischers (STELLMOTORS). Mit dem zusätzlichen
calibrate stehen 8 Kommandos zur Verfügung und es sind jeweils 8 Attribute definiert.

Für diese Anweisungen sind cmdpause und wait Anweisungen definiert - je näher an der Zieltemperatur, desto langsamer/abwartender wird korrigiert.

Leider taucht die wait-Anweisung nicht in den Readings auf:

(http://i.imgur.com/XUOoykF.png)

und der Mischer wird massiv schnell ohne Berücksichtigung von wait und cmdpause geöffnet:

(http://i.imgur.com/c52e6hY.png)

Was habe ich falsch gemacht oder warum läuft es nicht richtig...?

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

moonsorrox

ich bin der Meinung dein cmdpause ist falsch definiert, also entweder als Ganze Zahl oder wie in der commandref mit ":"
ZitatMit dem Attribut cmdpause <Sekunden für cmd_1>:<Sekunden für cmd_2>:... wird die Zeitspanne in Sekunden angegeben für eine Zwangspause seit der letzten Zustandsänderung. In der angegebenen Zeitspanne wird ein Kommando nicht ausgeführt, auch wenn die dazugehörige Bedingung wahr wird.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Morgennebel

Vielen Dank für den Hinweis...

Ich habe es umgestellt und werde es beobachten.

Ciao, -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

Morgennebel

Nochmals Danke für den Stupser in die richtige Richtung.

Der Fehler ist behoben.
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