Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      K-L-S last edited by

      Hatte ich schon probiert. Adapter wurde auch neu gestartet und ioBroker Neustart wurde auch durchgeführt und zu guter letzt wurde der Rechner neu gestartet. Am Ergebnis hat sich hierdurch jedoch nichts geändert weshalb ich hier auch einen Post geöffnet habe. Hast Du die 201 im Einsatz(kaschperle83) und diese Problem nicht?

      1 Reply Last reply Reply Quote 0
      • O
        Okidoki3009 last edited by

        Hallo,

        danke erstmal für das tolle script.

        Ich habe leider noch Probleme bei der Installation.

        Mein Log zeigt an
        3673_log.png

        Ich verwende Max-Thermostate und Xiaomi Fensterkontakte

        Was habe ich geändert…

        var UseRoomList = true;      // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
        var RoomList = [];
        RoomList[0] = ['Kinderzimmer_OG'];   // Liste der Raeume die gesteuert werden soll zum Testen
        RoomList[1] = ['GästeWC'];
        RoomList[2] = ['Wohnzimmer'];
        
        NoneHMTab[0] = ['Kinderzimmer_OG','maxcul.0','KMD3029774','desiredTemperature',12];
        NoneHMTab[1] = ['GästeWC','maxcul.0','JMD3035215','desiredTemperature',12];
        NoneHMTab[2] = ['Wohnzimmer','maxcul.0','KMD3029415','desiredTemperature',12];
        
        NoneHMSenorTab[0] = ['Kinderzimmer_OG','mihome.0.devices','magnet_158d00016c8c03' ,'state' ,false,false];
        NoneHMSenorTab[1] = ['GästeWC',        'mihome.0.devices','magnet_158d0001b95a90' ,'state' ,'false',false];
        

        Räume und Funktion auch zugewiesen und auf richtige Schreibweise geachtet.

        Jemand eine Idee?

        Danke euch

        1 Reply Last reply Reply Quote 0
        • K
          K-L-S last edited by

          Hallo Okidoki3009,

          ich bin mir nicht sicher aber enums zeigt soweit ich weiß auf die Räume. Vielleicht Umlaute/Sonderzeichen?

          Gruss K_L_S

          1 Reply Last reply Reply Quote 0
          • O
            Okidoki3009 last edited by

            @K-L-S:

            Hallo Okidoki3009,

            ich bin mir nicht sicher aber enums zeigt soweit ich weiß auf die Räume. Vielleicht Umlaute/Sonderzeichen?

            Gruss K_L_S `

            Danke ,ich habe jetzt den Raum GästeWC umgeändert in EG_gwc .

            Leider noch der gleiche Fehler.

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

              @K-L-S:

              Hatte ich schon probiert. Adapter wurde auch neu gestartet und ioBroker Neustart wurde auch durchgeführt und zu guter letzt wurde der Rechner neu gestartet. Am Ergebnis hat sich hierdurch jedoch nichts geändert weshalb ich hier auch einen Post geöffnet habe. Hast Du die 201 im Einsatz(kaschperle83) und diese Problem nicht? ` Nein noch nicht. Bin noch nicht zum umstellen gekommen.

              Gesendet aus Hessen.

              1 Reply Last reply Reply Quote 0
              • B
                bigd-73 last edited by

                @K-L-S:

                Hallo,

                ich habe seit dem Wochenende das Script 201 im Einsatz.

                Meine Umgebung: Max-Cube mit Max!-Thermostaten, Xiaomi-Fenster-Tür-Kontakte.

                Mein Problem:

                Wenn ich z.B. die Raumthemperatur auf 20 Grad und die Abwesenheitsabsenkung auf 5 Grad einstelle und in der View das Flag Anwesend entferne wird zunächst die Soll-Themperatur richtig auf 15 Grad gestellt. Einige Sekunden später springt die Soll-Themperatur wieder auf 20 Grad und in der View sehe ich manuell gesetzte Soll-Themperatur bei 20 Grad für 120 Minuten.

                Da scheint irgend etwas schief zu laufen.

                Ansonsten tolles Programm und danke für deinen Einsatz. `

                Wie sehen denn deine Einstellungen für die Xiaomi Sensoren unter: // Tabelle der Verschlusssensoren fuer NichtHomematic Geräte

                aus?

                Danke

                SG

                Mario

                1 Reply Last reply Reply Quote 0
                • K
                  K-L-S last edited by

                  Hallo,

                  hier meine gesamten Anpassungen:

                  https://drive.google.com/open?id=1TDJYh … bEKc7RCl7H

                  1 Reply Last reply Reply Quote 0
                  • B
                    bigd-73 last edited by

                    @K-L-S:

                    Hallo,

                    hier meine gesamten Anpassungen:

                    https://drive.google.com/open?id=1TDJYh … bEKc7RCl7H `

                    Guten Morgen,

                    danke für den Tipp. Leider bekomme ich den Raum mit dem Xiaomi Verschluss nicht angezeigt.

                    Ich sollte wohl etwas genauer ins Detail gehen.

                    Zur Situation:

                    1. Raum, die Wohnkücke, wird korrekt eingebunden. In diesem Raum ist das Heizkörperthermostat HM-CC-RT-DN und der Homematicverschluss HM-Sec-SCo verbaut.Wird eingebunden und funktioniert problemlos.

                    2. Raum, Kinderzimmer, wird nicht eingebunden. In diesem Raum ist auch das Heizkörperthermostat HM-CC-RT-DN verbaut. Aber mit den Xiaomi Tür und Fenstersensor.

                    Raum und Funktion (Gewerk) sind korrekt zugewiesen, Scriptversion 2.01 vom 31.10.2018

                    // Gewerke - wichtige Einstellung, da nur die Geraete eingelesen werden, die im Gewerk vorhanden sind
                    // Das Gewerk muss alle Thermostate bzw Sensoren enhalten
                    var HeizungGewerk           = "Heizung";        //  diesem Gewerk muessen alle Thermostate zugeordnet sein.
                    var SensorGewerk            = "Verschluss";     //  diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.
                    
                    
                    // Raumliste -  empfohlen zu benutzen fuer kleine Systeme
                    // UseRoomList heisst, dass die nur hier gelisteten Raeume angelegt und abgearbeitet werden - somit werden nicht sofort alle Datenpunkte aller Räume angelegt (ca. 100 pro Raum und Profil)
                    // dies dient hauptsaechlich zur Anlage der Daten - So koennen Raum fuer Raum alle States angelegt wrden
                    // Das sollte genutzt werden mit langsamen Rechnern wie Raspi mit SD karte
                    var UseRoomList = true;      // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
                    var RoomList = [];
                    RoomList[0] = ['Wohnkueche'];   // Liste der Raeume die gesteuert werden soll zum Testen
                    RoomList[1] = ['Kinderzimmer'];
                    //RoomList[2] = ['Raumx'];
                    //RoomList[3] = ['Raum3'];
                    //RoomList[4] = ['Raum4'];
                    //RoomList[5] = ['Raum5'];
                    //RoomList[6] = ['Raum6'];
                    //RoomList[7] = ['Raum7'];
                    //RoomList[8] = ['Raum8'];
                    //RoomList[9] = ['Raum9'];
                    
                    
                    // Tabelle der Verschlusssensoren fuer NichtHomematic Geräte
                    // 5  = wenn script die Absenktemperatur setzen soll, dann false
                    var NoneHMSenorTab = [];
                    //                  0= Raum         1 = Datenpunkt vis vor Geraet 0.RPC-Pfad    2\. Datenpunkt Geraet        3\. Datenpunkt FensterstatusGeraeteType  4.Verschlussstatus bei geschlossen    5\. TempAbsenkung automatisch,
                    NoneHMSenorTab[0] = ['initial',     'javascript.0.Heizung.Heizplan',            'Wohnzimmer' ,              'TestZusaetzlichesFenster' ,            false,                                false];
                    NoneHMSenorTab[1] = ['initial',     'fhem.0',                                   'OG_DU_TF' ,                'state' ,                               'closed',                             false];
                    NoneHMSenorTab[2] = ['initial',     'maxcube.0.devices',                                                    'contact_0a9d75',                       'opened',                             false,                                          true];
                    NoneHMSenorTab[3] = ['Kinderzimmer','mihome.0.devices',                         'magnet_158d0001e4c32d' ,   'state',                                false,                                false];
                    
                    

                    Die Möglichkeiten aus diesem Beitrag habe ich auch versucht: viewtopic.php?f=21&t=10096&start=440#p181466

                    Ohne Erfolg.

                    Jemand eine Idee?

                    Danke

                    SG

                    Mario

                    1 Reply Last reply Reply Quote 0
                    • B
                      Brati last edited by

                      @bigd-73

                      Warum schreibst du den Xiaomi Kontakt nicht als "NoneHMSenorTab[0]" ein oder gibt es die Geräte? (Dann würde ich auch dort die Räume benennen) Bei mir laufen die Xiaomi Kontakte ohne Probleme:

                      var NoneHMSenorTab = [];
                      //                  0= Raum         1 = Datenpunkt vis vor Geraet 0.RPC-Pfad    2\. Datenpunkt Geraet    3\. Datenpunkt FensterstatusGeraeteType  4.Verschlussstatus bei geschlossen    5\. TempAbsenkung automatisch,
                      NoneHMSenorTab[0] = ['Kind1',     'zigbee.0',                 '00158dxxx518af3' ,        'opened' ,                                   false,                                         false];
                      NoneHMSenorTab[1] = ['Kind2',     'mihome.0.devices',         'magnet_158d000251xxx2' ,   'state' ,                                    false,                                      false];
                      NoneHMSenorTab[2] = ['Kind2',     'mihome.0.devices',         'magnet_158d00025xxxxc' ,   'state' ,                                    false,                                      false];
                      
                      

                      Grüße

                      Brati

                      1 Reply Last reply Reply Quote 0
                      • B
                        bigd-73 last edited by

                        @dav71701:

                        @looxer01:

                        @shattered_dream:

                        Habs eingebaut… FOlgende Meldung im Log : `
                        jo, das zeigt, dass das Script davon ausgeht, dass der Sensor direktverknuepft ist.

                        Ich glaube ich habe da einen fehler gefunden:

                        Tausche bitte nochmal aus:

                            if (SensorList[tabNo][9] ) {  // Sensor ist direktverknuepft und wurde geoeffnet
                                log("Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7], "info" );
                                writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7])  ;
                                return;                                                                                                                     // nichts machen, da die Absenkung automatisch passiert
                            }
                            
                            
                            vG Looxer
                        
                        ```` `  
                        

                        Also mit dieser Änderung und den folgenden Einstellungen, weil ich den Xiaomi - Sensor als Cux eingebunden habe, funktioniert es jetzt auch bei mir, super danke 🙂

                        ThermostatTypeTab[2]  = ['hm-rpc.0.',  'HM-CC-RT-DN'     , 'Heizkoerperthermostat(neu)' ,'HT',   '4.SET_TEMPERATURE'      ,   false,        '4.MANU_MODE',              false,                  '4.ACTUAL_TEMPERATURE',      '4.CONTROL_MODE',           12,                                            0];
                        SensorTypeTab[1] = ['hm-rpc.0.',  'HM-Sec-SC'  ,    'Fenstersensor (alt)' ,       'HM',    '1.STATE' ,        false,         false,                 false   ];
                        
                        ```` `  
                        

                        … wie hast du denn den Xiaomi Sensor mit Cux eingebunden?

                        Gibts da irgendwo eine Anleitung dazu?

                        Danke

                        SG

                        Mario

                        1 Reply Last reply Reply Quote 0
                        • B
                          bigd-73 last edited by

                          @Brati:

                          @bigd-73

                          Warum schreibst du den Xiaomi Kontakt nicht als "NoneHMSenorTab[0]" ein oder gibt es die Geräte? (Dann würde ich auch dort die Räume benennen) Bei mir laufen die Xiaomi Kontakte ohne Probleme:

                          var NoneHMSenorTab = [];
                          //                  0= Raum         1 = Datenpunkt vis vor Geraet 0.RPC-Pfad    2\. Datenpunkt Geraet    3\. Datenpunkt FensterstatusGeraeteType  4.Verschlussstatus bei geschlossen    5\. TempAbsenkung automatisch,
                          NoneHMSenorTab[0] = ['Kind1',     'zigbee.0',                 '00158dxxx518af3' ,        'opened' ,                                   false,                                         false];
                          NoneHMSenorTab[1] = ['Kind2',     'mihome.0.devices',         'magnet_158d000251xxx2' ,   'state' ,                                    false,                                      false];
                          NoneHMSenorTab[2] = ['Kind2',     'mihome.0.devices',         'magnet_158d00025xxxxc' ,   'state' ,                                    false,                                      false];
                          
                          

                          Grüße

                          Brati `

                          Die anderen Sensoren gibt es nicht. Habe jetzt mal nur den real vorhandenen Xiaomi eingetragen und alles neu gestartet. Brachte leider auch keinen Erfolg. Trotzdem danke.

                          // Tabelle der Verschlusssensoren fuer NichtHomematic Geräte
                          // 5  = wenn script die Absenktemperatur setzen soll, dann false
                          var NoneHMSenorTab = [];
                          //                  0= Raum         1 = Datenpunkt vis vor Geraet 0.RPC-Pfad    2\. Datenpunkt Geraet        3\. Datenpunkt FensterstatusGeraeteType  4.Verschlussstatus bei geschlossen    5\. TempAbsenkung automatisch,
                          //NoneHMSenorTab[0] = ['initial',     'javascript.0.Heizung.Heizplan',            'Wohnzimmer' ,              'TestZusaetzlichesFenster' ,            false,                                false];
                          //NoneHMSenorTab[1] = ['initial',     'fhem.0',                                   'OG_DU_TF' ,                'state' ,                               'closed',                             false];
                          //NoneHMSenorTab[2] = ['initial',     'maxcube.0.devices',                                                    'contact_0a9d75',                       'opened',                             false,                                          true];
                          NoneHMSenorTab[0] = ['Kinderzimmer','mihome.0.devices',                         'magnet_158d0001e4c32d' ,   'state',                                false,                                false];
                          
                          

                          SG

                          Mario

                          1 Reply Last reply Reply Quote 0
                          • O
                            Okidoki3009 last edited by

                            @bigd-73:

                            @dav71701:

                            @looxer01:

                            jo, das zeigt, dass das Script davon ausgeht, dass der Sensor direktverknuepft ist.

                            Ich glaube ich habe da einen fehler gefunden:

                            Tausche bitte nochmal aus:

                                if (SensorList[tabNo][9] ) {  // Sensor ist direktverknuepft und wurde geoeffnet
                                    log("Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7], "info" );
                                    writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7])  ;
                                    return;                                                                                                                     // nichts machen, da die Absenkung automatisch passiert
                                }
                                
                                
                                vG Looxer
                            
                            ```` `  
                            

                            Also mit dieser Änderung und den folgenden Einstellungen, weil ich den Xiaomi - Sensor als Cux eingebunden habe, funktioniert es jetzt auch bei mir, super danke 🙂

                            ThermostatTypeTab[2]  = ['hm-rpc.0.',  'HM-CC-RT-DN'     , 'Heizkoerperthermostat(neu)' ,'HT',   '4.SET_TEMPERATURE'      ,   false,        '4.MANU_MODE',              false,                  '4.ACTUAL_TEMPERATURE',      '4.CONTROL_MODE',           12,                                            0];
                            SensorTypeTab[1] = ['hm-rpc.0.',  'HM-Sec-SC'  ,    'Fenstersensor (alt)' ,       'HM',    '1.STATE' ,        false,         false,                 false   ];
                            
                            ```` `  
                            

                            … wie hast du denn den Xiaomi Sensor mit Cux eingebunden?

                            Gibts da irgendwo eine Anleitung dazu?

                            Danke

                            SG

                            Mario `

                            https://www.verdrahtet.info/2018/04/20/ … einbinden/

                            1 Reply Last reply Reply Quote 0
                            • B
                              bigd-73 last edited by

                              … so, hab jetzt noch mal von vorne begonnen und alles neu angelegt. Rechner neu gestartet und jetzt funktioniert es.

                              Keine Ahnung wo der Fehler gelegen ist.

                              Danke

                              SG

                              Mario

                              1 Reply Last reply Reply Quote 0
                              • O
                                Okidoki3009 last edited by

                                @Okidoki3009:

                                Hallo,

                                danke erstmal für das tolle script.

                                Ich habe leider noch Probleme bei der Installation.

                                Mein Log zeigt an

                                Log.PNG

                                Ich verwende Max-Thermostate und Xiaomi Fensterkontakte

                                Was habe ich geändert…

                                var UseRoomList = true;      // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
                                var RoomList = [];
                                RoomList[0] = ['Kinderzimmer_OG'];   // Liste der Raeume die gesteuert werden soll zum Testen
                                RoomList[1] = ['GästeWC'];
                                RoomList[2] = ['Wohnzimmer'];
                                
                                NoneHMTab[0] = ['Kinderzimmer_OG','maxcul.0','KMD3029774','desiredTemperature',12];
                                NoneHMTab[1] = ['GästeWC','maxcul.0','JMD3035215','desiredTemperature',12];
                                NoneHMTab[2] = ['Wohnzimmer','maxcul.0','KMD3029415','desiredTemperature',12];
                                
                                NoneHMSenorTab[0] = ['Kinderzimmer_OG','mihome.0.devices','magnet_158d00016c8c03' ,'state' ,false,false];
                                NoneHMSenorTab[1] = ['GästeWC',        'mihome.0.devices','magnet_158d0001b95a90' ,'state' ,'false',false];
                                

                                Räume und Funktion auch zugewiesen und auf richtige Schreibweise geachtet.

                                Jemand eine Idee?

                                Danke euch `

                                3673_log.png

                                Ich habe jetzt mal nur ein Thermostat angegeben ,aber leider kommt der gleiche Fehler noch.

                                Kann mir vielleicht noch jemand helfen?

                                1 Reply Last reply Reply Quote 0
                                • K
                                  K-L-S last edited by

                                  Was hast Du denn an Stelle 2207 im Heizungsscript stehen? Vielleicht kommen wir dadurch auf die Spur.

                                  1 Reply Last reply Reply Quote 0
                                  • O
                                    Okidoki3009 last edited by

                                    @K-L-S:

                                    Was hast Du denn an Stelle 2207 im Heizungsscript stehen? Vielleicht kommen wir dadurch auf die Spur. `

                                     <code>createState(State, 0,  {read: true, write: true, type: 'number', name: 'Im View manuell eingestellte Temperatur - 0=reset'  , desc: 'Im View manuell eingestellte Temperatur - 0=reset'});
                                    
                                    Da habe ich nichs geändert</code>
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • F
                                      FalkeSR last edited by

                                      Hallo miteinander,

                                      "leider" scheint es hier so gut wie keine Fragen von Anfängern in Javascript o. ä. zu geben, nun da muss ich da wohl durch 😉 .

                                      Folgende Ausgangslage im Versuchsaufbau:

                                      piVCCU mit ioBroker und Homematic

                                      1x HM-CC-RT-DN Homematic Heizkörperthermostat

                                      1x Xiaomi Temperatur und Luftfeuchtigkeitssensor über Zigbee Adapter angebunden

                                      Eingebunden sind alle im Raum Wohnzimmer und dem Gewerk Heizung. Diese heißen ebenfalls in der CCU so. Wenn ich mit dem Rega Adapter die Räume und Gewerke reinhole, sind das aber Englische Begriffe und andre Räume. Diese Räume habe ich mittlerweile wieder gelöscht aus ioBroker und bin zurück zu Wohnzimmer und Heizung.

                                      Hier Screenshots der benötigten Teile:

                                      Der HM-CC-RT-DN Thermostat:
                                      9100_bildschirmfoto_2018-11-11_um_23.10.33.png

                                      Hier der Xiaomi Sensor:
                                      9100_bildschirmfoto_2018-11-11_um_23.12.02.png

                                      Wenn ich nun das Script, auch wenn nur die nötigsten Sachen angepasst sind laufen lasse, passiert im Endeffekt gar nichts spürbares.
                                      9100_bildschirmfoto_2018-11-11_um_23.13.03.png

                                      Unter Javascript werden keine Datenpunkte erstellt:
                                      9100_bildschirmfoto_2018-11-11_um_23.14.51.png
                                      Cron habe ich auf 1s gestellt, damit er sicher jede Minute was tut.

                                      Ebenso hatte ich das Logging aktiviert, die Datei wurde aber nicht einmal erstellt.

                                      Wo könnte hier der Fehler liegen? Habe die Befürchtung das ich irgend einen kleinen Schritt einfach nicht weiß und es deswegen nicht klappt.

                                      Danke für die Hilfe!

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        K-L-S last edited by

                                        @Okidoki3009:

                                        @K-L-S:

                                        Was hast Du denn an Stelle 2207 im Heizungsscript stehen? Vielleicht kommen wir dadurch auf die Spur. `

                                         <code>createState(State, 0,  {read: true, write: true, type: 'number', name: 'Im View manuell eingestellte Temperatur - 0=reset'  , desc: 'Im View manuell eingestellte Temperatur - 0=reset'});
                                        
                                        Da habe ich nichs geändert
                                        
                                        Hast Du mal probiert das Sonderzeichen "Underscore" im Raum zu entfernen?</code>
                                        ``` ` 
                                        1 Reply Last reply Reply Quote 0
                                        • K
                                          K-L-S last edited by

                                          Ich würde das Sonderzeichen "Underscore" entfernen. Wenn Du die Funktion anschaust da steht:

                                          room = room.replace(/\s/g, "_")

                                          1 Reply Last reply Reply Quote 0
                                          • O
                                            Okidoki3009 last edited by

                                            @K-L-S:

                                            Ich würde das Sonderzeichen "Underscore" entfernen. Wenn Du die Funktion anschaust da steht:

                                            room = room.replace(/\s/g, "_") `

                                            danke dir:-) jetzt sieht es schon mal besser aus

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            climate heating javascript template
                                            115
                                            1127
                                            351817
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo