Fussbodenheizung mit PWM steuern

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

Vorheriges Thema - Nächstes Thema

My-FHEM

#150
@Andy

Im Anhang die PID20 Config für den Heizkreis des Bades. Der Ausgabewert wird durch
Multiplikation mit 7.2 in  die On-Zeitdauer in sec umgerechnet . Mein PWM Zyklus ist 720 sec = 100% on.

Die PID Parameter bedürfen sicherlich weiterer Optimierung. Habe sie im laufe der Jahre heuristisch
eingestellt.

Die Ist Werte stammen von einem  HM-TC-IT-WM-W-EU welches von einer anderen FHEM Instanz ausgelesen
werden. An den Heizkreis FHEM werden sie via FHEM2FHEM Kopplung übertragen.

define Bad_pid PID20 clo_Hz.Bd.Th_Climate:mT_gld:([\d\.]*) Badact:vBad
attr Bad_pid pidActorErrorPos 25
attr Bad_pid pidActorLimitLower 15
attr Bad_pid pidActorLimitUpper 90
attr Bad_pid pidActorTreshold 0
attr Bad_pid pidActorValueDecPlaces 1
attr Bad_pid pidCalcInterval 720
attr Bad_pid pidDesiredName desired-temp
attr Bad_pid pidFactor_D 18
attr Bad_pid pidFactor_I 0.35
attr Bad_pid pidFactor_P 75
attr Bad_pid pidMeasuredName mT_gld
attr Bad_pid pidUpdateInterval 360
attr Bad_pid room BAD


Der PWM Zyklus wird extern von fhem über cron Scripte erzeugt. Mit deinem Modulen
könnte man die ganze Angelegenheit komplett in FHEM umsetzen.

Gruss

jamesgo

#151
Hallo,

teste gerade eine Version mit PID in meiner Produktiv Umgebung für zwei Räume :-)

Deine PID Werte beziehen sich auf 0..100, meine auf 0..1.

Verwende gerade: P=0.8, I=1, D=0 ... das würde bei deinen Werten 0.75, 0.0035, 0.18 entsprechen.

Allerdings berechne ich alle 60 Sekunden und bei dir ist pidUpdateInterval = 360 = 6 Minuten.

Ich muss das mal ein bisschen laufen lassen und auswerten. Aber unsere "I" Konstanten weichen ziemlich ab.

Bei 1 Grad Abweichung hättest du einen Puls (durch den P-Teil) von 0.75 und nach 10 Intervallen (60 Minuten) nur eine I Korrektur von 3.5 (d.h. Puls 78.5).

Vermute mal dass die Wahrheit irgendwo dazwischen liegt.

... werde weiter berichten.

Grüße
Andy

Was mir noch aufgefallen ist: bei dem PID20 Modul ist der historische I-Wert nicht nach oben begrenzt. D.h. er kann ziemlich hohe Werte enthalten wenn die Temperatur oft unterschritten und nur kurz überschritten ist. Im Moment bin ich der Meinung dass das nicht richtig ist.

My-FHEM

#152
@andy

Ja du hast recht, das sogenannte wind up ist im pid20 nicht implementiert. Wird dort aber auch gerade diskutiert. Sobald die Stellgröße die
Stellgrenzen (oben wie unten) erreicht muss der I-Anteil eingefroren werden.

http://forum.fhem.de/index.php/topic,17067.msg398352.html#msg398352

Meine calc Intervall ist 720 sec. das heisst 5 Zyklen pro stunde. Jede Minute neu zu rechnen hat ebenfalls Einfluss auf die Mathematik.

Gruß

Zum D-Anteil: Dieser Verschwindet  nach einem Zyklus. wünschenswert wäre das dieser bei Änderungen der Ist Temp (z.B. durch Störgrössen: Sonne, Änderungen der Ausssentemp. ) länger wirksam bliebe. Die Fussbodenheizung ist halt eine lame Angelegenheit.


jamesgo

Sehr Interessant. Das Passt genau zu meinen Überlegungen.

Bei der sehr langsam reagierenden Fussbodenheizung wird der D-Teil keine so große Rolle spielen, da Temperaturanstiege sehr langsam sind.
Genauso ist es beim Abkühlen nachdem die Wunschtemperatur erreicht wurde. Ich rechne damit dass hier relevane D-Anteile eher von Fehlern in der Messung beinflusst werden. (Schwankungen von 0.1 bis 0.2 Grad in der Messung)

Anders sieht es aus wenn die Temperatur aufgrund von Sonneneinstrahlung steig oder fällt. Hier gib es schon signifikante Steigung bzw. Gefälle.

Schau mer mal ...

Grüße
Andy

jamesgo

Hallo Corrado,

ich prüfe gerde wie ich deinen Wunsch umsetzten könnte und würde für eine Referenz das reading "desired-temp" verwenden.

Steht da tatsächlich "off" drinnen?

Grüße
Andy


Zitat von: Corrado am 27 Januar 2016, 07:45:44
Hi,

ich verwende ein HomeMatic Wandthermostat: HM-TC-IT-WM-W-EU


Internals:
   CFGFN      ./FHEM/01_devicesFhem.cfg
   DEF        35C52E02
   NAME       eg_wohnen_Thermostat_A
   NR         113
   NTFY_ORDER 50-eg_wohnen_Thermostat_A
   STATE      T: 20.4 desired: 20.0
   TYPE       CUL_HM
   chanNo     02
   device     eg_wohnen_Temp_S
   Helper:
     Dblog:
       Desired-temp:
         Mydblog:
           TIME       1453876007.42874
           VALUE      20.0
       Humidity:
         Mydblog:
           TIME       1453876747.18745
           VALUE      43
       Measured-temp:
         Mydblog:
           TIME       1453876007.42874
           VALUE      20.4
   Readings:
     2016-01-27 05:30:01   CommandAccepted yes
     2015-10-05 13:55:54   R-dayTemp       21 C
     2015-10-05 13:55:54   R-daylightSaveTime on
     2015-10-05 13:55:54   R-heatCool      heating
     2015-10-05 13:55:54   R-hyst2point    0.4 C
     2015-10-05 13:55:54   R-modePrioManu  all
     2015-10-05 13:55:54   R-modePrioParty all
     2015-10-05 13:55:54   R-nightTemp     17 C
     2015-10-05 13:55:54   R-noMinMax4Manu off
     2015-10-06 15:24:23   R-sendWeatherData off
     2015-10-06 15:24:23   R-showHumidity  temp
     2015-10-05 13:55:54   R-showInfo      time
     2015-10-06 15:24:23   R-showSetTemp   actTemp
     2015-11-04 19:05:12   R-sign          off
     2015-10-06 15:24:23   R-tempOffset    0.0K
     2015-10-05 13:55:54   R-weekPrgSel    prog1
     2015-10-05 13:55:54   R-winOpnBoost   off
     2015-11-04 19:05:17   R_P1_0_tempListSat 06:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_1_tempListSun 06:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_2_tempListMon 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_3_tempListTue 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_4_tempListWed 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_5_tempListThu 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_6_tempListFri 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-11-04 19:05:17   R_P1_tempList_State verified
     2015-11-04 19:05:21   R_P2_0_tempListSat 24:00 17.0
     2015-11-04 19:05:21   R_P2_1_tempListSun 24:00 17.0
     2015-11-04 19:05:21   R_P2_2_tempListMon 24:00 17.0
     2015-11-04 19:05:21   R_P2_3_tempListTue 24:00 17.0
     2015-11-04 19:05:21   R_P2_4_tempListWed 24:00 17.0
     2015-11-04 19:05:21   R_P2_5_tempListThu 24:00 17.0
     2015-11-04 19:05:21   R_P2_6_tempListFri 24:00 17.0
     2015-11-04 19:05:21   R_P2_tempList_State verified
     2015-11-04 19:05:25   R_P3_0_tempListSat 24:00 17.0
     2015-11-04 19:05:25   R_P3_1_tempListSun 24:00 17.0
     2015-11-04 19:05:25   R_P3_2_tempListMon 24:00 17.0
     2015-11-04 19:05:25   R_P3_3_tempListTue 24:00 17.0
     2015-11-04 19:05:25   R_P3_4_tempListWed 24:00 17.0
     2015-11-04 19:05:25   R_P3_5_tempListThu 24:00 17.0
     2015-11-04 19:05:25   R_P3_6_tempListFri 24:00 17.0
     2015-11-04 19:05:25   R_P3_tempList_State verified
     2015-11-04 19:05:12   RegL_01.        08:00 00:00
     2015-11-04 19:05:17   RegL_07.        01:2A 02:22 03:09 04:3D 05:00 06:00 07:00 08:00 09:07 0A:30 0B:00 0C:00 0D:00 0E:01 0F:04 10:00 11:00 12:09 13:00 14:44 15:48 16:55 17:08 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:44 2F:48 30:55 31:08 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:44 49:48 4A:54 4B:6C 4C:44 4D:CC 4E:55 4F:08 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:44 63:48 64:54 65:6C 66:44 67:CC 68:55 69:08 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:44 7D:48 7E:54 7F:6C 80:44 81:CC 82:55 83:08 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:44 97:48 98:54 99:6C 9A:44 9B:CC 9C:55 9D:08 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:44 B1:48 B2:54 B3:6C B4:44 B5:CC B6:55 B7:08 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00 00:00
     2015-11-04 19:05:21   RegL_08.        01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:00 0D:00 0E:00 0F:00 10:00 11:00 12:00 13:00 14:45 15:20 16:45 17:20 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:45 2F:20 30:45 31:20 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:45 49:20 4A:45 4B:20 4C:45 4D:20 4E:45 4F:20 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:45 63:20 64:45 65:20 66:45 67:20 68:45 69:20 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:45 7D:20 7E:45 7F:20 80:45 81:20 82:45 83:20 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:45 97:20 98:45 99:20 9A:45 9B:20 9C:45 9D:20 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:45 B1:20 B2:45 B3:20 B4:45 B5:20 B6:45 B7:20 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00 00:00
     2015-11-04 19:05:25   RegL_09.        01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:00 0D:00 0E:00 0F:00 10:00 11:00 12:00 13:00 14:45 15:20 16:45 17:20 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:45 2F:20 30:45 31:20 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:45 49:20 4A:45 4B:20 4C:45 4D:20 4E:45 4F:20 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:45 63:20 64:45 65:20 66:45 67:20 68:45 69:20 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:45 7D:20 7E:45 7F:20 80:45 81:20 82:45 83:20 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:45 97:20 98:45 99:20 9A:45 9B:20 9C:45 9D:20 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:45 B1:20 B2:45 B3:20 B4:45 B5:20 B6:45 B7:20 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00 00:00
     2015-10-31 03:30:15   battery         ok
     2016-01-27 07:11:54   boostTime       -
     2016-01-27 07:11:54   commReporting   off
     2016-01-27 07:11:54   controlMode     manual
     2016-01-27 07:39:07   desired-temp    20.0
     2016-01-27 07:39:07   humidity        43
     2016-01-27 07:39:07   measured-temp   20.4
     2016-01-27 05:30:01   recentStateType ack
     2016-01-27 07:39:07   state           T: 20.4 desired: 20.0
     2016-01-25 20:43:05   temperature     0
     2016-01-27 07:11:54   winOpenReporting off
   Helper:
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Role:
       chn        1
     Shregr:
       07         00
