Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Aufheiz-Zeiterfassung und Voraussteuerung für Heizungen

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    [Vorlage] Aufheiz-Zeiterfassung und Voraussteuerung für Heizungen

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

      Hallo apollon77 (Ingo),

      > Inzwischen ist es aber auch so, dass die Vorlauftemperatur von Heizungen (egal ob Fussbodenheizung oder normale Heizkörper) oft auch von der Aussentemperatur und/oder anderen Faktoren abhängt. Damit kann die nötige Zeit zum hochheizen durchaus variieren über die Zeit.

      würde es Sinn machen, diese Werte in dem Script noch zu ergänzen?

      Zum Beispiel: Aussentemperatur, Aussentemperatur der nächsten 3 Stunden, Vorlauftemperatur, Luftfeuchte, usw. wenn diese Vorhanden sind.

      Dann sind die Werte der Aufheizzeit noch etwas genauer. Da die Rahmenbedingungen bekannt sind.

      Hintergrund: Ich komme aus dem Ruhrgebiet und heute haben wir 0 bis 2 Grad - gestern hatten wir 8 bis 12 Grad.

      Gruß

      Dirk

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        Hier in Karlsruhe nicht anders, aber am Ende habe ich keinen sinnvollen zusammenhang der ganzen Werte. Ich habe mit einigen Dingen experimentiert, allerdings waren die Ergebnisse alle fragwürdig weil es einfach zu viele Faktoren gibt. Und die sind auch noch bei jedem anders. Das generischste und am Ende sinnvollste war das einfache messen der Temperaturänderungen und das ganze über die letzten 10 Messungen zu „glätten“. Die Näherung der Methode hat bei mir die letzte Zeit gut funktioniert.

        1 Reply Last reply Reply Quote 0
        • D
          Dirk last edited by

          @apollon77:

          Hier in Karlsruhe nicht anders, aber am Ende habe ich keinen sinnvollen zusammenhang der ganzen Werte. Ich habe mit einigen Dingen experimentiert, allerdings waren die Ergebnisse alle fragwürdig weil es einfach zu viele Faktoren gibt. Und die sind auch noch bei jedem anders. Das generischste und am Ende sinnvollste war das einfache messen der Temperaturänderungen und das ganze über die letzten 10 Messungen zu „glätten“. Die Näherung der Methode hat bei mir die letzte Zeit gut funktioniert. `

          OK - Ich wusste ja nicht das du es schon getestet hast. Ich lasse es mal einige Tage laufen und schaue dann was das Ergebnis ist.

          Bis jetzt hat es noch keine Werte in die Objekte geschrieben aber es läuft ja auch erst seit heute Morgen.

          Gruß

          Dirk

          1 Reply Last reply Reply Quote 0
          • D
            Dirk last edited by

            Hallo, eine Frage bitte zum Script 1 - Aufheiz-Zeiterfassung

            ich habe es wie im Beispiel eingegeben, also die STATE und die Aktuelle-Temperatur.

            Die Datenpunkte je Eintrag Bsp. "Arbeitszimmer" wurden angelegt.

            javascript.0.Heizung.Aufheizzeit.Arbeitzimmer - Zahl

            javascript.0.Heizung.Aufheizzeit.Arbeitzimmer-Data - Zeichenkette

            Das Programm läuft seit heute Morgen die Datenpunkte werden aber nicht gefüllt.

            Ist das richtig? In der Zwischenzeit hat sich aber der Zustand von "hm-rpc.1.0005D5699CF8F2.5.STATE" (Arbeitszimmer FBH) geändert.

            Gruß

            Dirk

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              Am besten schalte mal Debug auf true (bzw so war es im Standard) und dann schau im logfile mit dem Scriptnamen. Dann siehst du was er tut. Es gibt ein paar Fälle wo er Werte ignoriert wie wenn Temperaturen fallen oder die errechnete Zeit zu hoch ist. Vllt ist ja so etwas passiert?!

              1 Reply Last reply Reply Quote 0
              • D
                Dirk last edited by

                @apollon77:

                Am besten schalte mal Debug auf true (bzw so war es im Standard) und dann schau im logfile mit dem Scriptnamen. Dann siehst du was er tut. Es gibt ein paar Fälle wo er Werte ignoriert wie wenn Temperaturen fallen oder die errechnete Zeit zu hoch ist. Vllt ist ja so etwas passiert?! `
                Debug ist auf true - es wird aber leider im Log nichts ausgegeben.

                Sollte ich mal diese Zeilen wieder "einkommentieren" und schauen ob was ausgegeben wird?

                //console.log('Änderung Status Aktor FBH ' + room + ': ' + state.oldState.val + '--> ' + state.state.val + ' (ack=' + state.state.ack + ', from=' + state.state.from + ') status=' + rooms[room].status);
                
                //console.log(room + " timeDiff=" + timeDiff);
                
                
                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 last edited by

                  Dann hast du noch mehr Logs. Versuchs. 😉 Gar nichts im log sollte aber eher nicht sein. Aber er loggt nur wenn der Aktor aktiv ist.

                  1 Reply Last reply Reply Quote 0
                  • D
                    Dirk last edited by

                    @apollon77:

                    Dann hast du noch mehr Logs. Versuchs. 😉 Gar nichts im log sollte aber eher nicht sein. Aber er loggt nur wenn der Aktor aktiv ist. `

                    OK es gibt Log-Einträge aber keine Einträge in den Objekten.

                    ! javascript.0 2017-12-29 18:07:27.442 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Schlafzimmer: false–> false (ack=true, from=system.adapter.hm-rpc.1) status=false
                    ! javascript.0 2017-12-29 18:07:27.206 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Elternbad: false--> false (ack=true, from=system.adapter.hm-rpc.1) status=false
                    ! javascript.0 2017-12-29 18:07:27.151 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Kinderbad: false--> false (ack=true, from=system.adapter.hm-rpc.1) status=false
                    ! javascript.0 2017-12-29 18:07:26.904 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Moritz: false--> false (ack=true, from=system.adapter.hm-rpc.1) status=false
                    ! javascript.0 2017-12-29 18:07:26.854 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Lara: true--> true (ack=true, from=system.adapter.hm-rpc.1) status=true
                    ! javascript.0 2017-12-29 18:00:54.996 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Lara timeDiff=0
                    ! javascript.0 2017-12-29 18:00:54.996 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Lara: false--> true (ack=true, from=system.adapter.hm-rpc.1) status=false
                    ! javascript.0 2017-12-29 18:00:50.203 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Lara timeDiff=2
                    ! javascript.0 2017-12-29 18:00:50.201 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Lara: true--> false (ack=true, from=system.adapter.hm-rpc.1) status=true
                    ! javascript.0 2017-12-29 18:00:00.456 info script.js.Heizungssteuerung.P_Thermostatsteuerung: Heizungsscript verarbeitung durchgelaufen
                    ! javascript.0 2017-12-29 17:59:04.848 info script.js.Heizungssteuerung.Aufheizmessung_FBH: registered 8 subscriptions and 0 schedules
                    ! javascript.0 2017-12-29 17:59:04.848 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Wohnzimmer initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.848 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Arbeitzimmer initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.847 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Flur initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.847 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Lara initialisiert, status=true
                    ! javascript.0 2017-12-29 17:59:04.847 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Lara: Aktor eingeschaltet, starte Aufheizmessung jetzt (21.3)
                    ! javascript.0 2017-12-29 17:59:04.846 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Moritz initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.846 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Kinderbad initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.846 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Schlafzimmer initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.845 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Elternbad initialisiert, status=false
                    ! javascript.0 2017-12-29 17:59:04.826 info Start javascript script.js.Heizungssteuerung.Aufheizmessung_FBH
                    ! javascript.0 2017-12-29 17:59:04.818 info Stop script script.js.Heizungssteuerung.Aufheizmessung_FBH

                    1 Reply Last reply Reply Quote 0
                    • eric2905
                      eric2905 last edited by

                      Hi,

                      ich habe eine Frage zum ersten Script "Aufheizmessung":

                      @apollon77:

                      Im Raum-Objekt sind pro Raum die State-IDs des Aktors und die der Ist-Temperatur definiert die genutzt werden.

                      Pro Raum werden unter "stateBaseId" zwei States angelegt. Einmal mit der aktuell errechneten Aufheizzeit und einmal mit den letzten 10 Messwerten (die für die Mittelwertbildung herangezogen werden). `
                      Welchen Datenpunkt soll ich den nehmen, wenn ich eine normale Heizung habe?

                      Weder im Ventil noch im Wandthermostat gibt es einen Datenpunkt STATE (Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht). Ich könnte das höchstens über VALVE_STATE erkennen (0% = heizt nicht, > 0% = heizt).

                      Danke und Gruß,

                      Eric

                      1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 last edited by

                        @Dirk: er fängt erst an zu rechnen wenn der aktor mind. 31 Minuten an war. Alles kürzere ist nicht aussagekräftig. Von daher misst er am ehesten wenn man nach der Nacht den Raum „hoch heizt“ und er misst eher nicht wenn man die temperatur hält und dazu kurz misst. Der Eintrag mit „timediff=2“ sagt das dr aktor nur 2 Minuten an war.

                        @eric2905: eine super frage 😉 das Skript ist aktuell am ehesten für „Aktoren“ ausgelegt die ein und ausgeschaltet werden. Ein normales heizungsventil was zu 20% offen ist hat ja nie die volle Heizleistung. Man könnte versuchen mit einem Mini Skript einen js Datenpunkt mit true/false anzulegen der auf Änderungen der Ventilsteuerung reagiert und das als State im Skript nutzen. Ich würde aber dann das nur auf true setzen wenn ventilstellung 90% (oder 80% maximalst) ist. Du willst ja ermitteln wie lange er auf „Maximum“ heizen müsste um eine solltenperatur zu erreichen. Wäre mal ein interessantes Experiment ob da was sinnvolles rauskommt. Dann kann ich gern Support dafür später einbauen offiziell 😉

                        1 Reply Last reply Reply Quote 0
                        • D
                          Dirk last edited by

                          @apollon77:

                          @Dirk: er fängt erst an zu rechnen wenn der aktor mind. 31 Minuten an war. Alles kürzere ist nicht aussagekräftig. Von daher misst er am ehesten wenn man nach der Nacht den Raum „hoch heizt“ und er misst eher nicht wenn man die temperatur hält und dazu kurz misst. Der Eintrag mit „timediff=2“ sagt das dr aktor nur 2 Minuten an war. `

                          OK - Dann wird das Script wahrscheinlich nie etwas messen können, da die Stellmotoren durch die Homematic IP Steuerungseinheit nach ca. 10 - 12 Minuten ausgeschaltet werden und ggf. direkt wieder eingeschaltet werden.

                          Das kann ich auch nicht einstellen - ist in dem "Homematic IP Steuerungseinheit" Dingens drin.

                          Ggf. könnte ich hier

                          var timeDiff = Math.round((new Date().getTime() - rooms[room].letztesEin) / 1000 / 60);
                              console.log(room + " timeDiff=" + timeDiff);
                              if (timeDiff > 30) {
                                  var invalid = false;
                          

                          die 30 gegen eine 10 ändern - würde das etwas nützen?

                          Gruß

                          Dirk

                          1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 last edited by

                            Ja aber die Frage durchaus du dann misst… eine Idee wäre eher sich abzusehen wenn es aus geht und direkt danach wieder an dann das „aus“ zu ignorieren.

                            Am mal grundsätzlich: soooo gut für die Stellmotoren ist das aber auch nicht oder?! 😉

                            1 Reply Last reply Reply Quote 0
                            • eric2905
                              eric2905 last edited by

                              Ich baue mir morgen mal so ein kleines Script und lasse es dann mal für einen Raum mitlaufen.

                              Bei uns ist tagsüber keiner zu Hause und ich fahre die Raumtemperatur daher auf 19 Grad runter und mit entsprechendem Vorlauf dann später wieder hoch. Somit ist es dann wieder warm, wenn wir nach Hause kommen.

                              Als Schwellwert werde ich wohl die 80% Ventilöffnung nehmen.

                              Melde mich dann.

                              Gruß,

                              Eric

                              Von unterwegs getippert

                              1 Reply Last reply Reply Quote 0
                              • apollon77
                                apollon77 last edited by

                                @dirk: je länger ich nachdenke desto mehr Sinn macht es die fahrzeitbasiert Ventile zu berücksichtigen. Ich baue später mal was ein was ein „aus“ erst dann als aus nimmt wenn mindestens x sekunden aus alsbzustand war. Meine fbh Ventile brauchen 3 min zum auf oder zu fahren. Wenn also vor in 3 min wieder ein „auf“ kommt waren sie effektiv nicht wirklich zu, also kann er weiter messen.

                                Wie weit liegen bei deinem hm ip System die zu/auf auseinander wenn er wirklich gerade heizen muss?

                                1 Reply Last reply Reply Quote 0
                                • apollon77
                                  apollon77 last edited by

                                  @eric2905: super, bin gespannt ob das gemessene mir deinen Erfahrungswerten übereinstimmt 😉

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    Dirk last edited by

                                    @apollon77:

                                    Ja aber die Frage durchaus du dann misst… eine Idee wäre eher sich abzusehen wenn es aus geht und direkt danach wieder an dann das „aus“ zu ignorieren. `
                                    Stimmt ist auch eine sehr gute Idee - gerade weil das "aus" ja nur einige Sekunden vorhanden ist. Der "on Befehl" reagiert aber direkt und somit kommen die 30 Minuten nicht zusammen.

                                    @apollon77:

                                    Am mal grundsätzlich: soooo gut für die Stellmotoren ist das aber auch nicht oder?! 😉 `
                                    Ja das stimmt. Aber leider kann ich es nicht ändern bzw. ich habe noch nicht gefunden wo ich es ändern kann. Ganz so schlimm ist es aber nicht, da die Stellmotoren eine eingebaute Verzögerung von fast einer Minute haben und somit nicht reagieren.

                                    Gruß Dirk

                                    1 Reply Last reply Reply Quote 0
                                    • eric2905
                                      eric2905 last edited by

                                      @apollon77:

                                      @eric2905: super, bin gespannt ob das gemessene mir deinen Erfahrungswerten übereinstimmt 😉 `
                                      Habe es doch jetzt noch eingebaut 🙂 - dann kriege ich die Aufheizphase morgen früh schon mit.

                                      Hier das initiale Log Deines Scriptes:

                                      22:52:51.674	[info]	javascript.0 Start javascript script.js.Aktiv.Heizung.Aufheizmessung
                                      22:52:51.675	[info]	javascript.0 script.js.Aktiv.Heizung.Aufheizmessung: Raum Wohnzimmer initialisiert, status=false
                                      22:52:51.675	[info]	javascript.0 script.js.Aktiv.Heizung.Aufheizmessung: registered 1 subscription and 0 schedules
                                      

                                      Und hier der Screenshot der aktuell angelegten Datenpunkte:
                                      355_aufheizmessung.png

                                      Bin mal auf morgen früh gespannt.

                                      Gruß,

                                      Eric

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

                                        Hallo apollon77,

                                        ist ja klasse, Das Thema beleuchte ich auch grade.

                                        Ich habe unter dem Dach einen Raum den ich leider elektrisch heizen muss, da ist jede Minute die der Heizkörper weniger an ist, bares Geld.

                                        Heute morgen waren die Datenpunkte gefüllt.

                                        Ich habe die letzten Wochen versucht die Abhängigkeit der Aufheizzeit von der Aussentemperatur zu erfassen.

                                        Dazu habe ich die Aussentemperatur zu Beginn der Aufheizzeit und die Zeitdauer bis die Solltemperatur erreicht ist protokolliert.

                                        Nachdem genug Daten vorhanden waren hab ich das mal in ein Diagramm übertragen und bis auf einige Ausrutscher eine wirklich schöne Kurve rausbekommen die sich in meinem Fall mit einer linearen Gleichung darstellen lässt.

                                        Das wäre doch noch eine schöne Ergänzung.

                                        Es ist natürlich klar, das die Steilheit der Kurve vom Dämmstandard des Gebäudes abhängig ist. Bei modernen, sehr gut gedämmten Gebäuden wird diese Abhängigkeit nur sehr kleinen Einfluss haben.

                                        1 Reply Last reply Reply Quote 0
                                        • apollon77
                                          apollon77 last edited by

                                          Vergleiche doch mal die Daten meines Skriptes mit den Ergebnissen deiner Funktion die nächsten Tage… wäre ja mal interessant ob das passt?!

                                          1 Reply Last reply Reply Quote 0
                                          • apollon77
                                            apollon77 last edited by

                                            Neue versionen beider Skripte mit Optimierungen im ersten Beitrag und Changelog im zweiten Beitrag

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            757
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            51
                                            6616
                                            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