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
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.
Vielen Dank für den Hinweis...
Ich habe es umgestellt und werde es beobachten.
Ciao, -MN
Nochmals Danke für den Stupser in die richtige Richtung.
Der Fehler ist behoben.