Attributes:
   alias      WohnenThermostat
   event-min-interval .*:900
   event-on-change-reading .*
   group      1: Thermostate
   icon       temp_temperature
   model      HM-TC-IT-WM-W-EU
   peerIDs    00000000,
   room       Heizung,Wohnen


Gruß

Corrado

#155
Hi,

jawohl, da steh "off " drinnen!


2016-01-28 10:08:23   controlMode     manual
2016-01-28 10:08:23   desired-temp    off
2016-01-28 10:08:23   measured-temp   19.7


Gibt es eigentlich auch eine Möglichkeit die Log-Einträge komplett zu verhindern? Auch mit "verbose 0" werden die Einträge geschrieben...
 

Gruß Björn

My-FHEM

#156
@andy

Leider haben die Homematic HM-TC-IT-WM-W-EU  nur eine Auflösung von 0.1 Grad. Damit
ist die +/- 0.1 Grad Quantisierungs Ungenauigkeit immer zu beachten. Für den D-Anteil heist dies
zu einem bestimmten Zeitpunkt springt T um 0.1 Grad um dann längere Zeit konstant zu bleiben.
Beim nächsten Abtastzeitpunkt ist dann wieder D=0 Die Auflösung von T ist hier schon ein Thema.

Vielleicht wäre ein gleitender Mittelwert des D-Anteils hilfreich dies zu kompensieren. Denn die Änderungsgeschwindigkeit zu
berücksichtigen halte ich für wichtig.

