Fussbodenheizung mit PWM steuern

Begonnen von jamesgo, 24 September 2015, 08:28:49

Vorheriges Thema - Nächstes Thema

jamesgo

#810
Hallo,
ich hab nochmal an der Logik für maxOffTime gefeilt - nun sollte es auch für den P-Regler funktionieren.

PWMR entscheidet nun ob $maxOffTimeApply gesetzt wird bzw. es wird nur noch gesetzt wenn es keinen Heizbedarf gibt. Damit verschiebt sich die Entscheidung vom PWM in das PWMR Modul wo die Berechnungsart noch bekannt ist.

$maxOffTimeApply wird beim PID-Regler gesetzt wenn ($newpulse ==0) - das entspricht der bisherigen Logik.
Beim P-Regler wird es nur gesetzt wenn (Ist >= Soll).

Ich hab die beiden Module mal angehängt. Wer testen möchte bitte die Module von hier herunterladen.

@Johannes: wäre schön wenn du mit diesen beiden Module ausprobierst.

Grüße
Andy

dft606

Hallo Andy,

also mit der Modifikation in Zeile 905 hat alles wieder ganz normal funktioniert.
Teste jetzt die neuen Module.

Morgen Abend kann ich dann wieder berichten.


Gruß
Johannes

dft606

#812
Hallo Andy,

habe die beiden Dateien ersetzt und dann fhem mit "shutdown restart" neu gestartet.
So sieht dann die log aus:

2020.12.28 23:30:25 3: PWM Define FBH_PWM
2020.12.28 23:30:25 2: called PWM_Attr(set,FBH_PWM,overallHeatingSwitchThresholdTemp,<OWX_28_FF93176F1801:temperature:(\d+).*,25>)
2020.12.28 23:30:25 2: called PWM_Attr(set,FBH_PWM,room,<00_Heizung>)
2020.12.28 23:30:25 2: called PWM_Attr(set,FBH_PWM,valveProtectIdlePeriod,<30>)
2020.12.28 23:30:25 2: called PWM_Attr(set,FBH_PWM,verbose,<3>)
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3406.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3406.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3417.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3417.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3417.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3417.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3427.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3427.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3427.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3427.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3437.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3437.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3437.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3437.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3447.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3447.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3447.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3447.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3457.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3457.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3457.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3457.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3467.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3467.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3467.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3467.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3477.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3477.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3477.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3477.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3487.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3487.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3487.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3487.

2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3497.
2020.12.28 23:30:25 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3497.
2020.12.28 23:30:25 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3497.

2020.12.28 23:30:25 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3497.

2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3508.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3508.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3508.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3508.

2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3518.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3518.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3518.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3518.

2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3528.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3528.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3528.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3528.

2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3538.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3538.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3538.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3538.

2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3548.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3548.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3548.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3548.

2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3558.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3558.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3558.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3558.

2020.12.28 23:30:26 3: PWM Define PWM_Test
2020.12.28 23:30:26 2: called PWM_Attr(set,PWM_Test,room,<00_Heizung>)
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Initialize redefined at ./FHEM/93_PWMR.pm line 121, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_getDesiredTempFrom redefined at ./FHEM/93_PWMR.pm line 152, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTempFromRule redefined at ./FHEM/93_PWMR.pm line 192, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_CalcDesiredTemp redefined at ./FHEM/93_PWMR.pm line 282, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Get redefined at ./FHEM/93_PWMR.pm line 391, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Set redefined at ./FHEM/93_PWMR.pm line 422, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Define redefined at ./FHEM/93_PWMR.pm line 569, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_Undef redefined at ./FHEM/93_PWMR.pm line 885, <$fh> line 3572.
2020.12.28 23:30:26 1: PERL WARNING: Subroutine PWMR_SetRoom redefined at ./FHEM/93_PWMR.pm line 904, <$fh> line 3572.
2020.12.28 23:30:26 1: reload: Error:Modul 93_PWMR deactivated:
Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3572.

2020.12.28 23:30:26 0: Global symbol "$temperature" requires explicit package name (did you forget to declare "my $temperature"?) at ./FHEM/93_PWMR.pm line 1101, <$fh> line 3572.

