Hauptmenü

PID20

Begonnen von Benbaeck, 18 November 2024, 21:31:40

Vorheriges Thema - Nächstes Thema

Benbaeck

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.


betateilchen

Du hast ein Reihenfolgen-Problem in Deiner Konfiguration.

Der PID wird definiert, bevor die structure structure_WZ_HZG_Thermostat  existiert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benbaeck

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.

Benbaeck

Ich habe jetzt den PID20 gelöscht und anschließend nochmal neu definiert und siehe da es geht :-).
Danke für die Hilfe.

betateilchen

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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

@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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

betateilchen

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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

betateilchen

danke, schau ich mir bei Gelegenheit an.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Die vorgeschlagenen Änderungen wurden heute in das Modul übernommen.
Danke für die Zuarbeit.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

noansi

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.

Beta-User

Zitat von: betateilchen am 20 Dezember 2024, 16:40:51Danke für die Zuarbeit.
Gerne!

Danke für die Rückmeldung!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files