FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Benbaeck am 18 November 2024, 21:31:40

Titel: PID20
Beitrag von: Benbaeck am 18 November 2024, 21:31:40
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 specifiedPERL 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.

Titel: Aw: PID20
Beitrag von: betateilchen am 18 November 2024, 21:40:19
Du hast ein Reihenfolgen-Problem in Deiner Konfiguration.

Der PID wird definiert, bevor die structure structure_WZ_HZG_Thermostat  existiert.
Titel: Aw: PID20
Beitrag von: Benbaeck am 18 November 2024, 21:44:03
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.
Titel: Aw: PID20
Beitrag von: Benbaeck am 18 November 2024, 21:58:00
Ich habe jetzt den PID20 gelöscht und anschließend nochmal neu definiert und siehe da es geht :-).
Danke für die Hilfe.
Titel: Aw: PID20
Beitrag von: betateilchen am 18 November 2024, 22:24:09
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
Titel: Aw: PID20
Beitrag von: Beta-User am 19 November 2024, 10:35:16
@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.
Titel: Aw: PID20
Beitrag von: betateilchen am 19 November 2024, 11:03:14
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
Titel: Aw: PID20
Beitrag von: Beta-User am 29 November 2024, 09:03:34
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.
Titel: Aw: PID20
Beitrag von: betateilchen am 29 November 2024, 14:08:57
danke, schau ich mir bei Gelegenheit an.
Titel: Aw: PID20
Beitrag von: betateilchen am 20 Dezember 2024, 16:40:51
Die vorgeschlagenen Änderungen wurden heute in das Modul übernommen.
Danke für die Zuarbeit.
Titel: Aw: PID20
Beitrag von: noansi am 21 Dezember 2024, 13:49:01
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.
Titel: Aw: PID20
Beitrag von: Beta-User am 21 Dezember 2024, 16:10:21
Zitat von: betateilchen am 20 Dezember 2024, 16:40:51Danke für die Zuarbeit.
Gerne!

Danke für die Rückmeldung!
Titel: Aw: PID20
Beitrag von: Benbaeck am 10 Februar 2025, 17:20:40
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.
Titel: Aw: PID20
Beitrag von: betateilchen am 10 Februar 2025, 17:45:45
Blick in die commandref hilft manchmal...

set <pidName> stop