Moin John, Moin @ all,
Für eine Vorlauftemperatursteuerung greife ich meine Ventilstellungen mit 39_VALVES.pm ab, und hier habe ich ein Problem.
Wenn alle Ventile geschlossen sind, steht valve_max natürlich auf 0, und das quittiert PID20 mit
alarm - no valve_max yet for Ventilstellung
um sicherzustellen, dass es nicht an VALVES liegt, habe ich mir einen dummy und ein at gebaut:
define alive dummy
attr alive room alive
attr alive setList 0 1
define at_alive at +*00:01:00 {if ("$value{alive}" == 0) {fhem("set alive 1")} else {fhem("set alive 0")}}
attr at_alive room alive
und diesen als Sensor definiert.
Wenn der dummy auf 1 steht funktioniert der PID20-Regler, wenn der dummy auf 0 steht kommt folgende Meldung:
alarm - no state yet for alive
Frage, ist da noch ein 60 cm Fehler, oder Bug oder future?
Gruß Joachim
Hallo Joachim,
such mal im 98_PID20.pm nach Alarm:
ich kann kein Fragment finden, das eine derartige Meldung fabriziert:
Zitatalarm - no state yet for alive
man findet :
"alarm - no $reading yet for $sensor"
"alarm - dead sensor"
"alarm - missing desired"
Du bist im falschen Modul ???
John
PS: zeig mal die Log-Ausgabe
Nein John,
bin ich nicht, siehe Screenshot.
Gruß Joachim
Ich bin beeindruckt.
"alarm - no $reading yet for $sensor"
ergibt mit alive:state
alarm - no state yet for alive
John
# $Id: 98_PID20.pm 7089 2014-11-29 10:58:10Z john99sr $
und das list:
Internals:
CFGFN ./FHEM/000_max.cfg
DEF alive:state Hz_PID_00_FW:desired
NAME Hz_PID_00_VLT
NR 432
NTFY_ORDER 50-Hz_PID_00_VLT
STATE alarm - no state yet for alive
TYPE PID20
Readings:
2015-11-12 20:51:32 actuation 21
2015-11-12 20:51:32 actuationCalc -3.12
2015-11-12 20:50:59 delta 39
2015-11-12 20:51:32 desired 40
2015-11-12 20:50:59 measured 1
2015-11-12 20:51:32 p_d 0
2015-11-12 20:51:32 p_i 0
2015-11-12 20:51:32 p_p -3.12
2015-11-12 20:51:32 state alarm - no state yet for alive
Helper:
actor Hz_PID_00_FW
actorCommand desired
actorErrorAction freeze
actorErrorPos 0
actorInterval 30
actorKeepAlive 86400
actorLimitLower 21
actorLimitUpper 40
actorThreshold 1
actorTimestamp 2015-11-12 19:08:43
actorValueDecPlaces 0
adjust
calcInterval 30
deltaGradient 0.0157056881980701
deltaOld 40
deltaOldTS 2015-11-12 19:45:01
deltaTreshold 0
desiredName desired
disable 0
factor_D 0.0
factor_I 0
factor_P 0.08
isWindUP 1
measuredName measured
reading state
regexp ^([\+,\-]?\d+\.?\d*$)
reverseAction 1
sensor alive
sensorTimeout 86400
stopped 0
updateInterval 30
Attributes:
disable 0
event-min-interval actuation:3540,actuationCalc:3540,delta:3540,desired:3540,measured:3540,p_d:3540,p_i:3540,p_p:3540
event-on-change-reading actuation,actuationCalc,delta,desired,measured,p_d,p_i,p_p
pidActorInterval 30
pidActorKeepAlive 86400
pidActorLimitLower 21
pidActorLimitUpper 40
pidActorValueDecPlaces 0
pidCalcInterval 30
pidDeltaTreshold 0
pidFactor_D 0.0
pidFactor_I 0
pidFactor_P 0.08
pidReverseAction 1
pidSensorTimeout 86400
pidUpdateInterval 30
room 00_PID20
zum nachstellen, wie oben geschrieben:
define alive dummy
attr alive room alive
attr alive setList 0 1
define at_alive at +*00:01:00 {if ("$value{alive}" == 0) {fhem("set alive 1")} else {fhem("set alive 0")}}
attr at_alive room alive
und den dummy als sensor.
Gruß Joachim
Ich kann das nachvollziehen.
Muss ich mir ansehen und melde mich sobald ich mehr weiss.
John
Danke,
habe jetzt auch ein Update gemacht, bin also auch auf der aktuellen Version.
Danke für deine Hilfe.
Gruß Joachim
Hallo Joachim,
wäre schön, wenn du die neue Version (V1.0.0.6) vorab testen könntest.
John
Geht los, Rückmeldung kommt vor 0:00 Uhr.
Gruß Joachim
Hallo John,
habe jetzt natürlich nicht auf weitere Nebenwirkungen, sondern nur auf mein Problem getestet.
Da funktioniert es auf 2 Systemen so wie es soll.
Vielen Dank für die schnelle Hilfe.
Gruß Joachim