Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    266

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

Scheduled Pinned Locked Moved Skripten / Logik
javascripttemplateheatingclimate
1.1k Posts 115 Posters 395.8k Views 61 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    looxer01
    wrote on last edited by
    #805

    Hi,

    ich habe die Script Version 2.10_01 hochgeladen um zwei kritische Fehler zu korrigieren

    • Raum Testraum erzeugte Fehler

    • Termostat Sync bei AbsenkTemp funktionierte nicht mehr.

    die View - Korrekturen folgen noch

    vG Looxer

    1 Reply Last reply
    0
    • L Offline
      L Offline
      looxer01
      wrote on last edited by
      #806

      @quorle:

      Jetzt hätte ich auch einmal wieder eine Frage. Ich hab das Script laufen Version: 2.00b02 und hab in dieser Version ab Zeile 487 was geändert.

      Muss man das komplette Script erneuern und kann ich das ab Zeile 487 wieder eintragen? Hier wird erzwungen, dass die HKT´s von einem anderen Programm einen Sollwert bekommen. `
      Hi Quorle,

      ich habe den "UserExit" zu ende programmiert. Damit kannst du Bedingungen definieren wie z.B. ein Datenpunkt hat eine Aenderung oder ist groesser oder kleiner als ein Vorgabewert etc. Im UserExit gibt es eine Routine die den Wert des Datenpunktes nimmt und als manuelle Temp einstellt. Auch lässt sich die Routine erweitern um weitere Daten einzulesen um ggf eine andere SollTemp zu ermitteln.

      Zusammenfassend:

      • Der Wert eines Datenpunktes kann bei dessen Aenderung in die manuelle Temp eingestellt werden (auch ohne zusätzliches Coding)

      • zusätzliches Coding erlaubt weitere Veränderung zur Ermittlung einer von aussen kommenden SollTemp

      Würde das das abdecken was du brauchst ?

      Wenn ja - würdest du das mal testen können ?

      vG Looxer

      1 Reply Last reply
      0
      • L Offline
        L Offline
        looxer01
        wrote on last edited by
        #807

        @Moses1989:

        Gibt es eine Möglichkeit eine feste Abwesenheits-Temperatur (Absenktemperatur) pro Raum zu definieren? `

        Hi Moses,

        ich habe das mal eingebaut. Um das zu aktivieren muss eine Einstellung vorgenommen werden.

        Die variable heisst "AbsenkTempAbsolut". Wenn diese auf true steht wird davon ausgegangen, dass im View eine absolute Temp eingegeben wird.

        Dazu muss aber das Widget geändert werden (kopieren von z.B. MinimalTemperatur und das alte Widget loeschen) und natürlich die Zuordnung des Datenpunktes.

        Waerest du bereit das mal zu testen ?

        vG Looxer

        1 Reply Last reply
        0
        • A Offline
          A Offline
          Adnim
          wrote on last edited by
          #808

          @looxer01:

          @Moses1989:

          Gibt es eine Möglichkeit eine feste Abwesenheits-Temperatur (Absenktemperatur) pro Raum zu definieren? `

          Hi Moses,

          ich habe das mal eingebaut. Um das zu aktivieren muss eine Einstellung vorgenommen werden.

          Die variable heisst "AbsenkTempAbsolut". Wenn diese auf true steht wird davon ausgegangen, dass im View eine absolute Temp eingegeben wird.

          Dazu muss aber das Widget geändert werden (kopieren von z.B. MinimalTemperatur und das alte Widget loeschen) und natürlich die Zuordnung des Datenpunktes.

          Waerest du bereit das mal zu testen ?

          vG Looxer `

          Würde auch testen, stellst du die Version mal rein?

          1 Reply Last reply
          0
          • L Offline
            L Offline
            looxer01
            wrote on last edited by
            #809

            @Adnim:

            Würde auch testen, stellst du die Version mal rein? `
            Hab dir eine PN geschickt. 🙂

            vG Looxer

            1 Reply Last reply
            0
            • L Offline
              L Offline
              looxer01
              wrote on last edited by
              #810

              Hi,

              die View (Widgets) für die 3Profile ist korrigiert und hochgeladen.

              Danke an @Admin für die Vorlage.

              vG Looxer

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Moses1989
                wrote on last edited by
                #811

                @looxer01:

                Hi Moses,

                ich habe das mal eingebaut. Um das zu aktivieren muss eine Einstellung vorgenommen werden.

                Die variable heisst "AbsenkTempAbsolut". Wenn diese auf true steht wird davon ausgegangen, dass im View eine absolute Temp eingegeben wird.

                Dazu muss aber das Widget geändert werden (kopieren von z.B. MinimalTemperatur und das alte Widget loeschen) und natürlich die Zuordnung des Datenpunktes.

                Waerest du bereit das mal zu testen ?

                vG Looxer `

                Wow das ging aber verdammt schnell! Vielen Dank schonmal 🙂

                Klar würde ich es testen!

                Grüße Moses

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  Kugelkopf
                  wrote on last edited by
                  #812

                  @looxer01:

                  Hi,

                  ich fasse mal die Fragen/Antworten der letzten posts hier zusammen-

                  @Kugelkopf:

                  • Die Möglichkeit die Anwesenheit für bestimmte Räume hinzuzufügen. Beispiel: Tochter verlässt das Haus, also braucht dieser Raum (SchlafzimmerOG) während ihrer Abwesenheit nicht weiter geheizt werden bzw. kann abgesenkt werden. Alle anderen Räume hingegen müssen ganz normal weiter laufen. `
                    Das geht relativ easy. Generell führen neue Funktionen natürlich zu mehr Komplexität z.B. beim Konfigurieren. (mehr Fragen / Doku etc)

                  Ich denke, dass es um Kinderzimmer geht.

                  Tatsächlich habe ich auch mal darüber nachgedacht und dann befunden, dass zumindest meine Kinder keine "Ich mach die Türe zu, wenn ich geh" - Kinder sind 😄 . Die Funktion wäre ja nur sinnvoll, wenn dies auch konsequent gemacht wird.

                  Ich nehme es mal mit auf `
                  Ja, Kinderzimmer oder WG-Zimmer.

                  Wir haben an jeder Tür diese Automatischen Schließer installiert. Damit die Kinder nicht ständig die Türen offen stehen lassen. 😃

                  1 Reply Last reply
                  0
                  • F Offline
                    F Offline
                    frostnatt
                    wrote on last edited by
                    #813

                    @looxer01:

                    @frostnatt:

                    Hast du ne Idee, was das sein kann? Danke! `
                    Ich hatte dazu ein Stück Coding entfernt, weil ich eigentlich annahm, dass es an anderer Stelle zieht.

                    Kannst du mal bitte zum Testen das untere Stück Coding wieder aktivieren ?

                    Brauchst nur die Zeilen /* und */ entfernen

                    vG Looxer

                    EDIT

                    sorry - besser so

                    tausche bitte aus:

                    //-----------------------------------------------------------------------------------------------------
                    // Funktion ThermostatChange  erkennt die Veraenderung der Solltemperatur durch subsription
                    //-----------------------------------------------------------------------------------------------------
                    function ThermostatChange(id) {
                        var ManAdj;
                        var room;
                        var ActTime = formatDate(new Date(),"YYYY/MM/DD SS:mm:ss");  // Formatierte Aktuelle Zeit
                        var ActTimeMilliSek = new Date(ActTime).getTime();  // Aktuelle Zeit in Millisekunden seit 1970
                        var LastRoomUpdate;
                        var source_ManTempSet;
                        Source_CurrentSollTemp = 0;  // Ruecksetzen der current SollTemp fuer nachfolgende Programme
                    
                        for (var x in ControlTab ) {
                            if (ControlTab[x][1] === id ) {
                                room = ControlTab[x][0];
                    
                                LastRoomUpdate = ActTimeMilliSek - LastRoomUpdateTime(room, "find");  // Differenzzeit aus dieser Zeit und der letzten updatezeit des Raumes (Vermeidung von eigenen Triggern wenn die Solltemp geaendert wird)
                    
                                if ( LastRoomUpdate < 1000)  {  // der Raum wurde vor weniger als 1 Sekunde bereits upgedated
                                    if (debug) { log("Routine ThermostatChange: Der Raum wurde vor weniger als 1 Sekunde bereits upgedated Aenderung wird ignoriert " + LastRoomUpdate, "info"); }
                                    return;
                                }
                                writelog(room, id, "Am Thermostat wurde eine neue Soll-Temperatur erkannt " + getState(id).val);
                                log("Routine ThermostatChange: " + id + " Raum " + room + " Solltemperatur-Aenderung erkannt auf " + getState(id).val , "info");
                                source_ManTempSet = getState(id).val;
                                if (source_ManTempSet !== VerschlussAbsenkungsGrenze) {
                                    writelog(room, id, "Routine ThermostatChange: Thermostat " + id + " Raum " + room + " Thermostat Solltemperatur-Aenderung erkannt auf " + source_ManTempSet)  ;
                                    LoopDevices(room);
                                } else { 
                                    writelog(room, id, "Routine ThermostatChange: Temperaturabsenkung erkannt" + id + " Raum " + room + " auf: " + source_ManTempSet )  ;
                                }
                    /*
                                if (Source_ManTempSet === null) {
                        //            log("Routine ThermostatChange: ACHTUNG Fall 1 ThermostatChange in Temperatur Source_ManTempSet hat keinen Wert - kann nicht synchen")
                                    return;
                                }
                                if (debug) { log("Routine ThermostatChange: Starte Sync fuer  Manuelle Temperatur fuer " + id + " Temperatur = " +  Source_ManTempSet, "info");  }
                                   SyncThermostat(room, "ManualTemp", Source_ManTempSet, id);                                                      // jetzt manuelle Temp synchen
                                return;
                    */
                            } // ID in controll tab gefunden
                        } // endfor
                    } // ende Funktion
                    
                    

                    gegen:

                    //-----------------------------------------------------------------------------------------------------
                    // Funktion ThermostatChange  erkennt die Veraenderung der Solltemperatur durch subsription
                    //-----------------------------------------------------------------------------------------------------
                    function ThermostatChange(id) {
                        var ManAdj;
                        var room;
                        var ActTime = formatDate(new Date(),"YYYY/MM/DD SS:mm:ss");  // Formatierte Aktuelle Zeit
                        var ActTimeMilliSek = new Date(ActTime).getTime();  // Aktuelle Zeit in Millisekunden seit 1970
                        var LastRoomUpdate;
                        var source_ManTempSet;
                        Source_CurrentSollTemp = 0;  // Ruecksetzen der current SollTemp fuer nachfolgende Programme
                    
                        for (var x in ControlTab ) {
                            if (ControlTab[x][1] === id ) {
                                room = ControlTab[x][0];
                    
                                LastRoomUpdate = ActTimeMilliSek - LastRoomUpdateTime(room, "find");  // Differenzzeit aus dieser Zeit und der letzten updatezeit des Raumes (Vermeidung von eigenen Triggern wenn die Solltemp geaendert wird)
                    
                                if ( LastRoomUpdate < 1000)  {  // der Raum wurde vor weniger als 1 Sekunde bereits upgedated
                                    if (debug) { log("Routine ThermostatChange: Der Raum wurde vor weniger als 1 Sekunde bereits upgedated Aenderung wird ignoriert " + LastRoomUpdate, "info"); }
                                    return;
                                }
                                writelog(room, id, "Am Thermostat wurde eine neue Temperatur eingestellt " + getState(id).val);
                                log("Routine ThermostatChange: " + id + " Raum " + room + " Solltemperatur-Aenderung erkannt auf " + getState(id).val , "info");
                                source_ManTempSet = getState(id).val;
                                if (source_ManTempSet !== VerschlussAbsenkungsGrenze) {
                                    writelog(room, id, "Routine ThermostatChange: Thermostat " + id + " Raum " + room + " Thermostat Solltemperatur-Aenderung erkannt auf " + source_ManTempSet)  ;
                                    ManAdj = ManAdjustments(room, id);
                                } else { 
                                    writelog(room, id, "Routine ThermostatChange: Temperaturabsenkung erkannt" + id + " Raum " + room + " auf: " + source_ManTempSet )  ;
                                }
                                if (Source_ManTempSet === null) {
                        //            log("Routine ThermostatChange: ACHTUNG Fall 1 ThermostatChange in Temperatur Source_ManTempSet hat keinen Wert - kann nicht synchen")
                                    return;
                                }
                    
                                if (debug) {
                                    log("Routine ThermostatChange: Starte Sync fuer  Manuelle Temperatur fuer " + id + " Temperatur = " +  Source_ManTempSet, "info"); 
                                    log("ControlTab " + ControlTab[x], "info");                
                                }
                                SyncThermostat(room, "ManualTemp", Source_ManTempSet, id);                                                      // jetzt manuelle Temp synchen
                                return;
                            }
                        }
                    } // ende Funktion
                    
                    ```` `  
                    

                    Hi Looxer,

                    leider werden die beiden Thermostate mit dieser Änderung nicht synchronisiert.

                    Grüße

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      looxer01
                      wrote on last edited by
                      #814

                      @frostnatt:

                      leider werden die beiden Thermostate mit dieser Änderung nicht synchronisiert. `
                      Hi,

                      ich gehe davon aus, dass das syncing in der Version 2.0 funktionierte ?

                      In diesem Fall bitte probiere die Version, die ich aktuell hochgeladen habe.

                      Ist im Grunde der alte Code.

                      vG Looxer

                      1 Reply Last reply
                      0
                      • Q Offline
                        Q Offline
                        quorle
                        wrote on last edited by
                        #815

                        Hallo looxner01,

                        Nun erst einmal wieder ein Riesen Dankeschön für das Script. Ich habe nun die aktuelle Version implementiert und meine Anpassungen eingetragen. Bislang läuft es wirklich sauber und besser.

                        Trotzdem habe ich Probleme mit dem VIEW. Ich schreibe wie immer alles auf die Räume um ( Kind1,Flur, usw… ), aber irgendwie steht da etwas komischen in den Stateangaben bei den Einstellfenster für die Zeiten in Temperaturen.

                        Sieh dir mal im Bild das Object ID bitte an. Das ist doch nicht richtig?

                        Ich hab aktuell nur 1 Profil, dann müsste dies doch auf Profil 1 gehen, oder sehe ich das jetzt falsch? Denn wenn ich eine Zeit oder Temperatur ändere, wird dies nicht in die States eingetragen. Es gibt ja das oben genannte ( Bild ) State gar nicht.

                        Kannst du dir das erklären?

                        5278_3e120a33-a6c4-4f7d-9d70-39edcf2aafc4.jpeg

                        1 Reply Last reply
                        0
                        • F Offline
                          F Offline
                          frostnatt
                          wrote on last edited by
                          #816

                          @looxer01:

                          @frostnatt:

                          leider werden die beiden Thermostate mit dieser Änderung nicht synchronisiert. `
                          Hi,

                          ich gehe davon aus, dass das syncing in der Version 2.0 funktionierte ?

                          In diesem Fall bitte probiere die Version, die ich aktuell hochgeladen habe.

                          Ist im Grunde der alte Code.

                          vG Looxer `

                          ja, in der 2.0 funktioniert es.

                          Ich habe zuerst das aktuelle Script (Version 2.1.01) ausprobiert, denn laut Beschreibung müsste das Problem gefixt sein.

                          Im nächsten Schritt habe ich die vorgeschlagene Änderung in 2.1.01 eingearbeitet.

                          Ging in beiden fällen nicht…

                          Grüße

                          1 Reply Last reply
                          0
                          • L Offline
                            L Offline
                            looxer01
                            wrote on last edited by
                            #817

                            @quorle:

                            Kannst du dir das erklären? `
                            ja, liegt leider an mir :shock:

                            Der view ist leider fehlerhaft.

                            der 3-Profile View sollte schon ok sein. Den 1-Profil View ersetze ich Morgen.

                            Solange benutze bitte noch den alten View. Funktioniert ja noch.

                            vG Looxer

                            1 Reply Last reply
                            0
                            • Q Offline
                              Q Offline
                              quorle
                              wrote on last edited by
                              #818

                              @looxer01:

                              @quorle:

                              Kannst du dir das erklären? `
                              ja, liegt leider an mir :shock:

                              Der view ist leider fehlerhaft.

                              der 3-Profile View sollte schon ok sein. Den 1-Profil View ersetze ich Morgen.

                              Solange benutze bitte noch den alten View. Funktioniert ja noch.

                              vG Looxer `

                              Super danke, du bist der beste 😉

                              1 Reply Last reply
                              0
                              • L Offline
                                L Offline
                                looxer01
                                wrote on last edited by
                                #819

                                @looxer01:

                                ja, in der 2.0 funktioniert es.

                                ch habe zuerst das aktuelle Script (Version 2.1.01) ausprobiert, denn laut Beschreibung müsste das Problem gefixt sein.

                                Im nächsten Schritt habe ich die vorgeschlagene Änderung in 2.1.01 eingearbeitet.

                                Ging in beiden fällen nicht… `

                                Hast du auch die 2.10-01 versucht wie sie hochgeladen ist ? Die enthält schon die relevanten Aenderungen.

                                vG Looxer

                                1 Reply Last reply
                                0
                                • F Offline
                                  F Offline
                                  frostnatt
                                  wrote on last edited by
                                  #820

                                  Hast du auch die 2.10-01 versucht wie sie hochgeladen ist ? Die enthält schon die relevanten Aenderungen.

                                  vG Looxer

                                  Ja, das habe ich im ersten Schritt gemacht - wie oben erwähnt. War keine Synchronisation da.

                                  Grüße

                                  1 Reply Last reply
                                  0
                                  • B Offline
                                    B Offline
                                    Brati
                                    wrote on last edited by
                                    #821

                                    @Kugelkopf:

                                    Ja, Kinderzimmer oder WG-Zimmer.

                                    Wir haben an jeder Tür diese Automatischen Schließer installiert. Damit die Kinder nicht ständig die Türen offen stehen lassen. 😃 `

                                    [offtopic]

                                    :lol: :lol: Ist ja wie bei uns. Licht ausschalten usw. kennt man nicht mehr. Keine Ahnung ob die später in einer normalen Wohnung überleben.

                                    CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                                    1 Reply Last reply
                                    0
                                    • L Offline
                                      L Offline
                                      looxer01
                                      wrote on last edited by
                                      #822

                                      @frostnatt:

                                      Ja, das habe ich im ersten Schritt gemacht - wie oben erwähnt. War keine Synchronisation da. `
                                      Ich gehe davon aus, dass du nicht HM-Geräte hast - korrekt ? also nicht direkt verknüpft.

                                      Dann werde ich mal ein paar loggings einbauen und schauen was passiert. (schicke ich dir dann)

                                      Aber erst Morgen. Bin dann mal raus für heute.

                                      vG Looxer

                                      1 Reply Last reply
                                      0
                                      • F Offline
                                        F Offline
                                        frostnatt
                                        wrote on last edited by
                                        #823

                                        @looxer01:

                                        @frostnatt:

                                        Ja, das habe ich im ersten Schritt gemacht - wie oben erwähnt. War keine Synchronisation da. `
                                        Ich gehe davon aus, dass du nicht HM-Geräte hast - korrekt ? also nicht direkt verknüpft.

                                        Dann werde ich mal ein paar loggings einbauen und schauen was passiert. (schicke ich dir dann)

                                        Aber erst Morgen. Bin dann mal raus für heute.

                                        vG Looxer `

                                        Ja, die Fensterkontakte sind keine HM-Geräte.

                                        Danke für die sehr schnelle Rückmeldung und das Interesse an der Problemlösung!

                                        Grüße

                                        1 Reply Last reply
                                        0
                                        • W Offline
                                          W Offline
                                          Wahooka
                                          wrote on last edited by
                                          #824

                                          Tolles Skript, es sieht großartig aus und die Funktionen sind fantastisch!!!

                                          Hat jemand von euch das Skript gekoppelt mit einer Anwesenheitssteuerung?

                                          Wenn jemand im Wlan ist dann stelle Heizprofil 2 ein?

                                          Wenn Handy 1 und Handy 2 nicht im Haus sind (geofence, IFTTT und cloud ….) dann schalte Profil 3 ein...?

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          154

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe