Fehler bei Berechnung von measuredTemperature ?

Begonnen von John, 08 Februar 2013, 00:03:32

Vorheriges Thema - Nächstes Thema

John

Ich verwende Max-Thermostate ohne Wandthermostat.

Bei dem Versuch die Temperatur des Thermostats via measurementOffset
 an einen Referenzfühler (HMS100TF) anzugleichen, bin ich zunächst gescheitert,
 da es einfach nicht gelingen wollte.

Ich meine der Fehler liegt in folgender Zeile im Modul 10_MAX.pm.


sub
MAX_Parse($$)
{
..
$measuredTemperature -= $measOffset if($measuredTemperature ne "" and $measOffset ne "");
..
}


Nachdem ich diese auskommentierte passt alles bestens, ich konnte die Temperatur angleichen.

Ich habe Folgendes festgestellt:

- der Thermostat übernimmt measuredTemperature und addiert diesen zum physikalisch gemessenen Wert.
- es kommt als der korrekte bereits vom Thermostat korrigierte Wert beim CUL/COC an.
- die erneute Korrektur des Wertes innerhalb von FHEM ist unnötig

Folgender Log-Auszug

# offset 0
2013.02.07 23:02:32 3: measuredTemperature: 17.4 (john A)

# offset auf 1 gestellt  
2013.02.07 23:04:32 3: measuredTemperature: 18.4 (john A)  # vom Sensor korrigierter Wert passt
2013.02.07 23:04:32 3: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 1, valveposition 15 %, desiredTemperature 18, until , curTemp 18.4
2013.02.07 23:04:32 3: measuredTemperature: 17.4 offset: 1.0    # durch den Fehler wird die Korrektur des Sensor rückgängig gemacht

# offset auf -1 gestellt, da ändert sich nix
2013.02.07 23:10:32 3: measuredTemperature: 16.4     # vom Sensor korrigierter Wert passt
2013.02.07 23:10:32 3: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 1, valveposition 75 %, desiredTemperature 19.5, until , curTemp 16.4
2013.02.07 23:10:32 3: measuredTemperature: 17.4 offset: -1.0 (john B)   # durch den Fehler wird die Korrektur des Sensor rückgängig gemacht


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Matthias Gehre

Danke für die Untersuchung, vorbildlich!
Ich habs eben so committed.

maplemaple

Guten Abend,
ich versuche schon seit längere Zeit eine Lösung für das Problem in meiner FHEM Installation zu finden. Das Problem ist folgendes,
meine gemessenen Temperaturen die angeziegt werden, sind die aktuelle Temp. + Offset. Wie kann ich das so lösen, dass im FHEM die korrekten Werte angezeigt werden? Ich verwende die Max Thermostate über den Cube an der FB. Danke!

Matthias Gehre

@maplemaple: benutzt du HeatingThermostat oder HeatingThermostatPlus Geräte?


maplemaple

Hallo Matthias,
ich nutze die HeatingThermostat als Geräte.

Matthias Gehre

Deine Beobachtung scheint der Beobachtung vom Threadersteller zu widersprechen. Kannst du das daher etwas detaillierter ausführen:
1. Hast du ein anderes Gerät als Referenz für die Temperatur? Was zeigt das an?
2. Was zeigt FHEM zur gleichen Zeit im "temperature" READING?
3. Was ist das eingestellte Offset?
4. Wie verändert sich das "temperature" READING, wenn du das Offset änderst?

Am besten sehr ausführlich oder mit Tabelle o.ä..

maplemaple

Hallo Matthias,

ich habe jetzt mal einen Versuch gestartet und folgende Werte aufgenommen.
Referenztemperatur ist ein direkt neben dem Heizkörper stehendes normales Raumthermometer und der Wert beträgt 22,7°C.

  • Offset=2 temperature=23,4
  • Offset=0 temperature=21,5
  • Offset=1 temperature=22,5

Ich hoffe du kannst den Fehler nachvollziehen. Danke!

John

Hallo maplemaple,

das sieht alles richtig aus.


Das Thermostat liefert ohne Offset 21,5.
Nimmst du den Offset auf 1 Grad geht die Temperatur auf 22.5
Bei Offset 2 Grad bekommen wir ca 23.5.

Allgemein : gesendete Temperatur v. Thermostat = (gemessene Temperatur am Thermostat + Offset)

Genau das würde ich erwarten.

Haben wir dein Problem noch nicht verstanden ?

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

maplemaple

Guten Abend John,

vielleicht habe ich mich nicht ganz korrekt ausgedrückt. Bei einem Offset von 1, entspricht die gemessene Temp. genau der gesendeten direkt am Thermostat. Nun Sitze ich nicht direkt am Heizkörper, und ermittele die Differenz zu diesem Ort. Dass soll mein Offset sein, in meinem Fall 2°C.
Soweit bin ich doch sicherlich richtig?! Nun stelle ich als desiredtemperature z.B. 22°C ein. Dann liefert mir doch mein Thermostat die gemessene + Offset als temperature. Das ist doch dann aber nicht die Gleiche wie die desiredtemperature?! Oder verstehe ich da was falsch?

MapleMaple

John

Zitatei einem Offset von 1, entspricht die gemessene Temp. genau der gesendeten direkt am Thermostat.
Misst du den noch mit einem anderen Fühler ?

Zunächst ein paar Grundlagen:
desiredTemperature

  • ist der Temperatur-Sollwert
  • nur dieser wird am Thermostat angezeigt, nicht jedoch der Istwert

temperature

  • ist der Istwert den das Thermostat über den internen Sensor ermittelt hat
  • dieser kann via measurementOffset korrigiert werden

Meine Vorgehensweise, wenn ich measurementOffset ermitteln will.

  • ich stelle im Raum einen Thermometer bzw. weiteren genauen Sensor auf
  • nachdem dieser eingeschwungen ist, lese ich den Istwert ab, z.B. 21 Grad
  • wenn das Thermostat 20 Grad liefert verpasse ich ihm einen measurementOffset von 1 Grad und es liefert nun auch die 21 Grad
  • damit ist der Abgleich beendet

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

maplemaple

Danke für die Erläuterungen. Also stimmen dann desiredTemperature und temperature niemals überein?

Matthias Gehre

Theoretisch sollte der Thermostat durch das Heizen die Raumtemperatur so regeln, dass temperature == desiredTemperature wird.
Tatsächlich wird es aber imme eine Regelabweichung geben, insbesondere da die Heizung nur heizen und nicht kühlen kann. Wie ist denn das Verhalten auf lange Zeit? Bleibt eine Konstante Differenz zwischen temperature und desiredTemperature? Oder schwankt das?

maplemaple

#12
Diese Differenz ist in der Heizphase meist genau das Offset.
Wenn ich als desiredTemperature den Wert der gemessenen temperature einstelle, sollte ja das Ventil zu bleiben. Aber das tut es nicht, es geht auf heizt bis es genau das Offset drüber liegt.

maplemaple

Guten Abend,

ich habe jetzt nochmal einige Versuche gestartet und einen Vergleich mit Maxbuddy angestellt. Dort werden die Temperaturen korrekt angezeigt. Welche Möglichkeit habe ich denn von der angezeigten temp das offset abzuziehen?(nur für die Darstellung der Kurven) Kenne mich leider in Perl noch nicht so gut aus. Vielleicht kann mir ja jemand einen Tipp geben. Vielen Dank!

Mathias

Matthias Gehre

Bei mir ist das Reading "temperature" die tatsächliche Temperatur. Ich habe das measurementOffset auf 0.5 gestellt, da vorher "temperature" 0.5 Grad zu wenig anzeigte. Wenn ich desiredTemperature auf z.B. 21 Grad stelle, dann wird es im Raum auf 21 Grad geheizt
und "temperature" zeigt auch 21 Grad an. (Natürlich kann es zu Überschwingern kommen, je nach Raum, Heizkörper, Vorlauftemperatur usw. Auf lange Sicht ist bei mir aber "temperature" == "desiredTemperature")

Ich sehe da also bisher keinen Fehler. Kannst du mal einen Plot anhängen, wo man die dauerhafter Regelabweichung sieht?