Hallo zusammen,
ich bin gerade dabei meine Heizungen auf das PID20 Modul umzustellen.
Habe mir zum testen ein Raum umgestellt, der soweit auch super funktioniert, bis ich FHEM neustarte.
Nach dem neustart bekommen ich folgende Meldungen im Log.
PID20 WZ_HZG_Regler: Define.236 WZ_HZG_Regler: Unknown actor device structure_WZ_HZG_Thermostat specified
PERL WARNING: Use of uninitialized value $sensorName in string ne at ./FHEM/98_PID20.pm line 279, line 26434.
Der Regler hat im State folgenden Fehler und läuft auch nicht mehr los.
PID defined with errors! See logfile for details.
Wenn ich die DEF bearbeite und ohne Änderung speichere verschwindet dieses Fehler und der Regler beginnt zu arbeiten.
List vom PID20
[code]define WZ_HZG_Regler PID20 WZ_HZG_Raumfuehler:temperature structure_WZ_HZG_Thermostat:dim
attr WZ_HZG_Regler DbLogExclude .*
attr WZ_HZG_Regler DbLogInclude desired,measured,actuation
attr WZ_HZG_Regler devStateStyle style="text-align:left"
attr WZ_HZG_Regler event-on-change-reading desired,measured,actuation,state
attr WZ_HZG_Regler pidActorErrorAction errorPos
attr WZ_HZG_Regler pidActorErrorPos 10
attr WZ_HZG_Regler pidActorKeepAlive 3600
attr WZ_HZG_Regler pidActorLimitLower 0
attr WZ_HZG_Regler pidActorLimitUpper 99
attr WZ_HZG_Regler pidActorTreshold 5
attr WZ_HZG_Regler pidActorValueDecPlaces 0
attr WZ_HZG_Regler pidFactor_I 0.2
attr WZ_HZG_Regler pidFactor_P 25
attr WZ_HZG_Regler pidSensorTimeout 7200
attr WZ_HZG_Regler room Obergeschoss->Wohnzimmer
attr WZ_HZG_Regler stateFormat {"".ReadingsNum($name,"measured",0)." °C | ".ReadingsNum($name,"desired",0)." °C<br>".ReadingsNum($name,"actuation",0)." % (".ReadingsVal($name,"state","").")"}
# DEF WZ_HZG_Raumfuehler:temperature structure_WZ_HZG_Thermostat:dim
# FUUID 672739ee-f33f-c550-df8d-b12f8d1eece116eb
# FVERSION 98_PID20.pm:0.287540/2024-04-05
# NAME WZ_HZG_Regler
# NR 410
# NTFY_ORDER 50-WZ_HZG_Regler
# STATE PID defined with errors! See logfile for details.
# TYPE PID20
# VERSION 1.0.0.10
# READINGS:
# 2024-11-18 21:17:11 actuation 0
# 2024-11-18 21:17:11 actuationCalc -45.3600000000004
# 2024-11-18 21:17:11 delta -2.3
# 2024-11-18 21:17:11 desired 20
# 2024-11-18 21:17:11 measured 22.3
# 2024-11-18 21:17:11 p_d 0
# 2024-11-18 21:17:11 p_i 12.1399999999996
# 2024-11-18 21:17:11 p_p -57.5
# 2024-11-18 21:17:48 state PID defined with errors! See logfile for details.
# helper:
#
setstate WZ_HZG_Regler PID defined with errors! See logfile for details.
setstate WZ_HZG_Regler 2024-11-18 21:17:11 actuation 0
setstate WZ_HZG_Regler 2024-11-18 21:17:11 actuationCalc -45.3600000000004
setstate WZ_HZG_Regler 2024-11-18 21:17:11 delta -2.3
setstate WZ_HZG_Regler 2024-11-18 21:17:11 desired 20
setstate WZ_HZG_Regler 2024-11-18 21:17:11 measured 22.3
setstate WZ_HZG_Regler 2024-11-18 21:17:11 p_d 0
setstate WZ_HZG_Regler 2024-11-18 21:17:11 p_i 12.1399999999996
setstate WZ_HZG_Regler 2024-11-18 21:17:11 p_p -57.5
setstate WZ_HZG_Regler 2024-11-18 21:17:48 state PID defined with errors! See logfile for details.
Du hast ein Reihenfolgen-Problem in Deiner Konfiguration.
Der PID wird definiert, bevor die structure structure_WZ_HZG_Thermostat existiert.
Hallo betateilchen,
so etwas in diese Richtung hatte ich schon fast vermutet.
Wie bekomme ich das in die richtige Reihenfolge?
Wobei ich mir eigentlich sicher bin, dass ich z.b den Raumfühler lange vor dem PID angelegt habe.
Ich habe jetzt den PID20 gelöscht und anschließend nochmal neu definiert und siehe da es geht :-).
Danke für die Hilfe.
Zitat von: Benbaeck am 18 November 2024, 21:44:03Wobei ich mir eigentlich sicher bin, dass ich z.b den Raumfühler lange vor dem PID angelegt habe.
Der Sensor war ja auch nicht das Problem, sondern der Aktor.
Steht doch im Klartext in der Fehlermeldung:
ZitatUnknown actor device structure_WZ_HZG_Thermostat specified
@betateilchen:
Wäre es nicht sinnvoller, diese Gültigkeitsprüfung nur nach $init_done zu machen (sonst Timer oder Notify/global)? Dann sind ja auch die Readings bekannt, und im Log landen keine (zumindest auf den ersten Blick) irreführenden Meldungen.
Könnte man sicher machen, aber es ist halt wie immer eine Zeitfrage.
Immerhin habe ich das Modul ja vor einiger Zeit schon so umgebaut, dass der PID zumindest angelegt wird. Früher wurde das define komplett abgebrochen und nach dem FHEM Neustart waren dann die devices gar nicht mehr vorhanden, wenn zwischenzeitlich ein "save config" ausgeführt wurde.
Eventuell hilft ja schon sowas auf Anwenderseite (ungetestet):
define n_pidRestart notify global:INITIALIZED set TYPE=PID20 restart
Zitat von: betateilchen am 19 November 2024, 11:03:14Könnte man sicher machen, aber es ist halt wie immer eine Zeitfrage.
Anbei ein Vorschlag dazu.
danke, schau ich mir bei Gelegenheit an.
Die vorgeschlagenen Änderungen wurden heute in das Modul übernommen.
Danke für die Zuarbeit.
Hallo betateilchen,
ich vermute einen Schreibfehler mit fehlendem n in Changeset 29441
229 if ( ReadingsVal( $sensor, $reading, 'unknownReading' ) eq 'unkownReading' )
und vermute stark
229 if ( ReadingsVal( $sensor, $reading, 'unknownReading' ) eq 'unknownReading' )
war gemeint.
Gruß, Ansgar.
Zitat von: betateilchen am 20 Dezember 2024, 16:40:51Danke für die Zuarbeit.
Gerne!
Danke für die Rückmeldung!
Danke fürs fixen.
Jetzt hab ich noch einmal eine Frage.
Gibt es irgendeine Möglichkeit den Regler zu deaktivieren?
Bei disable bleibt er auf seinem Wert stehen.
Blick in die commandref hilft manchmal...
set <pidName> stop