2020.12.28 23:30:26 3: OWTHERM:  Device OWX_28_9ECDFFFFFFFF defined.
2020.12.28 23:30:26 1: Including ./log/fhem.save
2020.12.28 23:30:28 1: Messages collected while initializing FHEM:configfile: Cannot load module PWMR
Please define EG_Bad_GPIO_07 5fe84244-f33f-e90d-945e-4fe44bc7734145d6 first
Cannot load module PWMR
Please define EG_Kueche_GPIO_06 5fe8424c-f33f-e90d-f48f-547622d7d51bd2b3 first
Cannot load module PWMR
Please define EG_WC_GPIO_09 5fe8425d-f33f-e90d-f3cd-b792670479b3817d first
Cannot load module PWMR
Please define EG_Wohn_Esszimmer_GPIO_05 5fe8425e-f33f-e90d-c305-3291a584cea21812 first
Cannot load module PWMR
Please define KG_Arbeitszimmer_GPIO_13 5fe8425e-f33f-e90d-bad6-099316670f14c9f3 first
Cannot load module PWMR
Please define KG_Flur_GPIO_11 5fe8425e-f33f-e90d-5173-227971e4ba92d9e4 first
Cannot load module PWMR
Please define KG_Hobbyraum_GPIO_15 5fe8425f-f33f-e90d-b335-622a8b44f7b85abd first
Cannot load module PWMR
Please define KG_Kellerraum_GPIO_20 5fe8425f-f33f-e90d-865e-2a73741a0e3db766 first
Cannot load module PWMR
Please define KG_Spielzimmer_GPIO_12 5fe84260-f33f-e90d-0ea8-a12adb787a9ef197 first
Cannot load module PWMR
Please define OG_Bad_GPIO_10 5fe84260-f33f-e90d-2118-bb5ffa77650d5b2e first
Cannot load module PWMR
Please define OG_Flur_GPIO_16 5fe84261-f33f-e90d-0c66-f17715861dc025fa first
Cannot load module PWMR
Please define OG_Kizi_1_GPIO_17 5fe84261-f33f-e90d-4937-c5f19911257db62a first
Cannot load module PWMR
Please define OG_Kizi_2_GPIO_18 5fe84262-f33f-e90d-7aef-2d2485fcd174c296 first
Cannot load module PWMR
Please define OG_Kizi_3_GPIO_19 5fe84262-f33f-e90d-1327-f0cd5eb9d79efab5 first
Cannot load module PWMR
Please define OG_Schalfzimmer_GPIO_14 5fe84263-f33f-e90d-7a28-86e01bc21239bff6 first
Cannot load module PWMR
Please define EG_Flur_GPIO_08 5fe86469-f33f-e90d-355c-b1dd0509e11b47fc first
Cannot load module PWMR
Please define EG_Naehzimmer_GPIO_04 5fe8931c-f33f-e90d-7362-881b2801901dbe17 first



Alle PWMR Definitionen sind in FHEM nicht mehr zu sehen. In der fhem.cfg sind diese noch definiert.



Gruß
Johannes

dk3572

#813
Hallo,

wenn ich desired-temp manuell auf z.B. 21°C einstelle und während der manualTempDuration dann FrostProtect (6°C) einschalte, wird nur c_frostProtect auf 1 gesetzt, die desired-temp bleibt auf 21°C.
Ist das so gewollt?

