NEWS
[Vorlage] Homematic IP Thermostate mit CCU: Externe Temperatursensoren (Xiaomi etc.) einbinden mittels Offset-Setzen
-
Was macht das Script:
Folgendes Script korrigiert automatisch regelmäßig den Offset-Wert der Homematic-Thermostate, berechnet aus den Werten von fremden Temperatur-Sensoren (Xiaomi etc.).Das zu setzende Offset wird im Script wie folgt berechnet:
[Xiaomi-Sensor-Wert (z.B. 19,5°C)] minus ([Homematic ACTUAL_TEMPERATURE (z.B. 22,0°C)] minus [Aktuelles gesetztes Offset (z.B. -2,0°C)])Hinweis:
Da der HM-Datenpunkt ACTUAL_TEMPERATURE bereits das aktuell gesetzte Offset inkludiert, wird dieses ebenso mit einbezogen. D.h. wenn am Thermostat normalerweise "23°C" herrschen, aber ein Offset von "-2°C" gesetzt ist, dann zeigt der Datenpunkt ACTUAL_TEMPERATURE nur "21°C" an.Das Script enthält u.a. noch folgende Zusatzfunktionen:
1.) Für jedes Thermostat lässt sich unter thermConf[], Spalte "[2] Min-Temp" eine Schwellgrenze eingeben (z.B. 20°C). Falls die gesetzte HM-Temperatur unter dieser definierten Schwellgrenze ist, so ändert das Script die Offset-Temperatur nicht.
Warum: Wenn z.B. die Solltemperator auf 12°C ist und das Thermostat-Ventil länger auf 0 ist, dann ist die Temperatur gemessen am Thermostat sicherlich anders als wenn dieses aktiv heizt, das würde die Ergebnisse verfälschen.
2.) Option "Maximal-Offset in °C" (MAX_DIFF): Falls der Unterschied der gemessenen Temperatur am Thermostat im Vergleich zum externen Thermostat größer als dieser Wert (in °C) ist, wird nichts gemacht. Dies ist ein zusätzlicher Sicherheitsschritt, denn Abweichungen von z.B. > 6°C wären schon seltsam.Welche Thermostate gehen mit dem Script?
Das Script in der Version 0.4 geht nur mit IP-Thermostaten, laufende Adapter hm-rega und hm-rpc vorausgesetzt.
Bei mir erfolgreich getestet mit "HmIP-eTRV-2". Nicht-IP-Thermostate (z.B. "") habe ich nicht mehr, daher kann ich auch diese nicht mehr im Script einbinden mangels Testmöglichkeiten. Die Temperatur wird bei diesen anders berechnet, siehe Github, Script-Version 0.2, Funktionen "convertTemperatureToHMvalue" und "convertHMvalueToTemperature".Link zum Script, auf Github:
script_homematic-3rd-party-temp-sensors.js(Script wurde ursprünglich im Thread Heizungssteuerungsscript gepostet)
-
Ich antworte mal hier aus dem anderen Thread:
@frostnatt said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
naja der aktuelle Offset ist eigentlich egal solange das Script dauerhaft die Werte regelt.
Sobald eine negative Differenz vorhanden ist wird der Offset Wert sowieso überschrieben. `
Ohne berücksichtigung des aktuellen Offsets wird das Nichts…
Vielen Dank für das Feedback, absolut korrekt, musste ich erst beim Testen lernen.
Datenpunkt ACTUAL_TEMPERATURE enthält bereits das Offset einberechnet, also muss man es bei der Kalkulation jeweils neu mit hinzuziehen.@TDCroPower said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
@Mic danke fürs Update, kannst du mir sagen wie bzw. was für einen Datenpunkt du genau am Thermostat beschreibst?
Es gibt leider keinen Datenpunkt vom HM-Adapter, der das Offset anzeigt oder beschreiben lässt. Ich schreibe mittels "sendTo" direkt in die CCU/Thermostat.
Das Script generiert aber folgende Datenpunkte, damit kannst Du das dann im VIS zur Anzeige bringen:
@frostnatt said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Was mir noch nicht ganz verständlich an deinem Script ist...
- was trägt man hier genau ein? Verstehe die Erläuterung nicht ganz...
// 2. Min-Temp: Minimum-Soll-Temperatur (Set Temperature) am Homematic-Thermostat, erst dann löst das Script die
// Änderung aus. Das vermeidet unnötiges setzen des Offset, wenn z.B. Thermostat auf 12°C eingestellt,
// während Raumtemperatur bei 22°C ist.
Habe es oben versucht zu erklären (1. Post). Wenn z.B. Thermostat im Bad grad auf 12°C eingestellt ist, dann ist wohl der Heizkörper kalt, also zeigt sich ein anderes Verhalten als wenn die voll heizt. Daher kann man hier einen Schwellwert angeben, ab wann das Script auslöst. mit z.B. 20°C sollte man gut bedient sein, im Schlafzimmer vielleicht 17°C.
@frostnatt said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
- kann man die Punkte 4, 5 usw. entfernen, wenn man lediglich 1 Thermostat pro Raum hat oder brauch das Script die leeren Felder?
// 4., 5., usw.: Hier können weitere HomeMatic-Thermostate des Raumes hinzugefügt werden (wie unter 3.).
// Dies kann beliebig erweitert werden, also auch 10 oder mehr Thermostate pro Raum möglich.
Definitiv, ABER, ACHTUNG: Ich hab jetzt das Script umgestellt, d.h. pro Thermostat ist eine neue Zeile erforderlich.
Macht es einfacher.@frostnatt said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Hier mein erster Test deines Scripts, sieht nach Erfolg aus oder?
Sieht gut aus, bitte nimm aber mein Script in der Version 0.4 (geht nur für IP-Thermostate!)
- was trägt man hier genau ein? Verstehe die Erläuterung nicht ganz...
-
Top das du dein Script in ein eigenes Thema ausgelagert hast, das Update von 0.3 auf 0.4 ist doch gewaltiger als man denkt.
Kannst du diesen Teil noch ein wenig genauer erklären?
Ist mir noch ein wenig unklar...// Pfad für die Datenpunkte
const STATE_PATH = 'javascript.'+ instance + '.' + 'mic.Heizung.'; -
Gern geschehen, danke für Dein Feedback.
Kannst du diesen Teil noch ein wenig genauer erklären?
Ist mir noch ein wenig unklar...
// Pfad für die Datenpunkte
const STATE_PATH = 'javascript.'+ instance + '.' + 'mic.Heizung.';Hier findest Du dann im ioBroker Admin unter den Objekten die derzeit gesetzten Offset-Temperaturen der Thermostate, diese kannst Du dann z.B. im Vis zur Anzeige bringen.
D.h. unter javascript.0.mic.Heizung ...
Statt "mic.Heizung" kannst Du da einfach auch nur z.B. "Heizung-Offset" schreiben, oder z.B. "TDCroPower.Heizung-Offset"...
Ansonsten noch kurzes Test-Feedback zum Script:
Läuft echt sehr gut bei mir seit einigen Tagen, die Ist-Temperaturen in den Räumen sind nun deutlich exakter als vorher und nur minimale Abweichungen. Die Offset-Temperatur wird auch tatsächlich durch das Script öfters geändert, vor allem bei Änderung der Temperaturlage. Merkt man deutlich, weil derzeit die Außentemperaturen doch ziemlich schwanken von Tag zu Tag, und da werden tatsächlich bei mir Zuhause unterschiedliche Offset-Werte benötigt, um immer auf dieselbe Zieltemperatur zu kommen...
Hätte ich nicht gedacht, aber läuft echt gut. -
danke für die Erläuterung, kannst eigentlich das mic. vor Heizung entfernen bzw. als Erläuterung den Beispiel Pfad ins Kommentar drüber hinzufügen damit man den Aufbau direkt erkennt.
Zum Beispiel so...// Pfad für die Datenpunkte, z.B. javascript.0.Heizung const STATE_PATH = 'javascript.'+ instance + '.' + 'Heizung.';
Hier noch meine Ausgabe mit deinem 0.4er Script, die Idee mit den Datenpunkten ist wirklich sehr gut!
Verstehe jedoch die Offset Berechnung in dieser Version nicht, zum Beispiel in der Küche wird der aktuelle Offset Wert auf den Heizkörpern in die Berechnung mit aufgenommen?
Der aktuelle Offset auf dem Gerät ist doch eigentlich egal und darf nicht in die Differenzberechnung einfließen sonst ist das Ergebnis ja falsch!?01:42:08.163 info javascript.0 Start javascript script.js.common.Heizung_TempSteuern 01:42:08.165 info javascript.0 script.js.common.Heizung_TempSteuern: registered 0 subscriptions and 0 schedules 01:42:12.158 info javascript.0 script.js.common.Heizung_TempSteuern: [Küche] HM-Temp.: 19.8 °C (- Offset 3.5 °C = 16.3 °C), Xiaomi-Sensor: 20.6 °C => Offset neu: 4.3 °C -> 3.5 °C--> Keine Anpassung, da bisheriges Offset von 3.5 °C = neu kalkuliertes Offset ist. 01:42:12.158 info javascript.0 script.js.common.Heizung_TempSteuern: [Schlafzimmer] HM-Temp.: 20.3 °C (- Offset 1.5 °C = 18.8 °C), Xiaomi-Sensor: 19.8 °C => Offset neu: 1 °C -> 1 °C--> Neues Offset von 1°C erfolgreich gesetzt. 01:42:12.158 info javascript.0 script.js.common.Heizung_TempSteuern: [Büro] HM-Temp.: 20.8 °C (- Offset 0.5 °C = 20.3 °C), Xiaomi-Sensor: 20.7 °C => Offset neu: 0.4 °C -> 0.5 °C--> Keine Anpassung, da bisheriges Offset von 0.5 °C = neu kalkuliertes Offset ist. 01:42:12.158 info javascript.0 script.js.common.Heizung_TempSteuern: [Wohnzimmer] HM-Temp.: 20.6 °C (- Offset 1 °C = 19.6 °C), Xiaomi-Sensor: 20.8 °C => Offset neu: 1.2 °C -> 1 °C--> Keine Anpassung, da bisheriges Offset von 1 °C = neu kalkuliertes Offset ist.
-
Verstehe jedoch die Offset Berechnung in dieser Version nicht, zum Beispiel in der Küche wird der aktuelle Offset Wert auf den Heizkörpern in die Berechnung mit aufgenommen?
Der aktuelle Offset auf dem Gerät ist doch eigentlich egal und darf nicht in die Differenzberechnung einfließen sonst ist das Ergebnis ja falsch!?Ich hatte Anfangs das Offset nicht mit einbezogen in die am Heizkörper-Thermostat gemessene Temperatur, ich kam dann allerdings nie auf meine Zieltemperaturen im Raum, und hab viel rumprobiert.
Der entscheidende Hinweis für mich kam von @frostnatt - https://forum.iobroker.net/post/220331
Meine Tests haben das bestätigt:
Der Wert im Datenpunkt „hm-rpc.0.XXXXXXXXXXX.1.ACTUAL_TEMPERATURE“ scheint tatsächlich bereits mit kalkuliertem Offset zu sein – zumindest bestätigten das meine Tests.Beispiel aktuell bei mir aus dem Log:
[Wohnzimmer-Sued] HM-Temp.: 24.1 °C (- Offset -3.5 °C = 27.6 °C), Xiaomi-Sensor: 23.87 °C => Offset neu: -3.73 °C -> -3.5 °C--> Keine Anpassung, da bisheriges Offset von -3.5 °C = neu kalkuliertes Offset ist.
Über dem Heizkörper-Thermostat ist eine Keramik-Platte, das Thermostat ist immer mehrere Grade wärmer als die Temperatur im Raum.
„hm-rpc.0.XXXXXXXXXXX.1.ACTUAL_TEMPERATURE“ zeigt nur 24,1°C an, aber tatsächlich ist es am Thermostat deutlich wärmer, daher sind die 27,6°C (also Einbeziehung Offset von -3.5°) auch realistisch.Am Ende des Tages zählt aber nur, ob es so auch funktioniert
Hast Du das Script mal so laufen lassen und kommst Du mit den Temperaturen gut hin? Alternativ kannst Du ja gerne mal testen und die Offset-Berechnung herausnehmen. Aber ich prophezeie, dass das ziemlich schief laufen kann und fällt vor allem auf bei Temperaturunterschieden +/- 2°. -
ich ziehe gerade meine 2 Raspberrys auf einen neuen Orange Pi um und bin gerade noch nicht in der Lage langzeit Tests mit den Scripten laufen zu lassen, aber werde ich gerne nach reichen.
Ist die Actual Temp des Heizkörper nicht die inklusive des Offsets?
Wenn nicht dann macht die Rechnung natürlich mehr als Sinn. -
Ist die Actual Temp des Heizkörper nicht die inklusive des Offsets?
Wenn nicht dann macht die Rechnung natürlich mehr als Sinn.Wie oben geschrieben:
@Mic sagte in [Vorlage] Homematic IP Thermostate mit CCU: Externe Temperatursensoren (Xiaomi etc.) einbinden mittels Offset-Setzen:Der Wert im Datenpunkt „hm-rpc.0.XXXXXXXXXXX.1.ACTUAL_TEMPERATURE“ scheint tatsächlich bereits mit kalkuliertem Offset zu sein – zumindest bestätigten das meine Tests.
-
Hallo,
Ich würde das Script 0.2 gerne nutzen, da ich nur HomeMatic (nicht IP) Thermostate habe. Habe es bereits eingebunden und läuft auch, doch mir scheint in jeder Neuberechnung der alte Offset nicht mit ein zu beziehen. "ACTUAL_TEMPERATURE" ist ja der Wert mit Verrechnetem Offset. Jetzt schaukelt das Script immer den Offset hin und her.
Leider kann ich das Script nicht selber bearbeiten, kann mir da jemand helfen? -
@hoktar
ich kann es mit dem "alten" Script 0.2 leider nicht testen, da ich nur noch IP-Thermostate einsetze. -
@Mic Danke für die Antwort. Ich habe mir jetzt das "sendto" aus deinem Script rauskopiert und einzeln in einen Script geschrieben. Da ich selber keine scripte schreiben kann, habe ich die restliche Berechnung in einem Blockly gemacht und schreibe den Offset in ein Objekt. Das Script ist auf Änderungen in dem Objekt getriggert und schiebt bei Änderung den neuen offset in die ccu/ das Heizkörperthermostat.
Nicht die schönste Lösung, aber für mich nachvollziehbar und funktioniert.
Wenn es noch jemanden interessiert, kann ich es gerne näher erklären bzw zeigen. -
@Mic
Ich habe habe die HomematicIP Basic Thermostate und BME280 Sensoren an einer NodeMCU.
Das Script ist eingebunden und funktioniert auch soweit.
Mein Problem:
Am Thermostat sind 21° eingestellt, die Raumtemperatur vom BME280 zeigt 23°an, der Offset scheint richtig eingestellt zu sein, denn die Actual_Temperature des Thermostat´s schwankt nur auf max +-0.5°. Jedoch hat der Raum 23° anstatt die eingestellten 21° bei Set_point_temperature.javascript.0 2020-04-03 14:00:00.010 info (32594) script.js.Heizung.AutoManu: [Badezimmer] HM-Temp.: 22.7 °C (- Offset 1.5 °C = 21.2 °C), MCU-Sensor: 22.5 °C => Offset neu: 1.3 °C -> 1.5 °C--> Keine Anpassung, da bisheriges Offset von 1.5 °C javascript.0 2020-04-03 14:00:00.009 info (32594) script.js.Heizung.AutoManu: Badezimmer - Aktuell: 22.7 °C - Offset einbezogen: 21.2 °C javascript.0 2020-04-03 14:00:00.009 info (32594) script.js.Heizung.AutoManu: Badezimmer: Aktuell gesetztes Offset: 1.5 °C javascript.0 2020-04-03 14:00:00.009 info (32594) script.js.Heizung.AutoManu: === Processing [Badezimmer] === javascript.0 2020-04-03 14:00:00.009 info (32594) script.js.Heizung.AutoManu: [Schlafzimmer] HM-Temp.: 22.4 °C (- Offset -2.5 °C = 24.9 °C), MCU-Sensor: 22.56 °C => Offset neu: -2.34 °C -> -2.5 °C--> Keine Anpassung, da bisheriges Offset von javascript.0 2020-04-03 14:00:00.009 info (32594) script.js.Heizung.AutoManu: Schlafzimmer - Aktuell: 22.4 °C - Offset einbezogen: 24.9 °C javascript.0 2020-04-03 14:00:00.008 info (32594) script.js.Heizung.AutoManu: Schlafzimmer: Aktuell gesetztes Offset: -2.5 °C javascript.0 2020-04-03 14:00:00.008 info (32594) script.js.Heizung.AutoManu: === Processing [Schlafzimmer] === javascript.0 2020-04-03 14:00:00.008 info (32594) script.js.Heizung.AutoManu: [Kino] HM-Temp.: 23.2 °C (- Offset -2 °C = 25.2 °C), MCU-Sensor: 23.1 °C => Offset neu: -2.1 °C -> -2 °C--> Keine Anpassung, da bisheriges Offset von -2 °C = neu ka javascript.0 2020-04-03 14:00:00.007 info (32594) script.js.Heizung.AutoManu: Kino - Aktuell: 23.2 °C - Offset einbezogen: 25.2 °C javascript.0 2020-04-03 14:00:00.007 info (32594) script.js.Heizung.AutoManu: Kino: Aktuell gesetztes Offset: -2 °C javascript.0 2020-04-03 14:00:00.006 info (32594) script.js.Heizung.AutoManu: === Processing [Kino] ===
-
@Mic Entschuldige bitte meine doofe Frage, aber funktioniert dein Script nicht mit dem HomeMatic IP Cloud-Zugriffspunkt- Adapter? Ich habe keine CCU, sondern nur dein einfachen Gateway.
-
@florian84z sagte in [Vorlage] Homematic IP Thermostate mit CCU: Externe Temperatursensoren (Xiaomi etc.) einbinden mittels Offset-Setzen:
@Mic Entschuldige bitte meine doofe Frage, aber funktioniert dein Script nicht mit dem HomeMatic IP Cloud-Zugriffspunkt- Adapter? Ich habe keine CCU, sondern nur dein einfachen Gateway.
Hey Florian,
mein Script hab ich rein für die CCU-Zentrale geschrieben, und nicht für das Gateway, und kann auch nicht sagen, ob das mit dem Gateway überhaupt geht.Bezüglich Homematic kennen sich aber andere hier im Forum deutlich besser aus als ich, auch weil viele zu ioBroker über Homematic kamen. Ich verwende das nur wie jede andere Hardware (wie Hue, Xiaomi, usw.) und versuche da nur zu optimieren
Das Gateway hatte ich mal da zum testen, aber hatte festgestellt, damit deutlich weniger steuern zu können programmatisch, daher blieb ich bei meiner Heizungssteuerung bei der CCU2, die bei mir locker dafür reicht, und gebraucht gekauft war sie echt günstig.
Aber jeder hat da natürlich eine andere Umgebung und Use Case etc -
Richtig coole Idee mit dem Script.
Gibt es etwas, das man auch auf den HomematicIP Adapter anwenden kann?
Offset lässt sich dort auch einstellen.
Wie wirkt es sich eigentlich auf die Batterielebensdauer aus, wenn da die ganze Zeit gesendet wird? Aber eigentlich wird ja bei Änderung der Ist-Temperatur sowieso dauernd gesendet…
-
@loverz ohne jemanden zu markieren ist es bei einem 3 Jahre alten Beitrag schwierig eine Antwort zu bekommen
-