Gruß

jamesgo

was ich meinte war: 19.1, 19.2, 19.1, 19.1, 19.1

dann ist 19.2 Wert eine Messungenauigkeit und kein tatsächlicher Anstieg der Temperatur

jamesgo

#158
Hallo,

ich habe zwei neue Features implentiert: Berechnung der Pulse mit einem PID Regler und die Möglichkeit die "desired-temp" direkt von einem Device zu übernehmen.

Für letzteres Attribut "autoCalcTemp" auf 1 setzten (oder gar nicht definieren) und ein Attribut "desiredTempFrom" definieren. Format ist "device:reading:regexp". D.h. für die HomeMatic devices sollte der Name reichen (da reading und regexp im Default passen).
Das Internal c_desiredTempFrom zeigt nochmal die Konfiguration und d_name, d_reading und d_regexpTemp die verwendeten Einzelwerte.
Das Aktualisieren der desired-temp geschieht über das Interval der autoCalc Berechnung (d.h. normalerweise alle 300 Sekunden = 5 Minuten).
Im state wird "From <device>" statt "Calculating" angezeigt.

Für die PID Regelung habe ich die Definition folgendermaßen erweitert:

define <name> PWMR <IODev> <factor[,offset]> <tsensor[:reading:[t_regexp]]> <actor>[:<a_regexp_on>] [<window|dummy>[,<window>[:w_regexp]] [<usePID 0|1>:<PFactor>:<IFactor><DFactor>

D.h. falls keine Window definiert wird kann der Wert dummy als Platzhalter verwendet werden.

Es gibt 6 neue Internals bzw Readings:


Internals:
c_PID_DFactor   0                D aus der Konfiguration
c_PID_IFactor    1                I aus der Konfiguration
c_PID_PFactor   0.8             P aus der Konfiguration
c_PID_useit       1               0 ... PID wird berechnet aber nur angezeigt, 1 ... PID wird berechnet und verwendet

h_deltaTemp        -0.1         letzter Wert für die D Berechnung (negative Werte => Ist kleiner als Soll)
h_pid_integrator  -0.30        Summe der I Werte für die I Berechnung (Werte von von -1 bis 1)

Readings:
PID_DVal
PID_IVal
PID_PVal
PID_PWMOnTime
PID_PWMPulse
 

Bei einer fensterlosen Definition also "dummy 0:0.8:1:0" anhängen und die Werte werden berechnet. Bzw. "dummy 1:0.8:1:0" und PID wird verwendet.

Obige Werte habe ich bei mir getestet. Die I-Konstante ist wesentlich höher als z.B. für das 98_PID20.pm Modul - es wird aber öfter Berechnet und es gibt nur Werte zwischen "-1 und +1".

Der I-Teil führt dazu, dass die Wunschtemperatur schneller erreicht wird, da der Puls erst beim Erreichen der Temperatur reduziert wird (um deltaTemp * Konstante = 0.1 pro Zyklus d.h. nach 60 Minuten ist der I-Teil bei 0 (wenn I-Konstante = 1 und Interval = 1 Minute)) ... es gibt dadurch aber auch ein Überschwingen.
Den D-Teil habe ich bisher nicht verwendet, da sich die Temperaturen normalerweise so langsam ändern dass eine Steigung über die beiden letzten Werte nur unzuverlässig ermittelt werden kann.

Viel Spaß beim ausprobieren.
Andy

Nachtrag: jezt ist die commandref auch erweitert. Bitte mit perl contrib/commandref_join.pl aktualisieren.

My-FHEM

#159
@andy

Liest sich super! Ja das mit dem D-Anteil ist nicht so einfach. Bei
numerisch höherer AUflösung von T wie z.B. Hier

   
21.100 21.110 21.120 21.125 ... 21.160 21.190
würde ein D zwischen zwei aufeinanderfolgen Werten etwas ergeben.

21.1     21.1     21.1     21.1   ....  21.2     21.2

verschwindet D da D=0.

Um aber dennoch die Temp Änderung  berücksichtigen zu können, könnte man
die DIfferenz von T aktuell und T vor 10 Abtastzeitpunkten errechnen. Dies ergibt dann auch eine
Änderungsaussage. Wie gesagt Fussbodenheizung ist sehr träge Zeitkonstanten im Stundenbereich.



Wo finde ich das Update?

Gruß

PS: Man sollte erst nachsehen ;)

http://sourceforge.net/p/fhem/code/10655/tree//trunk/fhem/contrib/94_PWM.pm
http://sourceforge.net/p/fhem/code/10655/tree//trunk/fhem/contrib/93_PWMR.pm

Corrado

HI,

das ganze Thema Übernahme der Wunschtemperatur funktioniert erst mal! Perfekt. Danke!

Die Übernahme der Temperatur aus den Zeitprogrammen wird aber durch setzen des attr desiredTempFrom unterbunden oder? Weil ja autoCalcTemp auf 1 sein muss...


Gruß Björn

jamesgo

21.190 - 21.160 = 0.03

0.03 * DFactor ... wird auf 2 Nachkommastellen gerundet ... also mathematisch gesehen würde es berücksichtigt.

D.h. wenn DFactor = 1 ... dann wird der Puls um 0.03 verändert ... * 900 sec (=15min Zyklus) = 27 sec

Da stellt sich nun die Frage ob 27 Sekunden bei dem Puls relevant sind (zumal der I-Anteil vermutlich wesentlich größer ist)


jamesgo

Zitat von: Corrado am 29 Januar 2016, 15:26:54
HI,

das ganze Thema Übernahme der Wunschtemperatur funktioniert erst mal! Perfekt. Danke!

Die Übernahme der Temperatur aus den Zeitprogrammen wird aber durch setzen des attr desiredTempFrom unterbunden oder? Weil ja autoCalcTemp auf 1 sein muss...


Gruß Björn

Richtig! wenn desiredTempFrom definiert ist, dann werden die anderen Regeln ignoriert.

My-FHEM

Ja, deshalb mein Vorschlag zur berücksichtigung der Temperaturänderung einer Modifikation
der Berchnung des D-Anteils zu nehmen:

z.B. Abtastwerte zum Zeitpunkt (T akt) - ( T vor 20min). Dies würde auch bei nur einer Nachkommastelle (zB. Homematic Wandregler)
zur Berücksichtigung der Steigung führen.  Und damit der Temperaturänderung entgegenwirken.
Das Mass dieser Kompensation ist ja über den Kd einstellbar.

Gruß

jamesgo

Wie sieht es denn nun mit PID bzw. dem D-Teil im speziellen aus?

Ich hätte eine Variante Implementiert bei der z.B. 10 (konfigurierbar) alte Temperaturen gespeichert werden können. Das würden bei einem Berechnungsintervall 10 Minuten entsprechen.

Für den D-Anteil wird dann jeweils die Steigung zwischen aktuellem und ältesten Wert verwendet. Damit kann man auch beim langsamen Ansteigen der Temperatur eine Steigung ermitteln.

Ein Peak (z.B. 19.0, 19.2, 19.5, 19.8, 20.0, 19.8, 19.5, 19.0) würde natürlich langsamer erkannt werden.

Grüße
Andy