ACTOR      FBHZ_Stellantrieb_Wohnzimmer
   DEF        PWM_FussbodenHeizung 1,0 WzSensor:temperature FBHZ_Stellantrieb_Wohnzimmer
   FUUID      5cc73d29-f33f-cd72-e3c7-86af3699b7c94b6e
   FVERSION   93_PWMR.pm:0.210300/2020-01-21
   INTERVAL   300
   IODev      PWM_FussbodenHeizung
   NAME       PWMR_Wohnzimmer
   NR         258
   STATE      ManualSetUntil 12:10:02
   TEMPSENSOR WzSensor:temperature
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      FBHZ_Stellantrieb_Wohnzimmer
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0
   c_frostProtect 1
   c_tempC    22
   c_tempD    21.5
   c_tempE    20.5
   c_tempFrostProtect 6
   c_tempN    20
   c_tempRule1 1-4 0200,D 0500,E 1230,D 1930,N
   c_tempRule2 5-5 0200,D 0500,E 1200,D 1930,N
   c_tempRule3 6-0 0500,D 1930,N
   c_tempRule4
   c_tempRule5
   c_tempRuleS E
   p_actor    FBHZ_Stellantrieb_Wohnzimmer
   p_factor   1,0
   p_pid     
   p_tsensor  WzSensor:temperature
   p_window   
   t_reading  temperature
   t_regexp   ([\d\.]+)
   t_sensor   WzSensor
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2020-12-29 08:57:35   PWMOnTime       03:18
     2020-12-29 08:57:35   PWMPulse        22
     2020-12-29 08:53:35   actorState      off
     2020-12-29 05:10:02   desired-temp    21.5
     2020-12-29 05:10:02   desired-temp-until 2020-12-29 12:10:02
     2020-12-29 08:57:35   desired-temp-used 21.5
     2020-12-29 08:57:35   energyused      000001111000000000000111100000
     2020-12-29 08:57:35   energyusedp     26.7
     2020-12-29 08:53:35   lastswitch      1609228415.58462
     2020-12-29 05:10:04   manualTempDuration 60
     2020-12-29 08:57:35   oldpulse        0.22
     2020-12-29 05:10:02   state           ManualSetUntil 12:10:02
     2020-12-29 08:57:35   temperature     21.03
     2020-12-27 15:40:44   timer1_Mo       02:00-05:00,D,21.5 05:00-12:30,E,20.5 12:30-19:30,D,21.5
     2020-12-27 15:40:44   timer2_Di       02:00-05:00,D,21.5 05:00-12:30,E,20.5 12:30-19:30,D,21.5
     2020-12-27 15:40:44   timer3_Mi       02:00-05:00,D,21.5 05:00-12:30,E,20.5 12:30-19:30,D,21.5
     2020-12-27 15:40:44   timer4_Do       02:00-05:00,D,21.5 05:00-12:30,E,20.5 12:30-19:30,D,21.5
     2020-12-27 15:40:44   timer5_Fr       02:00-05:00,D,21.5 05:00-12:00,E,20.5 12:00-19:30,D,21.5
     2020-12-27 15:40:44   timer6_Sa       05:00-19:30,D,21.5
     2020-12-27 15:40:44   timer7_So       05:00-19:30,D,21.5
   helper:
Attributes:
   DbLogExclude .*
   autoCalcTemp 1
   disable    0
   event-on-update-reading desired-temp,state,temperature
   frostProtect 1
   icon       temp_control
   room       Heizung
   tempDay    21.5
   tempEnergy 20.5
   tempNight  20
   tempRule1  Mo-Do 2:00,D 5:00,E 12:30,D 19:30,N
   tempRule2  Fr 2:00,D 5:00,E 12:00,D 19:30,N
   tempRule3  Sa-So 5:00,D 19:30,N


Danke und VG Dieter

jamesgo

