Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Blockly-Script Thermostat/Heizung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    918

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    688

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Blockly-Script Thermostat/Heizung

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
27 Beiträge 4 Kommentatoren 2.4k Aufrufe 4 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.
  • KabaK Kaba

    @asgothian
    Ich verstehe den Aufbau bzw. die Logik dahinter nicht :face_with_rolling_eyes:
    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

    AsgothianA Offline
    AsgothianA Offline
    Asgothian
    Developer
    schrieb am zuletzt editiert von Asgothian
    #10

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

    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

    KabaK 1 Antwort Letzte Antwort
    0
    • KabaK Kaba

      @asgothian
      Ich verstehe den Aufbau bzw. die Logik dahinter nicht :face_with_rolling_eyes:
      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #11

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

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • AsgothianA 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.

        KabaK Offline
        KabaK Offline
        Kaba
        schrieb am zuletzt editiert von
        #12

        @asgothian
        @paul53

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

        paul53P 1 Antwort Letzte Antwort
        0
        • KabaK Kaba

          @asgothian
          @paul53

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

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #13

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

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          KabaK 2 Antworten Letzte Antwort
          0
          • paul53P paul53

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

            KabaK Offline
            KabaK Offline
            Kaba
            schrieb am zuletzt editiert von
            #14

            @paul53
            Danke :blush:

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

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

              KabaK Offline
              KabaK Offline
              Kaba
              schrieb am zuletzt editiert von Kaba
              #15

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

              paul53P 1 Antwort Letzte Antwort
              0
              • KabaK 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.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #16

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

                Sie muss bei >= 18 °C abschalten.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                KabaK 1 Antwort Letzte Antwort
                0
                • paul53P paul53

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

                  Sie muss bei >= 18 °C abschalten.

                  KabaK Offline
                  KabaK Offline
                  Kaba
                  schrieb am zuletzt editiert von
                  #17

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

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • KabaK Kaba

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

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #18

                    @kaba sagte: tut sie leider nicht.

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

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    KabaK 2 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @kaba sagte: tut sie leider nicht.

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

                      KabaK Offline
                      KabaK Offline
                      Kaba
                      schrieb am zuletzt editiert von
                      #19

                      @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);
                        }
                      });
                      
                      paul53P 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @kaba sagte: tut sie leider nicht.

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

                        KabaK Offline
                        KabaK Offline
                        Kaba
                        schrieb am zuletzt editiert von
                        #20

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

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • L Online
                          L Online
                          Linedancer
                          schrieb am zuletzt editiert von Linedancer
                          #21

                          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.

                          –

                          Ciao, Gerhard

                          KabaK 1 Antwort Letzte Antwort
                          0
                          • KabaK Kaba

                            @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);
                              }
                            });
                            
                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #22

                            @kaba
                            Im Skript sind keine Fehler zu erkennen. Das Skript läuft in der JS-Instanz 0? Wenn ja, füge mal Debug-Blöcke in den Temperatur-Trigger ein, um die Temperatur und den Sollwert zu loggen.

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            KabaK 2 Antworten Letzte Antwort
                            0
                            • KabaK Kaba

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

                              paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #23

                              @kaba sagte: ergänzt, dass wenn Abends das Rollo schon geschlossen ist, es beim öffnen des Fensters hoch fährt.

                              Das solltest Du in einem Trigger mit dem Ausschalten der Heizung zusammenfassen.

                              Bild_2022-01-25_163228.png

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              KabaK 1 Antwort Letzte Antwort
                              0
                              • L 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.

                                KabaK Offline
                                KabaK Offline
                                Kaba
                                schrieb am zuletzt editiert von
                                #24

                                @linedancer

                                Danke für deinen Vorschlag, ich habe allerings "nur" das Thermostat ohne Tasten. Der Fensterkontakt ist nicht von HM.

                                1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @kaba
                                  Im Skript sind keine Fehler zu erkennen. Das Skript läuft in der JS-Instanz 0? Wenn ja, füge mal Debug-Blöcke in den Temperatur-Trigger ein, um die Temperatur und den Sollwert zu loggen.

                                  KabaK Offline
                                  KabaK Offline
                                  Kaba
                                  schrieb am zuletzt editiert von
                                  #25

                                  @paul53

                                  Ja, läuft in der nuller Instanz. Habe ich soeben eingefügt.

                                  1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @kaba sagte: ergänzt, dass wenn Abends das Rollo schon geschlossen ist, es beim öffnen des Fensters hoch fährt.

                                    Das solltest Du in einem Trigger mit dem Ausschalten der Heizung zusammenfassen.

                                    Bild_2022-01-25_163228.png

                                    KabaK Offline
                                    KabaK Offline
                                    Kaba
                                    schrieb am zuletzt editiert von
                                    #26

                                    @paul53

                                    Vielen Dank, gute Idee. Habe ich so umgesetzt :+1:

                                    1 Antwort Letzte Antwort
                                    0
                                    • paul53P paul53

                                      @kaba
                                      Im Skript sind keine Fehler zu erkennen. Das Skript läuft in der JS-Instanz 0? Wenn ja, füge mal Debug-Blöcke in den Temperatur-Trigger ein, um die Temperatur und den Sollwert zu loggen.

                                      KabaK Offline
                                      KabaK Offline
                                      Kaba
                                      schrieb am zuletzt editiert von
                                      #27

                                      @paul53 sagte in Blockly-Script Thermostat/Heizung:

                                      @kaba
                                      Im Skript sind keine Fehler zu erkennen. Das Skript läuft in der JS-Instanz 0? Wenn ja, füge mal Debug-Blöcke in den Temperatur-Trigger ein, um die Temperatur und den Sollwert zu loggen.

                                      Ich habe den Fehler bzw. das Problem gefunden. Ich habe die Temperatur ja nachträglich noch angepasst (auf 16 Grad) scheinbar ist irgendwo aber noch die 17 gespeichert, denn die Heizung ist gerade bei >=18 aus gegangen.

                                      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

                                      928

                                      Online

                                      32.6k

                                      Benutzer

                                      82.0k

                                      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