Navigation

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

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Vorlage] Heizungsthermostatsteuerung - Script

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

      Danke hat jetzt funktioniert hab Kate als Editor genommen. Sieht echt Klasse aus was du da auf die Beine gestellt hast genau sowas hatte ich gesucht.

      Gruß Torsten

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

        Hi, kannst Du mir da eventuell auf die Sprünge helfen wie Du das genau gemacht hast? 😉

        @nobse:

        Hallo

        habe bei mir das Feiertagsscript installiert und var UseFeiertagskalender = true; gesetzt.

        feiertage.0.heute.boolean ist true

        Es wird aber nicht die Einstellung für Feiertag verwendet sondern die für Freitag.

        Ist das bei euch auch so? `

        1 Reply Last reply Reply Quote 0
        • N
          nobse last edited by

          Hallo

          also du must das Feiertags Module installiert haben.

          Dann kannst du im Heizungsscript die Variable UseFeiertagskalender auf true setzen. Das findest du ca. in Zeile 118.

          Dann nimmt das Heizungsscript zur Steuerung die Feiertage aus dem Feiertags Modul.

          Hoffe das ist das was du wissen wolltest.

          Gruß Norbert

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

            Moin Norbert. Ich denke du meinst den Adapter "Feiertage"? Ich probier das nachher mal aus. Ich meld mich dann. Danke! 🙂

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

              Ich hab das jetzt mal eingebaut. Bin ich gespannt ob das Montag (01.05.) funzt! 🙂

              kleiner Nachtrag. geht! 😄

              1 Reply Last reply Reply Quote 0
              • W
                webseb79 last edited by

                Hallo Looxer,

                habe dein Script jetzt eine Zeit lang laufen und wollte durch die warmen Tage meine Heizung ausschalten und habe die Heizperiode auf false gestellt durch ein Schalter in der Visu.

                Dann kam die Fehlermeldung:

                host.cubox-i	2017-05-17 16:55:00.457	error	instance system.adapter.javascript.0 terminated with code 0 (OK)
                host.cubox-i	2017-05-17 16:55:00.423	info	instance system.adapter.weatherunderground.0 started with pid 14908
                javascript.0	2017-05-17 16:55:00.322	error	ReferenceError: z is not defined at LoopDevices (script.js.Heizung.Heizplan:724:44) at LoopRooms (script.js.Heizung.Heizplan:678:13) at Object. (script.js.Heizung.Heizplan:416:1
                javascript.0	2017-05-17 16:55:00.321	error	uncaught exception: z is not defined
                

                Kannst du dir das mal anschauen?

                Der Fehler lässt den javascript Adapter komplett abstürzen und neu starten.

                Als zweite Frage:

                kannst du das Script so modifizieren das ich kein ValueList Widget nehme für die Sollwerttemperatur sondern ein Input Widget mit direkter Vorgabe von z.B. 17°C.

                Jetzt wird ja nur als Text die Gradzahl mir angezeigt , aber im Script kommen ja Zahlen von 0-37.

                Danke im voraus

                Sebastian

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

                  @webseb79:

                  und habe die Heizperiode auf false gestellt durch ein Schalter in der Visu.

                  Dann kam die Fehlermeldung: `

                  Einen Fehler hatte ich noch nicht bemerkt aber der Punkt steht auf meiner Liste. 😉

                  Schau ich mir an.

                  @webseb79:

                  kannst du das Script so modifizieren das ich kein ValueList Widget nehme für die Sollwerttemperatur sondern ein Input Widget mit direkter Vorgabe von z.B. 17°C. `

                  Das ist schon eingebaut aber noch nicht getestet. In den Experteneinstellungen gibt es eine Variable:

                  // Bei Verwendung des Widgets Select-value List werden die Temperaturen nicht als Grad gespeichert

                  var VerwendungSelectValue = true;

                  wenn du die auf false setzt sollten alle Temperaturangaben ohne SelectValue laufen. Das gilt aber wirklich für alle und nicht nur für die Solltemperatur.

                  vG Looxer

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

                    @webseb79:

                    wollte durch die warmen Tage meine Heizung ausschalten und habe die Heizperiode auf false gestellt durch ein Schalter in der Visu.

                    Dann kam die Fehlermeldung: `

                    ich habe die Version 0.76 hochgeladen. Könntest du testen und feedback geben ?

                    vielen Dank

                    Looxer

                    1 Reply Last reply Reply Quote 0
                    • W
                      webseb79 last edited by

                      Hallo looxer,

                      die Abschaltung der Heizperiode funktioniert…Danke.

                      Die Umstellung der SelectValue funktioniert auch , hatte an dem Punkt vorher schonmal rumprobiert aber es hat nicht geklappt , darum dann auch meine Frage.

                      Ich mußte wirklich alle SelectValue aus meinen Views löschen und die Datenpunkte unter javascript.0 löschen und das Script neu starten damit alles neu angelegt wird , danach nimmt er die Temperaturen wie gewollt.

                      Eine Warnung kommt noch.

                      In Zeile 1351 legst du einen Datenpunkt "View_Manually_Adjusted" an mit "false" und "boolean".

                      Ich habe das in "0" und "number" geändert und die Warnung kommt nicht mehr.

                      Kannst nochmal drüber schauen , vielleicht ist es so ok wie ich das geändert habe und du ändert das beim nächsten Scriptstand mit.

                      Danke und Gruß

                      Sebastian

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

                        @webseb79:

                        Kannst nochmal drüber schauen , vielleicht ist es so ok wie ich das geändert habe und du ändert das beim nächsten Scriptstand mit. `
                        ja stimmt, danke. kommt mit der nächsten Version

                        Noch eine Bitte. Ich wäre interessiert deine View zu sehen. Könntest du die hier zur Verfügung stellen ? - ggf auch per PN

                        Danke dir

                        Looxer

                        1 Reply Last reply Reply Quote 0
                        • W
                          webseb79 last edited by

                          Die Views sind noch im Aufbau , wenn sie fertig sind schicke ich sie dir oder stelle sie in diesen Thread.

                          Ist eigentlich eine Grundview vom Raum und von dort aus ein Dialog mit den Sollwerteinstellungen.

                          Im Dialog hab ich ein Valuelist für die einzelnen Tage mit der ich die Sollwerte und Zeiten Sichtbar schalte oder nicht.

                          Gruß

                          Sebastian

                          1 Reply Last reply Reply Quote 0
                          • W
                            webseb79 last edited by

                            Hallo looxer,

                            habe die var VerwendungSelectValue = false jetzt in Verwendung.

                            Leider kommen Fehlermedungen

                            javascript.0	2017-05-19 14:54:07.522	info	script.js.Heizung.Heizplan: Routine ThermostatChange: Thermostat hm-rpc.0.LEQ0998929.2.SET_TEMPERATURE Raum undefined Thermostat Solltemperatur-Aenderung erkannt
                            hm-rpc.0	2017-05-19 14:54:01.054	info	setValue ["LEQ0998929:2","SET_TEMPERATURE",{"explicitDouble":"19"}] FLOAT
                            javascript.0	2017-05-19 14:54:01.019	info	script.js.Heizung.Heizplan: Ende Abarbeitung fuer Raum Schlafzimmer
                            javascript.0	2017-05-19 14:54:01.019	warn	Wrong type of javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp: "string". Please fix, while deprecated and will not work in next versions.
                            javascript.0	2017-05-19 14:54:01.018	warn	Wrong type of hm-rpc.0.LEQ0998929.2.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.
                            javascript.0	2017-05-19 14:52:05.024	info	script.js.Heizung.Heizplan: Routine ThermostatChange: Thermostat hm-rpc.0.LEQ0998929.2.SET_TEMPERATURE Raum undefined Thermostat Solltemperatur-Aenderung erkannt
                            javascript.0	2017-05-19 14:52:01.015	info	script.js.Heizung.Heizplan: Ende Abarbeitung fuer Raum Schlafzimmer
                            javascript.0	2017-05-19 14:52:01.014	warn	Wrong type of javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp: "string". Please fix, while deprecated and will not work in next versions.
                            host.cubox-i	2017-05-19 14:50:07.250	info	instance system.adapter.weatherunderground.0 terminated with code 0 (OK)
                            weatherunderground.0	2017-05-19 14:50:03.900	info	starting. Version 1.0.2 in /opt/iobroker/node_modules/iobroker.weatherunderground, node: v4.8.3
                            hm-rpc.0	2017-05-19 14:50:01.108	info	setValue ["LEQ0998929:2","SET_TEMPERATURE",{"explicitDouble":"19"}] FLOAT
                            javascript.0	2017-05-19 14:50:01.026	info	script.js.Heizung.Heizplan: Ende Abarbeitung fuer Raum Schlafzimmer
                            javascript.0	2017-05-19 14:50:01.026	warn	Wrong type of javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp: "string". Please fix, while deprecated and will not work in next versions.
                            javascript.0	2017-05-19 14:50:01.024	warn	Wrong type of hm-rpc.0.LEQ0998929.2.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.
                            host.cubox-i	2017-05-19 14:50:00.393	info	instance system.adapter.weatherunderground.0 started with pid 26587
                            javascript.0	2017-05-19 14:48:01.012	info	script.js.Heizung.Heizplan: Ende Abarbeitung fuer Raum Schlafzimmer
                            javascript.0	2017-05-19 14:47:17.022	warn	Wrong type of javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manually_Adjusted: "number". Please fix, while deprecated and will not work in next versions.
                            javascript.0	2017-05-19 14:47:17.015	info	script.js.Heizung.Heizplan: Routine ThermostatChange: Thermostat hm-rpc.0.LEQ0998929.2.SET_TEMPERATURE Raum undefined Thermostat Solltemperatur-Aenderung erkannt
                            hm-rpc.0	2017-05-19 14:46:01.039	info	setValue ["LEQ0998929:2","SET_TEMPERATURE",{"explicitDouble":"19"}] FLOAT
                            javascript.0	2017-05-19 14:46:01.004	info	script.js.Heizung.Heizplan: Ende Abarbeitung fuer Raum Schlafzimmer
                            javascript.0	2017-05-19 14:46:01.003	warn	Wrong type of javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp: "string". Please fix, while deprecated and will not work in next versions.
                            javascript.0	2017-05-19 14:46:01.002	warn	Wrong type of hm-rpc.0.LEQ0998929.2.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.
                            

                            Ich stelle mit jqui input eine 19°C ein ohne Komma und kein String als Haken anwählbar.

                            Alle 2 Minuten wird das Script abgearbeitet, vorher wird aber auf die alte Temperatur wieder zurückgestellt und es kommt die Zeitangabe, als wenn ich manuell eine Solltemperatur vorgebe.

                            Auch der Datentyp "String" am Set Temperature macht mich stutzig…dort ist der Datentyp "Zahl" vorgegeben.

                            Gruß

                            Sebastian

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

                              @webseb79:

                              habe die var VerwendungSelectValue = false jetzt in Verwendung.

                              Leider kommen Fehlermedungen `

                              ich hatte es noch nicht getestet.

                              Dann muss ich mir ein Beispiel aufbauen und mal sehen was da passiert.

                              kurze Frage: warum willst du de select values Widgets nicht verwenden ?

                              vG Looxer

                              1 Reply Last reply Reply Quote 0
                              • W
                                webseb79 last edited by

                                Hallo looxer,

                                ich arbeite in meiner Visualisierung nur mit den Input Widget , Input Date und Input Datetime und wollte die Linie weiter fahren.

                                Aber manchmal muß man auch mal umsteigen wenn es nicht anders geht.

                                In punkto Hardware nutze ich

                                Wandthermostat

                                1 Reply Last reply Reply Quote 0
                                • W
                                  webseb79 last edited by

                                  upps..

                                  Wandthermostat = HM-TC-IT-WM-W-EU

                                  Heizkörper = HM-CC-RT-DN

                                  Fensterkontakt = HM-Sec-RHS und HM-SEC-SC-2

                                  Gruß Sebastian

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    JesusC last edited by

                                    Hallo zusammen,

                                    ich habe mich heute einmal daran versucht, das angegebene Script incl. Vis zu implementieren. Da ist noch ziemlicher iobroker-Neuling bin muss ich gestehen, dass ich mich in diverse Sachen noch einarbeiten muss. Ich hab das Script unter "Skripte" als globales Script hinterlegt, die in der Doku vorgeschlagenen Anpassungen vorgenommen und das Script gestartet. Das Log meldet mir lediglich:

                                    javascript.0 2017-09-12 09:46:15.264 info received all objects

                                    javascript.0 2017-09-12 09:46:14.732 info received all states

                                    javascript.0 2017-09-12 09:46:14.014 info requesting all objects

                                    javascript.0 2017-09-12 09:46:13.998 info requesting all states

                                    javascript.0 2017-09-12 09:46:13.982 info starting. Version 3.4.0 in C:/ioBroker/node_modules/iobroker.javascript, node: v4.5.0

                                    Einträge unter Aufzählungen (rooms und functions) stimmen mit meiner CCU2 überein. Wand- und Heizungsthermostate, sowie Verschluss-Kontakte sind in den entsprechenden Gewerken.

                                    Hab im Script das debugging aktiviert, trotzdem keine weiteren Einträge im iobroker-Log. Oder tauchen die debugging-Einträge nur im extern gespeicherten Log auf, sofern man dieses definiert?

                                    Grüße

                                    jC

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

                                      Moin, sollte das script nicht besser unter "common" stehen? Bei mir ist das so und es läuft ohne Probleme. Da sind aber die Experten eher gefragt. 😉

                                      1 Reply Last reply Reply Quote 0
                                      • J
                                        JesusC last edited by

                                        Probieren geht über studieren. Nun erhalte ich immerhin eine Fehlermeldung.

                                        10:27:28.434 [error] javascript.0 script.js.common.HzThSt_V076: TypeError: Cannot read property 'native' of null

                                        10:27:28.434 [error] javascript.0 at script.js.common.HzThSt_V076:424:43

                                        das wäre dann: devtype = getObject(idExtract).native.TYPE;

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

                                          Hi,

                                          das sollte nicht passieren. Poste doch mal den Einstellungsbereich des Scriptes.

                                          vG Looxer

                                          1 Reply Last reply Reply Quote 0
                                          • J
                                            JesusC last edited by

                                            Die Usereinstellungen im Script?

                                            ! //–----------------------------------------------------------------------------
                                            ! // Beginn USER Einstellungen
                                            ! //------------------------------------------------------------------------------
                                            ! //
                                            ! // 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.
                                            ! // Alle x Minuten wird gecheckt ob die SollTemp angepasst werden muss - Empfehlung 5
                                            ! var cron = 5;
                                            ! // 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 = false; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
                                            ! var RoomList = [];
                                            ! RoomList[0] = ['Schlafzimmer']; // Liste der Raeume die gesteuert werden soll zum Testen
                                            ! RoomList[1] = ['Elternbad'];
                                            ! RoomList[2] = ['Wohnzimmer'];
                                            ! RoomList[3] = ['Kueche'];
                                            ! RoomList[4] = ['Raum4'];
                                            ! RoomList[5] = ['Raum5'];
                                            ! RoomList[6] = ['Raum6'];
                                            ! RoomList[7] = ['Raum7'];
                                            ! RoomList[8] = ['Raum8'];
                                            ! RoomList[9] = ['Raum9'];
                                            ! // Anzahl der Profile. i.d.R. sollten maximal 3 Profile genuegen - Profile werden z.B. fuer Events aus ICAL verwendet
                                            ! var MaxProfile = 1; // Maximal genutzte Profile pro Raum (gering halten ) Zahl zwischen 1 und 9
                                            ! // Das ist die Temperatur, die eingestellt wird, wenn erkannt wird, dass ein Verschluss eines Raumes geoeffnet ist (z.B bei nicht direktverknuepften Geraeten)
                                            ! var VerschlussAbsenkungsGrenze = 12;
                                            ! // erweitertetes Logging im ioBroker log bei true
                                            ! var debug = false;
                                            ! // Logging in externe Datei - Achtung der Pfad muss fuer MS-Windows bzw IOS angepasst werden
                                            ! var LogFlag = false; // logging enabled
                                            ! var LogPath = "/opt/iobroker/iobroker-data/HeizungsthermostatLOG.csv"; // Pfad und Dateiname des externen Logs
                                            ! var OnlyChanges = true; // bei true wird nur geloggt wennn eine neue Solltemperatur geschrieben wird
                                            ! // ICAL Einstellungen (erst nach Ersteinstellung Aktivieren)
                                            ! // Wenn keine Events genutzt werden, dann alles auf false setzen
                                            ! // die Events muessen entsprechend in ICAL angelegt werden, sonst gibt es Warnmeldungen im Log
                                            ! // Die Eventnamen koennen angepasst werden. Bitte die Logkik von ICAL unbeding beachten. (siehe Doku im Kapitel ICAL)
                                            ! var UseEventsGlobalParameter = false; // mit diesen Events koennen Urlaub Party etc geplant werden - Empfehlung erst im zweiten Schritt aktivieren
                                            ! var UseEventsGlobalProfilSelect = false; // Events mit denen das Profil umgeschaltet werden kann - fuer alle Raeume - Empfehlung erst im zweiten Schritt aktivieren
                                            ! var UseEventsRaumProfilSelect = false; // Events mit denen das Profil fuer einzelne Raeume umgeschaltet werden kann - Empfehlung erst im zweiten Schritt aktivieren
                                            ! var EventG_UrlaubAbwesend = "Urlaub_Abwesend"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
                                            ! var EventG_UrlaubAnwesend = "Urlaub_Anwesend"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
                                            ! var EventG_Party = "Party"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
                                            ! var EventG_Gaeste = "Gaeste"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
                                            ! var EventG_Abwesend = "Keiner_DA"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
                                            ! var EventG_Feiertag = "Feiertag"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
                                            ! // Die folgenden EVENT Texte muessen in ICAL angelegt werden. Sobald die Texte im google Kalender
                                            ! // aktiv sind wird das Event fuer die Heizungsthermostatsteuerung ausgewertet.
                                            ! // Achtung die Zeichen <> und der Text innerhalb dieser Klammer duerfen nicht geaendert werden
                                            ! // siehe Dokumentation fuer mehr infos
                                            ! var UseEventG_Profil = "Global_Profil_<profilnummer>"; // Events mit denen das Profil umgeschaltet werden kann - muss in ICAL angelegt werden wenn UseEventP_Profil = true ist
                                            ! var UseEventR_Profil = "<raumname>Profil<profilnummer>"; // Events mit denen das Raumprofil umgeschaltet werden kann - muss in ICAL angelegt werden wenn UseEventsRaumProfilSelect = true ist
                                            ! // Integration zur Anwesenheitsermittlung -
                                            ! var UseAnwesenheitserkennung = false; // wenn true, dann wird die o.g. Anwesenheitsvariable genutzt - Empfehlung erst im zweiten Schritt aktivieren
                                            ! var StateAnwesenheitFunction = JSPath + "Anwesenheitssteuerung.Userlist.JemandDa"; // Wenn UseAnwesenheitserkennung = true, dann muss der Pfad angepasst werden
                                            ! // Integration zum Feiertagskalender -
                                            ! var UseFeiertagskalender = false; // wenn der Kalender genutzt wird bitte auf true setzen - Empfehlung: Feiertagsadapter installieren und auf true setzen
                                            ! var StateFeiertagHeuteAdapter = "feiertage.0.heute.boolean"; //wenn UseFeiertagskalender, dann wird dieser Pfad verwendet</profilnummer></raumname></profilnummer>

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            651
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            34
                                            313
                                            74679
                                            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