Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Vorlage] Homematic IP Thermostate mit CCU: Externe Temperatursensoren (Xiaomi etc.) einbinden mittels Offset-Setzen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Homematic IP Thermostate mit CCU: Externe Temperatursensoren (Xiaomi etc.) einbinden mittels Offset-Setzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Mic
      Mic Developer last edited by Mic

      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)

      F 1 Reply Last reply Reply Quote 1
      • Mic
        Mic Developer last edited by Mic

        Ich antworte mal hier aus dem anderen Thread:

        @frostnatt said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:

        @TDCroPower:

        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:
        off.png

        @frostnatt said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:

        Was mir noch nicht ganz verständlich an deinem Script ist...

        1. 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:

        1. 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!)

        1 Reply Last reply Reply Quote 1
        • T
          TDCroPower last edited by

          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.';

          Mic 1 Reply Last reply Reply Quote 0
          • Mic
            Mic Developer @TDCroPower last edited by Mic

            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"...
            1552331770371-off.png

            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.

            1 Reply Last reply Reply Quote 1
            • T
              TDCroPower last edited by TDCroPower

              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.
              
              Mic 1 Reply Last reply Reply Quote 0
              • Mic
                Mic Developer @TDCroPower last edited by

                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°.

                1 Reply Last reply Reply Quote 1
                • T
                  TDCroPower last edited by

                  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.

                  Mic 1 Reply Last reply Reply Quote 0
                  • Mic
                    Mic Developer @TDCroPower last edited by

                    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.

                    1 Reply Last reply Reply Quote 0
                    • H
                      hoktar last edited by

                      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?

                      Mic 1 Reply Last reply Reply Quote 0
                      • Mic
                        Mic Developer @hoktar last edited by

                        @hoktar
                        ich kann es mit dem "alten" Script 0.2 leider nicht testen, da ich nur noch IP-Thermostate einsetze.

                        H 1 Reply Last reply Reply Quote 0
                        • H
                          hoktar @Mic last edited by

                          @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.

                          1 Reply Last reply Reply Quote 0
                          • K
                            klehnst last edited by

                            @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] ===
                            
                            1 Reply Last reply Reply Quote 0
                            • F
                              florian84z @Mic last edited by

                              @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.

                              Mic 1 Reply Last reply Reply Quote 0
                              • Mic
                                Mic Developer @florian84z last edited by

                                @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

                                1 Reply Last reply Reply Quote 0
                                • L
                                  loverz last edited by loverz

                                  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…

                                  DJMarc75 1 Reply Last reply Reply Quote 0
                                  • DJMarc75
                                    DJMarc75 @loverz last edited by

                                    @loverz ohne jemanden zu markieren ist es bei einem 3 Jahre alten Beitrag schwierig eine Antwort zu bekommen 😉

                                    L 1 Reply Last reply Reply Quote 0
                                    • L
                                      loverz @DJMarc75 last edited by

                                      @djmarc75 gute Idee @mic

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      433
                                      Online

                                      31.7k
                                      Users

                                      79.8k
                                      Topics

                                      1.3m
                                      Posts

                                      7
                                      17
                                      4536
                                      Loading More Posts
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                      The ioBroker Community 2014-2023
                                      logo