Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly-Script Thermostat/Heizung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly-Script Thermostat/Heizung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @Kaba last edited by Asgothian

      @kaba

      Das ganze lässt sich am besten mit einer Variable / einem benutzerdefinierten State "Automatik_Aktiv" lösen, den du am Anfang einmal auf wahr setzt. Dazu wird diese Logik benutzt:

      • wenn du die Heizung von Hand einschaltest setzt Du den State auf falsch.

      • wenn du die Heizung von Hand wieder ausschaltest setzt Du den State auf wahr.

      • wenn das Fenster geschlossen wird (Wichtig!!!) setzt du den Start auf wahr.

      • wenn das Fenster geöffnet wird setzt du den State auf falsch und die Heizung auf aus.
        Mit diesen Beiden Bedingungen hast du auch gleich sichergestellt das du nicht versuchst die Aussenwelt mit zu heizen 🙂

      In deinem eigentlichen Skript fehlt dann noch die Berücksichtigung des States - sowohl das einschalten als auch das ausschalten sollten nur bei "Automatik_Aktiv=wahr" passieren. Zusätzlich kommt dann noch ein "falls temp > 21" dann Heizung aus, Automaitk_aktiv auf wahr

      A.

      Kaba 1 Reply Last reply Reply Quote 0
      • Kaba
        Kaba @Asgothian last edited by

        @asgothian
        Ich danke dir für deine Antwort.
        Würde das nicht aber nur funktionieren, wenn der Wlan-Stecker eine ID für die manuelle Betätigung hätte? Ich kann leider nur die ID, State, true/false auslesen.

        Asgothian 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Kaba last edited by paul53

          @kaba sagte: Duschen die Heizung manuell am Wlan-Stecker einzuschalten. Diese könnte dann manuell wieder augeschaltet werden, nach dem Duschen durch öffnen des Fensters (Fensterkontakt) oder beim erreichen von z.B. >21 Grad.

          Vorschlag:

          Bild_2022-01-21_134904.png

          Wert und Ursprung findet man unter "Trigger"

          Blockly_DP_Props.JPG

          Kaba 1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @Kaba last edited by

            @kaba da wo ich "Heizung von hand einschalten" sage meine ich natürlich den Schalter mit dem du die Heizung ein oder ausschalten willst. So etwas musst du ja haben wenn du "vorwärmen" willst, sei es mit einem physikalischen Taster oder einem Button auf einer Visualisierung

            A.

            Kaba 1 Reply Last reply Reply Quote 0
            • Kaba
              Kaba @paul53 last edited by

              @paul53

              Danke für deine Mühe und deinen Vorschlag. Nach 20 Mal angucken verstehe ich ihn allerdings immer noch nicht. Z.B. auf was bei dem Temperaturblock die Variable "heizung" triggert...

              1 Reply Last reply Reply Quote 0
              • Kaba
                Kaba @Asgothian last edited by

                @asgothian

                Ja genau, ich habe einen physikalischen Schalter am Wlan-Stecker. Da ich aber nur eine ID des States true/false habe, würde dieser ja immer geändert werden. Sei es über die Variable als auch über den Schalter. Oder stehe ich komplett auf dem Schlauch...?

                Asgothian 1 Reply Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @Kaba last edited by Asgothian

                  @kaba das macht meinen Vorschlag komplizierter, aber nicht unmöglich. Ich Bau mal was zusammen ähnlich wie @paul53.. kann aber etwas dauern. Lohnt nicht. Es sähe fast genau so aus wie das von @paul53.

                  Was genau verstehst du bei seinem Skript nicht ?

                  A.

                  Kaba 1 Reply Last reply Reply Quote 0
                  • Kaba
                    Kaba @Asgothian last edited by

                    @asgothian
                    Ich verstehe den Aufbau bzw. die Logik dahinter nicht 🙄
                    Wo kommt rechts die Variable "heizung" her und was tut sie? Unten muss erneut auf den Fenstersensor getriggert werden?Ich habe es einfach mal nach gebaut, macht es vielleicht einfacher:

                    Blockly.png

                    Asgothian paul53 2 Replies Last reply Reply Quote 0
                    • Asgothian
                      Asgothian Developer @Kaba last edited by Asgothian

                      @kaba die Logik ist recht einfach:

                      Wenn die Temperatur sich ändert (der temp. Trigger) wird erst geschaut ob das Fenster offen ist. Wenn ja, dann nix machen, damit du nicht die Umwelt heizt.

                      Die Variable Heizung dient nur dazu den soll Zustand der Heizung zu ermitteln. Sie wird innerhalb des triggers gesetzt und ausgewertet.

                      Der trigger auf “Heizung Bad” dient der Erkennung des “einschalten von Hand”. Wenn das Skript die Heizung schaltet dann ist der Ursprung System.adapter.JavaScript.0. Wenn wer anders das tut (eine visualisierung, oder der Button an der Steckdose) dann ist der Ursprung anders gesetzt.

                      Der trigger auf das offene Fenster dient dazu die Heizung abzuschalten. Da hast du in deiner Variante einen Fehler, das steuere muss auf “heizungBad” gehen, nicht auf “Sensor_Bad_is_open”

                      Auch da wo du “Fenster?” Dran geschrieben hast muss “HeizungBad” rein

                      A.

                      Kaba 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Kaba last edited by paul53

                        @kaba
                        Habe mal "Objekt ID" an den 4 Stellen ersetzt:

                        Bild_2022-01-24_115920.png

                        • Der Trigger links oben schaltet die Heizung beim Öffnen des Fensters aus.
                        • Der Trigger links unten stellt fest, dass die Heizung manuell eingeschaltet wurde und passt den Sollwert an
                        • Der Trigger rechts enthält den 2-Punkt-Regler für die Temperatur, der bei offenem Fenster gesperrt wird.
                        1 Reply Last reply Reply Quote 0
                        • Kaba
                          Kaba @Asgothian last edited by

                          @asgothian
                          @paul53

                          Ich danke Euch! Nun verstanden, umgebaut und getestet 😊
                          Da wäre ich alleine nicht drauf gekommen!
                          Nur noch eine kurze Frage - müsste es unten links nicht, mache 17, sonst 21 sein?

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Kaba last edited by

                            @kaba sagte: müsste es unten links nicht, mache 17, sonst 21 sein?

                            Nein, beim Duschen (Heizung manuell ein) soll der höhere Sollwert greifen.

                            @kaba sagte in Blockly-Script Thermostat/Heizung:

                            beim/vor'm Duschen die Heizung manuell am Wlan-Stecker einzuschalten.

                            Kaba 2 Replies Last reply Reply Quote 0
                            • Kaba
                              Kaba @paul53 last edited by

                              @paul53
                              Danke 😊

                              1 Reply Last reply Reply Quote 0
                              • Kaba
                                Kaba @paul53 last edited by Kaba

                                @paul53
                                @Asgothian

                                Guten Morgen zusammen, ich noch einmal.
                                Nachdem das Script nun ein bisschen lief, ist mir aufgefallen, dass die Heizung zwar bei 17 Grad einschaltet (bzw. <17), jedoch nicht mehr abschaltet.

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Kaba last edited by

                                  @kaba sagte Heizung zwar bei 17 Grad einschaltet (bzw. <17), jedoch nicht mehr abschaltet.

                                  Sie muss bei >= 18 °C abschalten.

                                  Kaba 1 Reply Last reply Reply Quote 0
                                  • Kaba
                                    Kaba @paul53 last edited by

                                    @paul53
                                    Ja, das tut sie leider nicht. Sie schaltet gar nicht mehr ab.

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @Kaba last edited by

                                      @kaba sagte: tut sie leider nicht.

                                      Poste bitte den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

                                      Kaba 2 Replies Last reply Reply Quote 0
                                      • Kaba
                                        Kaba @paul53 last edited by

                                        @paul53

                                        var BadezimmerSollwert, heizung;
                                        
                                        
                                        BadezimmerSollwert = 16;
                                        // Fenster
                                        on({id: 'zigbee.0.00158d0003a00d06.opened', change: "gt"}, async function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          setState("hs100.0.192_168_178_33.state"/*HeizungBad*/, false);
                                        });
                                        // Heizung
                                        on({id: 'hs100.0.192_168_178_33.state', change: "ne"}, async function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          if ((obj.state ? obj.state.val : "") && (obj.state ? obj.state.from : "") != 'system.adapter.javascript.0') {
                                            BadezimmerSollwert = 19;
                                          } else {
                                            BadezimmerSollwert = 16;
                                          }
                                        });
                                        
                                        // Temperatur
                                        on({id: 'hm-rpc.1.000E5BE9A77AD0.1.ACTUAL_TEMPERATURE', change: "ne"}, async function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          if (!getState("zigbee.0.00158d0003a00d06.opened").val) {
                                            if ((obj.state ? obj.state.val : "") <= BadezimmerSollwert) {
                                              heizung = true;
                                            } else if ((obj.state ? obj.state.val : "") >= parseFloat(BadezimmerSollwert) + 1) {
                                              heizung = false;
                                            }
                                            if (heizung != getState("hs100.0.192_168_178_33.state").val) {
                                              setState("hs100.0.192_168_178_33.state"/*HeizungBad*/, heizung);
                                            }
                                          }
                                        });
                                        
                                        on({id: 'zigbee.0.00158d0003a00d06.opened', change: "ne"}, async function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          if (getState("zigbee.0.00158d0003a00d06.opened").val == true && getState("hm-rpc.1.00115A4996E621.4.LEVEL").val < 100) {
                                            setState("hm-rpc.1.00115A4996E621.4.LEVEL"/*RA_Bad:4.LEVEL*/, 100);
                                          }
                                        });
                                        
                                        paul53 1 Reply Last reply Reply Quote 0
                                        • Kaba
                                          Kaba @paul53 last edited by

                                          @paul53

                                          Ich habe die Temperatur noch angepasst und ergänzt, dass wenn Abends das Rollo schon geschlossen ist, es beim öffnen des Fensters hoch fährt.

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • L
                                            Linedancer last edited by Linedancer

                                            Ganz schön kompliziert….
                                            Du hast doch ein Homematic Thermostat, warum dann per Script die Temperatursteuerung nachbilden?
                                            Du setzt beim Thermostat deine Comfort und Eco Temperaturen. Das HM Thermostat hat im Kanal 7 den DP „Decision Value. Der ist bei Heizung aus =0 und bei Heizung ein =200.
                                            Das Blockly hat dann nur die Funktion
                                            wenn Decision Value = 0 dann wlan Dose aus
                                            Sonst
                                            WLAN Dose ein

                                            Du schreibst leider nicht was für einen Fensterkontakt du hast. Wenn das auch ein Homematic tfk ist, kannst du den per Direktverknüpfung mit dem HM Thermostat verbinden und musst dich auch nicht mehr per Script drum kümmern, ob Fenster auf oder zu.

                                            Für das händische Einschalten der Heizung direkt an der WLAN Dose, wählst du vorher am HM Thermostat mit der linken Taste den Manu Mode. Wenn die Regelung wieder greifen soll wählst du Auto Mode.
                                            Damit das nicht vergessen geht kann man die Umschaltung auf Auto mit einem Script z.B. nachts um 00:00 automatisieren.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            741
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            4
                                            27
                                            1435
                                            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