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

  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.5k

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascripttemplateheatingclimate
1.1k Beiträge 115 Kommentatoren 397.0k 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.
  • M Offline
    M Offline
    Moses1989
    schrieb am zuletzt editiert von
    #795

    @looxer01:

    Nein, eine feste Abwesenheits-Temperatur gibt es noch nicht. Es gibt aber mehrere Ansätze dies zu lösen.

    QuickFix wäre, dass ich VIS erweitere auf -sagen wir- bis zu 12 Grad AbsenkTemp. Wenn du dann noch die Minimal Temp auf 10 senkst

    und die Absenktemperatur auf z.B. 8 Grad. Dann wird immer um 12 Grad reduziert aber nur bis 10 Grad maximal.

    Vielleicht wäre es generell besster statt einer relativen Temp eine AbsenkTemp zu vereinbaren.

    Gibt es Meinungen aus dem Forum ? `

    Vielen Dank für die schnelle Antwort!

    Der QuickFix hört sich gut an :)

    Allerdings komme ich mit der Minimal Temperatur auch nur bis 12 Grad. Diese müsste dann auch noch ausgeweitet werden.

    Über eine Umsetzung des QuickFix würde ich mich jedenfalls sehr freuen. ;)

    Du könntest z.b. auch den untersten Punkt in der Auswahlliste bei Party, Abwesenheit und Urlaub einfach "Minimal Temperatur" nennen und -100 Grad rechnen 8-)

    Grüße

    Moses

    1 Antwort Letzte Antwort
    0
    • ChaotC Offline
      ChaotC Offline
      Chaot
      schrieb am zuletzt editiert von
      #796

      @Moses1989:

      …

      Du könntest z.b. auch den untersten Punkt in der Auswahlliste bei Party, Abwesenheit und Urlaub einfach "Minimal Temperatur" nennen und -100 Grad rechnen 8-) `

      Das gäbe dann den Menuepunkt "Party beenden" :lol:

      ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

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

        @Moses1989:

        er QuickFix hört sich gut an :)

        Allerdings komme ich mit der Minimal Temperatur auch nur bis 12 Grad. Diese müsste dann auch noch ausgeweitet werden.

        Über eine Umsetzung des QuickFix würde ich mich jedenfalls sehr freuen. ;) `
        gerade nochmal gecheckt. soooo quick ist der fix leider doch nicht.

        Ich muss alle 5 Selektions Felder erweitern und im Script entsprechend umrechnen.

        Das ist zwar kein Problem allerdings heisst das für die neue Version, dass alle, die das script nutzen wieder die Views ändern müssen :shock:

        Dann könnte ich auch gleich die Temperatur statt der Absenkung einbauen. Die Konsequenz ist identisch.

        Dazu hätte ich aber gerne Feedback vom Forum. Wie seht ihr das ? spricht da was gegen ?

        vG Looxer

        1 Antwort Letzte Antwort
        0
        • AxelF1977A Offline
          AxelF1977A Offline
          AxelF1977
          schrieb am zuletzt editiert von
          #798

          @looxer01:

          Dazu hätte ich aber gerne Feedback vom Forum. Wie seht ihr das ? spricht da was gegen ?

          vG Looxer `

          Nein, es spricht nichts dagegen (Für mich) Ich persönlich bin noch nicht umgestiegen und kann warten. Das aktuelle tut seinen Dienst sehr gut

          ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

          1 Antwort Letzte Antwort
          0
          • ChaotC Offline
            ChaotC Offline
            Chaot
            schrieb am zuletzt editiert von
            #799

            Ich persönlich habe zwar das neue Script eingebaut, aber die Views sind bisher noch die alten. Von daher ist das für mich egal.

            ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

            1 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              Adnim
              schrieb am zuletzt editiert von
              #800

              Hey looxer,

              danke für das skript und deine tolle unterstützung hier im Forum.

              Habe die neue Version gleich versucht und ein paar kleine (Schönheits)Fehler entdeckt!?

              -Im Skript musste ich in Zeile 260 und 287 sowie 288 "testraum" zu "initial" ändern (Fehlermeldungen im LOG sonst)

              -In der View sind die Checkboxen "wie Vortrag" nur für Profil 1 angelegt . Profil 2 und 3 sind keine Checkboxen sichtbar

              -Batterie anzeige in View in %; wird hier irgendwo umgerechnet? das soll glaube ich Volt sein…

              -Beim Feld Modus in der Geräte übersicht passen die Bezeichnungen nicht zu HM geräte (im Manu modus steht hier geschlossen)

              -Habe auch noch probleme das die Zeitauswahlfelder überlappend sind, hier werden sekunden angezeigt obwohl ausgewählt ist das das nicht soll. (habe an den Einstellungen gespielt,sieht fast nach einem Bug aus wird nicht besser)

              edit: mein fehler , ich muss alle übereinander liegenden felder markieren und die zeichen anzahl kleiner stellen dann tut sich auch was :)

              edit: im Anhang,korrigierte VIS mit 3 Profilen. Hoffe so kann ich etwas unterstützen...

              Frohes Fest!

              VG

              Adnim
              4760_mitcheckboxen.txt

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

                @Adnim:

                edit: im Anhang,korrigierte VIS mit 3 Profilen. Hoffe so kann ich etwas unterstützen… `
                Hi,

                das ist perfekt. Ich danke dir.

                Ich werde draus eine subversion machen und online stellen.

                Beim Script muss ich immer eine online Version erstellen, die nicht so ist wie ich mit meiner Version arbeite.

                Da ist mir der Testraum untergegangen. Gibt auch eine Subversion.

                zum Thema der Sekunden in VIS: das ist leider VIS-seitig so. Die Sekunden werden in der Tat NICHT angezeigt, wenn die Auswahl machst. Dann aber im Widget wieder angezeigt. –> Works as designed <-- aber nicht great

                Nochmals vielen Dank

                Looxer

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

                  @Moses1989:

                  Der QuickFix hört sich gut an :)

                  Allerdings komme ich mit der Minimal Temperatur auch nur bis 12 Grad. Diese müsste dann auch noch ausgeweitet werden.

                  Über eine Umsetzung des QuickFix würde ich mich jedenfalls sehr freuen. ;) `

                  @Chaot:

                  Ich persönlich habe zwar das neue Script eingebaut, aber die Views sind bisher noch die alten. Von daher ist das für mich egal. `

                  danke für euer Feedback. Wie Chaot hier schreibt nutzt er und viele andere nicht unbedingt die View die zur Script-Version veröffentlicht wurde. Das ist ok so und das soll auch so weiterhin möglich sein. Es ist beispielsweise heute noch möglich die View aus 1.0 zu verwenden, und zwar ohne Korrektur.

                  Daher werde ich die View nicht anpassen. Also habe ich mir folgende Alternative überlegt.

                  • im Script gibt es eine Auswahlmöglichkeit entweder mit relativen oder absoluten Abwesenheitsabsenkungen zu arbeiten.

                  • Bei Auswahl von absolution Absenkungen muss dann der jeweilie Nutzer eine kleine Anpassung an der View vornehmen:

                  (Kopie des Widgets, z.B. Minimaltemperatur an die Stelle der Abwesenheitssenkung und dann Korrektur des Datenpunktes im Widget.)

                  Damit bleiben Script und View abwärtskompatibel und trotzdem kann mit absoluten Temps garbeitet werden.

                  Moses war ja auch nicht der einzige, der danach fragte.

                  vG Looxer

                  1 Antwort Letzte Antwort
                  0
                  • F Offline
                    F Offline
                    frostnatt
                    schrieb am zuletzt editiert von
                    #803

                    Hi Looxer,

                    danke für das Update des Scripts, tolle Arbeit!

                    Das Thema mit dem Delay für nicht HM-Verschlusssensoren ist somit Geschichte! :D

                    Leider habe ich aktuell das Problem, dass mein zweites Heizkörperthermostat im Wohnzimmer nicht synchronisiert wird, wenn dass Fenster geöffnet wurde. Es findet keine Solltemperaturabsenkung auf den eingestellten Wert statt (in meinem Fall 12 °C). Sonst laufen die beiden Thermostate synchron.

                    Hast du ne Idee, was das sein kann? Danke!

                    Grüße,

                    Max

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

                      @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
                      
                      
                      1 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        looxer01
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • L Offline
                          L Offline
                          looxer01
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • L Offline
                            L Offline
                            looxer01
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              Adnim
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • L Offline
                                L Offline
                                looxer01
                                schrieb am zuletzt editiert von
                                #809

                                @Adnim:

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

                                vG Looxer

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

                                  Hi,

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

                                  Danke an @Admin für die Vorlage.

                                  vG Looxer

                                  1 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    Moses1989
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          892

                                          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