Hallo Johannes,
ich hab nur einen reload gemacht ... da kam der Fehler leider nicht :-(
Der Fehler ist behoben und die Datei neu hochgeladen.

Grüße
Andy

Zitat von: dft606 am 28 Dezember 2020, 23:38:01
Hallo Andy,

habe die beiden Dateien ersetzt und dann fhem mit "shutdown restart" neu gestartet.
So sieht dann die log aus:


Alle PWMR Definitionen sind in FHEM nicht mehr zu sehen. In der fhem.cfg sind diese noch definiert.



Gruß
Johannes

jamesgo

Hallo Dieter,
ja, das ist so gewollt. Das manuelle Setzen einer Temperatur hat Vorrang vor "FrostProtect".
D.h. in der Übergangszeit deaktiviert man einen Raum mittels "FrostProtect" und kann dann trotzdem durch manuelles setzen der Soll Temperatur (für einen definierten Zeitraum) heizen.

Grüße
Andy

Zitat von: dk3572 am 29 Dezember 2020, 08:59:03
Hallo,

wenn ich desired-temp manuell auf z.B. 21°C einstelle und während der manualTempDuration dann FrostProtect (6°C) einschalte, wird nur c_frostProtect auf 1 gesetzt, die desired-temp bleibt auf 21°C.
Ist das so gewollt?


Danke und VG Dieter

dk3572

Zitat von: jamesgo am 29 Dezember 2020, 10:47:43
Hallo Dieter,
ja, das ist so gewollt. Das manuelle Setzen einer Temperatur hat Vorrang vor "FrostProtect".
D.h. in der Übergangszeit deaktiviert man einen Raum mittels "FrostProtect" und kann dann trotzdem durch manuelles setzen der Soll Temperatur (für einen definierten Zeitraum) heizen.

Grüße
Andy

Hallo Andy,

so gesehen macht es in der Tat Sinn.

Danke für die Rückmeldung und guten Rutsch.

VG Dieter

dft606

Zitat von: jamesgo am 29 Dezember 2020, 10:27:52
Hallo Johannes,
ich hab nur einen reload gemacht ... da kam der Fehler leider nicht :-(
Der Fehler ist behoben und die Datei neu hochgeladen.

Grüße
Andy

Hallo Andy,

jetzt läuft es mit den von dir bereitgestellten Dateien wieder wie gewohnt.

Einen guten Rutsch ins neue Jahr!


Gruß
Johannes

BOFH

Frohes neues Jahr, btw.

Darf ich mal den Profi Fragen ( also @andy :) ) was genau ist denn jetzt empfehlenswerter? mit oder ohne P Regler?
der P Reglner interpretiert ja wohl mehrere zurückliegende messwerte und entscheided darauf hin? Und ohne ist es banale aktuelle werte prüfen ?
sehe ich doch richtig?!

Lieben Gruß
RasPi 4
ZWave.me ZME_UZB (Fibaro Auge Gen.2)/ HM-USB2 (Thermostat | Hutschienen Relais | 1-/2fach Schalter) / Enigma2 / PhilipsTV / Philips HUE (GO|Bulb|Stripe (plus)) / Somfy IO Rollos / BOSCH HSG636XS6 / SONOS (P1, P3, P5 2.Gen, SUB, Bar)

jamesgo

Hallo,

"mit oder ohne P Regler" ist nicht ganz richtig. Es gibt den banalen P-Regler und zwei PID-Regler.
Ich persönlich empfehle den PID Regler Typ 1. (anhängen von "dummy 1:0.8:0.3,22:0.5,10" an die Definition des PWMR Objektes).

Die erste Implementierung der Module kannte nur den P-Regler. Der P-Regler kennt nur die aktuelle Temperaturdifferenz. Die kleinen Pulse kurz vor dem Erreichen der Solltemperatur haben meist dazu geführt das die Solltemperatur nur zögerlich erreicht wurde und beim Absinken der Temperatur "zu spät" nachgeheizt wurde.

Mit einer I-Komponente bei der Regelung kann man quasi in die Vergangenheit schauen. Das bedeutet: eine geringe Unterschreitung der Solltemperatur mach den Puls immer größer, je länger dieser Zustand andauert.

Die D-Komponente vergleicht nicht mit der aktuellen Temperatur sondern mit einer aus der Vergangenheit (10 Werte, jede Minute berechnen verwendet also die Temperaturdifferenz vor 10 Minuten)

Die Erweiterung um die PID Funktionalität (Typ 1) führt bei mir definitiv zu einem schnelleren erreichen und genaueren halten der Wunschtemperatur. Es gibt kein Takten von 50% mehr sondern 100% bis sich die Temperatur ändert und dann wird reduziert. (die Anzahl der Temperaturen die für die Berechnung herangezogen werden ist begrenzt und der I-Wert liegt zwischen -1 und 1 (also Vollbremsung bis Vollgas))

Den Typ 2 habe ich nur implementiert da es jemanden im Forum gab der hartnäckig darauf bestand das die Typ 1 Implementierung nicht dem klassischen PID Regler entspricht - und damit schlicht FALSCH ist. (alle Temperaturen aus der Vergangenheit werden berücksichtigt und der I-Wert liegt zwischen 0 und 1 - das Bremsen macht also nur der D-Anteil)

Viele Grüße
Andy


Zitat von: BOFH am 04 Januar 2021, 12:00:37
Frohes neues Jahr, btw.

Darf ich mal den Profi Fragen ( also @andy :) ) was genau ist denn jetzt empfehlenswerter? mit oder ohne P Regler?
der P Reglner interpretiert ja wohl mehrere zurückliegende messwerte und entscheided darauf hin? Und ohne ist es banale aktuelle werte prüfen ?
sehe ich doch richtig?!

Lieben Gruß

phys1

Hallo,

nach langer Vorbereitungszeit für die Hardware habe ich nun endlich die Steuerung meiner Fußbodenheizung mit den Modulen PWM und PWMR in Betrieb genommen. Beide Module sind wirklich gut gelungen, danke dafür. Es gibt aber doch ein paar Dinge, die nicht optimal funktionieren und auch einen Verbesserungsvorschlag von mir:
PID=1 Regler:
1. Der P-Wert sollte auch negativ werden dürfen, wenn die Temperatur über dem Sollwert liegt. Z.B. um bei fallender Tepmeratur den D-Wert ausgleichen zu können.
2. Da der I-Wert nur zeitlich begrenzt aufsummiert, kann er im Gleichgewicht (Ist-Temp = Soll-Temp) keinen statischen DC-Anteil aufbauen. Sinnvoll wäre daher ein zusätzlicher Offset, mit dem man die Grundlast vorgeben kann (z.B. 0,5 d.h. 50%). Der Regler muss dann nur noch die Abweichung davon ausgleichen. Der Offset sollte als Attribut einstellbar sein, damit man ihn leicht von außen beeinfussen kann.
Probleme:
1. Die clevere Verhinderung der Auskühlung des Bodens mittels maxOffTime wird manchmal nicht aktiv. Ich habe das untersucht und den Fehler gefunden: die Rückmeldung des Aktors wird zwar per Regex überprüft, das Ergebnis aber nicht in das Reading actorState geschrieben. Der Vergleich auf "off" schlägt fehl, wenn der Aktor z.B. wie in meinem Fall 0 zurückliefert.
2. Wenn man per defmod ein paar mal die Regelparamer neu einjustiert wird jedesmal die Schleife zum Einlesen der Temperatur (oder auch die Haupschleife von PWM) ein weiteres Mal gestartet, so dass man dann viel zu viele parallele Berechnungen hat. Neustart von FHEM behebt das Problen natürlich.
3. Attribut loglevel wird von FHEM nicht mehr untersützt, sollte also aus der Attributliste entfernt werden.

Habe meine Vorschläge und Fixes mal eingebracht und bitte den Autor des Moduls das zu prüfen, s. angehängte Datei.
Viele Grüße
phys1

jamesgo

Hallo phys1,

für deinen ersten Post im Forum und der Tatsache dass du die Steuerung (nach eigener Aussage) grade erst zum laufen gebracht hast, hast du ja schon (fast) alle Fehler gefunden und das gesamte Verbesserungspotential ausgeschöpft.

Ich werde mir das in Ruhe anschauen. Im Moment gehe ich davon aus dass ich die Änderungen an der Regelung nicht übernehmen werde.

VG




diff 93_PWMR.pm ~/Downloads/
8c8
< # $Id: 93_PWMR.pm 16121 2018-02-08 14:55:52Z jamesgo $
---
> # $Id$
58c58,68
<
---
> # 19.01.21 AKE some additions:
> #             fix actor state was evaluated by a_regexp_on from define, but the result was not written back to the reading
> #             add attribute PID1_offset as preset for the PID=1 control
> #             add larger clipping limits for the P,I,D terms of the PID=1 control (P may also be negative now)
> #             add if PWMR device or IODev are disabled, the actor state is reset to unknown and the I and D-Buffers are emptied
> #             add get previousTemps: some additional information is output (if there are at least 2 buffer values)
> #             add if the desired temp is read from an external device the loop CalcDesiredTemp uses the same INTERVAL as the IODev
> #             add if FHEM is started the loop CalcDesiredTemp is started 2 secs earlier than the PWM loop
> #             fix corrected the default value of maxOffTimePeriod (30 min) in the commandref
> #             fix defmod will no longer trigger a second loop CalcDesiredTemp
> #             fix depreciated attr loglevel deleted (standard attr verbose must be used)
130c140
<   $hash->{AttrList}  = "disable:1,0 loglevel:0,1,2,3,4,5 ".
---
>   $hash->{AttrList}  = "disable:1,0 ".
133a144
> "PID1_offset:0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8 ".
304a316,329
>   # If this device or the IODevice have been disabled, the actor state
>   # and the I- and D-Buffer are no longer valid and have to be reset
>   my $iodev = $hash->{IODev};
>   my $IODev_Disabled = (defined($iodev->{NAME})&&IsDevice($iodev->{NAME},"PWM")&&IsDisabled($iodev->{NAME}))? 1:0;
>   if (IsDisabled($name) || $IODev_Disabled) {
>     readingsSingleUpdate ($hash, "actorState", "unknown", 1); # forces PWMR_ReadRoom to read actorState from device when enabled again
>     if ($hash->{c_PID_useit} != 0) {
>       delete ($hash->{helper}{PID_I_previousTemps}) if (defined (($hash->{helper}{PID_I_previousTemps})));
>       delete ($hash->{helper}{PID_D_previousTemps}) if (defined (($hash->{helper}{PID_D_previousTemps})));
>       $hash->{helper}{PID_I_previousTemps} = [] if ($hash->{c_PID_useit} == 1);
>       $hash->{helper}{PID_D_previousTemps} = [];
>     }
>   }
>
401,404c426,459
<     $msg .= "IBuffer: ".join (" ", @{$hash->{helper}{PID_I_previousTemps}})."\n" if (defined ($hash->{helper}{PID_I_previousTemps}));
<     $msg .= "DBuffer: ".join (" ", @{$hash->{helper}{PID_D_previousTemps}})."\n" if (defined ($hash->{helper}{PID_D_previousTemps}));
<
<     return $msg
---
>     if (defined ($hash->{helper}{PID_I_previousTemps})) {
>       my $time_span;
>       my $num = scalar (@{$hash->{helper}{PID_I_previousTemps}});
>       my $ISum = 0;
>       if ($num > 1) {
> my $iodevice = $hash->{IODev};
> my $interval = $iodevice->{INTERVAL}; # interval from PWM
> $time_span = ($num - 1) * $interval;
> $time_span = sprintf("%02s:%02s:%02s", int($time_span/3600), int(($time_span%3600)/60), int(($time_span)%60));
> for (my $i=0; $i < $num; $i+=1) {
>   $ISum += $hash->{helper}{PID_I_previousTemps}[$i];
> }
> $ISum /= $num;
> $ISum = sprintf("%.02f", $ISum);
>       }
>       $msg .= "IBuffer: ".join (" ", @{$hash->{helper}{PID_I_previousTemps}})
>            .($num > 1 ? " ($num values, avg $ISum, $time_span time span)":"")."\n";
>     }
>     if (defined ($hash->{helper}{PID_D_previousTemps})) {
>       my $time_span;
>       my $deltaT;
>       my $num = scalar (@{$hash->{helper}{PID_D_previousTemps}});
>       if ($num > 1) {
> my $iodevice = $hash->{IODev};
> my $interval = $iodevice->{INTERVAL}; # interval from PWM
> $time_span = ($num - 1) * $interval;
> $time_span = sprintf ("%02s:%02s:%02s", int($time_span/3600), int(($time_span%3600)/60), int(($time_span)%60));
> $deltaT = $hash->{helper}{PID_D_previousTemps}[$num-1] - $hash->{helper}{PID_D_previousTemps}[0];
> $deltaT = sprintf("%.02f", $deltaT);
>       }
>       $msg .= "DBuffer: ".join (" ", @{$hash->{helper}{PID_D_previousTemps}})
>            .($num > 1 ? " ($num values, delta-T $deltaT, $time_span time span)":"")."\n";
>     }
>     return $msg;
585,587c640,642
<   my $factor  = ((int(@a) > 2) ? $a[3] : 0.8);
<   my $tsensor = ((int(@a) > 3) ? $a[4] : "");
<   my $actor   = ((int(@a) > 4) ? $a[5] : "");
---
>   my $factor  = ((int(@a) > 3) ? $a[3] : 0.8);
>   my $tsensor = ((int(@a) > 4) ? $a[4] : "");
>   my $actor   = ((int(@a) > 5) ? $a[5] : "");
590a646,647
>   my $defmod = defined($hash->{TEMPSENSOR}) ? 1 : 0;#if coming from devmod $hash contains already the previous variables
>
684a742
>     delete ($hash->{c_PID1_offset})               if (defined (($hash->{c_PID1_offset})));
768a827
>     delete ($hash->{c_PID1_offset})             if (defined (($hash->{c_PID1_offset})));
877,878c936,937
<   if($hash->{INTERVAL}) {
<     InternalTimer(gettimeofday()+10, "PWMR_CalcDesiredTemp", $hash, 0);
---
>   if($hash->{INTERVAL} && !$defmod) {# gettimeofday+8 will start 2 sec before PWM timer to read desired-temp (in case of external device) just before PWM calculation
>     InternalTimer(gettimeofday()+8, "PWMR_CalcDesiredTemp", $hash, 0);
997a1057,1058
>     my $a_regexp_on = $room->{a_regexp_on};
>
1000c1061
<       $actorV =  $defs{$room->{actor}}->{STATE};
---
>       $actorV = ($defs{$room->{actor}}->{STATE} =~ /^$a_regexp_on$/) ? "on" : "off";
1003c1064
<       $actorV =  $defs{$room->{actor}}->{STATE};
---
>       $actorV = ($defs{$room->{actor}}->{STATE} =~ /^$a_regexp_on$/) ? "on" : "off";
1006c1067
<       $actorV = $room->{READINGS}{actorState}{VAL};
---
>       $actorV = ($defs{$room->{actor}}->{READINGS}{state}{VAL} =~ /^$a_regexp_on$/) ? "on" : "off";
1010,1019c1071
<       $actorV = $room->{READINGS}{actorState}{VAL};
<     }
<
<     #my $actorVOrg = $actorV;
<
<     my $a_regexp_on = $room->{a_regexp_on};
<     if ($actorV =~ /^$a_regexp_on$/) {
<       $actorV = "on";
<     } else {
<       $actorV = "off";
---
>       $actorV = ($room->{READINGS}{actorState}{VAL} =~ /^$a_regexp_on$/) ? "on" : "off";
1069a1122
>   readingsBulkUpdate ($room,  "actorState", $actorV) if (defined($room->{actor}));
1143c1196
<     my $PVal = $room->{c_PID_PFactor} * maxNum (0, $deltaTempPID);
---
>     my $PVal = $room->{c_PID_PFactor} * $deltaTempPID;
1147,1149c1200
<     $PVal    = minNum (1, sprintf ("%.2f", $PVal));
<     $IVal    = minNum (1, sprintf ("%.2f", $IVal));
<     $DVal    = minNum (1, sprintf ("%.2f", $DVal));
---
>     my $clipping = 1.2; # +/-clipping limit for P,I,D
1151c1202,1208
<     $IVal    = maxNum (-1, $IVal);
---
>     $PVal    = minNum ($clipping, sprintf ("%.2f", $PVal));
>     $IVal    = minNum ($clipping, sprintf ("%.2f", $IVal));
>     $DVal    = minNum ($clipping, sprintf ("%.2f", $DVal));
>
>     $PVal    = maxNum (-$clipping, $PVal);
>     $IVal    = maxNum (-$clipping, $IVal);
>     $DVal    = maxNum (-$clipping, $DVal);
1154c1211,1212
<     $newpulsePID     = minNum ($MaxPulse, sprintf ("%.2f", $newpulsePID));
---
>     $newpulsePID    += $room->{c_PID1_offset} if (defined($room->{c_PID1_offset}));
>     $newpulsePID     = minNum ($MaxPulse, $newpulsePID);
1569a1628
>       $hash->{INTERVAL} = 300;
1581c1640,1642
<     }
---
>     } elsif ($attrname eq "PID1_offset") {                        # Offset for PID=1
>       delete($hash->{c_PID1_offset});
>     }
1635a1697,1698
>     my $iodev = $hash->{IODev};
>     $hash->{INTERVAL} = defined($iodev->{INTERVAL}) ? $iodev->{INTERVAL} : 300; # use same interval as PWM
1706a1770,1779
>   } elsif ($attrname eq "PID1_offset") {                        # Offset for PID=1
> if ($attrval < 0) {
>   $hash->{c_PID1_offset} = 0;
>   $_[3] = $hash->{c_PID1_offset};
> } elsif ($attrval > 0.8) {
>   $hash->{c_PID1_offset} = 0.8;
>   $_[3] = $hash->{c_PID1_offset};
> } else {
>   $hash->{c_PID1_offset} = $attrval;
> }
1982c2055
<         This room will be forced to "on" for 60 Minutes after 4 Hours being in state "off".<br>
---
>         This room will be forced to "on" for 30 Minutes after 4 Hours being in state "off".<br>
1984,1985d2056
<         This room will be forced to "on" for 60 Minutes after 4 Hours being in state "off". Only applies is desired temp is currently derived from tempDay. <br>
< maxOffTime 4:00,D,0:30<br>
1986a2058,2059
> maxOffTime 4:00,D,0:40<br>
>         This room will be forced to "on" for 40 Minutes after 4 Hours being in state "off". Only applies is desired temp is currently derived from tempDay. <br>
1988c2061,2069
<         This room will be forced to "on" for 60 Minutes after 4 Hours being in state "off". Only applies is desired temp is currently derived from tempDay or tempCosy or tempEnergy (=not tempNight). <br>
---
>         This room will be forced to "on" for 30 Minutes after 4 Hours being in state "off". Only applies is desired temp is currently derived from tempDay or tempCosy or tempEnergy (=not tempNight). <br>
>         </li><br>
>
>     <li>PID1_offset<br>
>         Defines an offset for the PID=1 control. Pulse is calculated as P+I+D+offset.<br>
> Useful as the time limited integrator of the PID=1 cannot build a DC offset in equilibrium.<br>
> The offset should be chosen according to the mean heating requirement.<br>
>         Example: PID1_offset 0.5<br>
> This would add a 50% offset to the PID control.

phys1

Hallo Andy,

danke für deine Bereitschaft meine Änderungen anzuschauen. Obwohl ich es begrüßen würde, wenn du alles übernehmen würdest, könnte ich natürlich auch mit meiner privaten Version weiter machen.
Ja, im Fehler suchen war ich schon immer gut ;)
Und die Inbetriebnahme hat schon so seine vier Wochen gedauert....
(Bei Bedarf können wir die PID=1 Erweiterung auch per PM diskutieren.)

Viele Grüße
phys1

jamesgo

Habe gerade eine neue Version mit fixes für die von phys1 gefundenen Fehler hochgeladen.

zu 1) Reading actorState wird nun richtig gesetzt wenn ein regex verwendet wird.
Ein Event wird aber nur generiert wenn PWM den Wert setzt - nicht wenn der Aktor ausgelesen wird.

zu 2) verhindern dass PWMR_CalcDesiredTemp mehrfach getriggert wird durch verwenden von RemoveInternalTimer

zu 3) ja, loglevel ist depricated

Die Logik für den PID Regler ist unverändert.

BOFH

#824
Mal so als schnellschuß,

mir fällt heute auf wie unschön warm es ist. Anbei ein Screenshot vom KZ ...

maxOffTime
2:00,CDN,0:30


Nachts 18°  Rest 21°

dennoch heißt er s. Screenshot



2021.01.25 00:50:31 3: PWM_CalcRoom pwm_KZ: F2 new on
2021.01.25 00:50:31 3: PWM_Calculate pwm_KZ: F0 stay unchanged off: (99 < 180 sec)
2021.01.25 00:51:31 3: PWM_CalcRoom pwm_KZ: F18 maxOffTime protection (possible)
2021.01.25 00:51:31 3: PWM_Calculate pwm_KZ: F98 switch on (pulse=1)
2021.01.25 00:51:32 2: PWMR_SetRoom pwm_KZ: set SZ_RELAI2_Sw_02 on
2021.01.25 00:52:32 3: PWM_CalcRoom pwm_KZ: F15 maxOffTime continue
...
...
...
2021.01.25 01:20:39 3: PWM_CalcRoom pwm_KZ: F15 maxOffTime continue
2021.01.25 01:21:39 3: PWM_CalcRoom pwm_KZ: F16 maxOffTime off
2021.01.25 01:21:39 3: PWM_Calculate pwm_KZ: F99 switch off (pulse=1)
2021.01.25 01:21:40 2: PWMR_SetRoom pwm_KZ: set SZ_RELAI2_Sw_02 off
2021.01.25 01:22:39 3: PWM_CalcRoom pwm_KZ: F7 new on
2021.01.25 01:22:39 3: PWM_Calculate pwm_KZ: F0 stay unchanged off: (99 < 180 sec)
2021.01.25 01:23:39 3: PWM_CalcRoom pwm_KZ: F8 stay off

RasPi 4
ZWave.me ZME_UZB (Fibaro Auge Gen.2)/ HM-USB2 (Thermostat | Hutschienen Relais | 1-/2fach Schalter) / Enigma2 / PhilipsTV / Philips HUE (GO|Bulb|Stripe (plus)) / Somfy IO Rollos / BOSCH HSG636XS6 / SONOS (P1, P3, P5 2.Gen, SUB, Bar)