Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascripttemplateheatingclimate
1.1k Beiträge 115 Kommentatoren 397.1k Aufrufe 61 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Offline
    K Offline
    Kugelkopf
    schrieb am zuletzt editiert von
    #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 :D . 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 Antwort Letzte Antwort
    0
    • F Offline
      F Offline
      frostnatt
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • L Offline
        L Offline
        looxer01
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • Q Offline
          Q Offline
          quorle
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • F Offline
            F Offline
            frostnatt
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • L Offline
              L Offline
              looxer01
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • Q Offline
                Q Offline
                quorle
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  looxer01
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • F Offline
                    F Offline
                    frostnatt
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • B Offline
                      B Offline
                      Brati
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        looxer01
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • F Offline
                          F Offline
                          frostnatt
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • W Offline
                            W Offline
                            Wahooka
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              Adnim
                              schrieb am zuletzt editiert von
                              #825

                              @Wahooka:

                              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...? `

                              Ja, mache ich zwar mit Radar aber das funzt bei alter und neuer version so…Man kann auch das Anwesenheitsflag von externen Skript steuern wenn man alle Räume absenken will.

                              PS: Man kann aber auch im Skript direkt die Anwesenheitssteuerung einsetzen...

                              1 Antwort Letzte Antwort
                              0
                              • L Offline
                                L Offline
                                looxer01
                                schrieb am zuletzt editiert von
                                #826

                                @quorle:

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

                                View mit 1 Profil ist korrigiert und hochgeladen. Hoffe, dass es jetzt passt.

                                vG Looxer

                                1 Antwort Letzte Antwort
                                0
                                • L Offline
                                  L Offline
                                  looxer01
                                  schrieb am zuletzt editiert von
                                  #827

                                  @frostnatt:

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

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

                                  könntest du mir bitte dein Script mit den Einstellungen zusenden ?

                                  Ich möchte mir einen case aufbauen zum testen und der sollte deiner Situation entsprechen.

                                  vG Looxer

                                  1 Antwort Letzte Antwort
                                  0
                                  • Q Offline
                                    Q Offline
                                    quorle
                                    schrieb am zuletzt editiert von
                                    #828

                                    @looxer01:

                                    Hast du die VIEW´s heute neu hochgeladen?

                                    Bzw. welche VIEW´s genau?

                                    1 Antwort Letzte Antwort
                                    0
                                    • L Offline
                                      L Offline
                                      looxer01
                                      schrieb am zuletzt editiert von
                                      #829

                                      @quorle:

                                      Hast du die VIEW´s heute neu hochgeladen?

                                      Bzw. welche VIEW´s genau? `
                                      Hi Quorle,

                                      diese ist aktuell:

                                      View1 mit 1 Profil : View1-Widgets-1Profile-Published-21-2.txt

                                      ich hatte vorher nochmal kurz eine andere Version hochgeladen. Die hatte aber auch ein Problem.

                                      vG Looxer

                                      1 Antwort Letzte Antwort
                                      0
                                      • eric2905E Offline
                                        eric2905E Offline
                                        eric2905
                                        schrieb am zuletzt editiert von
                                        #830

                                        Moin Looxer,

                                        erst mal Chapeau für die Arbeit, Die hier geleistet wird.

                                        Zwei Fragen hätte ich:

                                        Der hm-rpc-Adapter (ab v1.8) kann ja nun auch "Virtual Devices" (Heizungsgruppen aus der CCU).

                                        Dafür gibt es dann eine neue Instanz des hm-rpc (Bei mir : hm-rpc.1 für HM, hm-rpc.2 für HMIP und hm-rpc-3 für Gruppen).

                                        Werden die Gruppen in Deinem Script berücksichtigt, sprich, kann ich im Script den Pfad in der Tabelle "ThermostatTypeTab" entsprechend ändern?

                                        Ist das Script vom korrekten Basispfad in der Tabelle "ThermostatTypeTab" abhängig?

                                        Sprich, wenn nicht hm-rpc.0 = HM und hm-rpc.1 = HMIP (wie bei mir), muss dann die Tabelle angepasst werden?

                                        Wenn ja, könnte man den Basispfad als Globale Variable definieren und diese dann im Header setzen (und nicht mit Search & Replace das Script durchackern)?

                                        Danke und Gruß,

                                        Eric

                                        Roses are red, violets are blue,

                                        if I listen to metal, my neighbours do too

                                        1 Antwort Letzte Antwort
                                        0
                                        • L Offline
                                          L Offline
                                          looxer01
                                          schrieb am zuletzt editiert von
                                          #831

                                          Hi Eric,

                                          Das Programm liest die Definitionen aus der ThermostatTypeTab ein. Der Level1 Pfad (Basispfad) muss dort definiert sein.

                                          Ist nichts anderes als eine Channel-Suche. Theoretisch liessen sich also die Gruppen auch einlesen.

                                          Die Level1 Definition wird genau nur einmal gemacht, und zwar in der ThermostatTypeTab. Von da an geht alles per Variable.

                                          Allerdings sehe ich nicht so recht, dass es ein Vorteil wäre die Gruppen einzulesen. Wenn ich ein Thermostat über das Script einstelle, dann bekommen das alle anderen über die Direktverbindung mit. Somit macht es doch keinen Unterschied über eine Gruppe zu steuern oder über z.B. ein Wandthermostat ?

                                          Wenn es Vorteile hat, dann schaue ich mir das gerne an was gemacht werden muss.

                                          ich habe den RPC 1.8 nicht installiert. Ich nehme mal an, dass muss gesondert konfiguriert werden im Adapter , um die Gruppen zu erhalten ?

                                          (Was genau ?

                                          vG Looxer

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          784

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe