Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] Fensterkontakt steuert Thermostat - Logikfehler?

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    [gelöst] Fensterkontakt steuert Thermostat - Logikfehler?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Slowman
      Slowman @amg_666 last edited by

      @amg_666

      Danke für deine Antwort.

      Sieht jetzt so aus der Script, richtig?

      Screenshot_2020-12-14 javascript - ioBroker(2).png

      Mit dem Datenpunkt Heizungsperiode meinst du es so hier?

      Screenshot_2020-12-14 javascript - ioBroker(3).png

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

        @Slowman sagte:

        Mit dem Datenpunkt Heizungsperiode meinst du es so hier?

        So funktioniert es nicht. Besser so:

        Blockly_temp.JPG

        1 Reply Last reply Reply Quote 1
        • Slowman
          Slowman last edited by

          @paul53

          Buh, da muss ich erst mal durchblicken.
          Du hast mir den Blockly von mir in eine bessere Variante umgeschrieben?

          Er schaltet ja dann die komplette Heizung und nicht nur das Thermostat.

          Muss ich mir später noch mal anschauen.

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

            @Slowman sagte:

            Er schaltet ja dann die komplette Heizung und nicht nur das Thermostat.

            Nein, der zu schaltende Datenpunkt soll sich nicht ändern.

            @Slowman sagte in Fensterkontakt steuert Thermostat - Logikfehler?:

            in eine bessere Variante umgeschrieben?

            Die Verwendung von Variablen spart Ressourcen.
            Bei Ende der Heizperiode muss auch ausgeschaltet werden, da sonst evtl. den ganzen Sommer durchgeheizt wird.

            Slowman 1 Reply Last reply Reply Quote 1
            • Slowman
              Slowman @paul53 last edited by Slowman

              @paul53

              Danke, werde jetzt mal den Blockly für mich anpassen und dann mal zur Kontrolle posten.
              Der 2. kleine Blockly ist ein extra Blockly oder mit rein-

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

                @Slowman sagte:

                oder mit rein-

                Der zweite Trigger muss in das gleiche Skript, da die Übergabe der Heizperiode an die erste Trigger-Funktion über eine Variable erfolgt.

                Wert findet man unter "Trigger".

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

                  @paul53

                  So mal nach gebaut, aber so richtig sehe ich noch nicht durch. So richtig? Wie mache ich das mit der Heizperiode an/aus. Müsste ja ein extra Script sein.

                  Screenshot_2020-12-14 javascript - ioBroker(6).png

                  Aber glaube nicht mehr ganz so blind. Zu der Heizung noch ne Erklärung ist ein Tado, dort habe ich beim alten Script, zu erst Power eingeschaltet bzw. aus und Automatik springt ins Programm zurück.

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

                    @Slowman sagte:

                    Zu der Heizung noch ne Erklärung ist ein Tado

                    Kenne ich nur vom "hören sagen".

                    @Slowman sagte in Fensterkontakt steuert Thermostat - Logikfehler?:

                    Wie mache ich das mit der Heizperiode an/aus.

                    Ein eigener Datenpunkt (unter "0_userdata.0"), der z.B. per Vis geschaltet werden kann.

                    @Slowman sagte in Fensterkontakt steuert Thermostat - Logikfehler?:

                    So richtig?

                    Der Vergleich muss mit dem Wert des Datenpunktes "Power" (Heizung on) erfolgen.

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

                      @paul53

                      Schaue bitte noch mal rüber:

                      Screenshot_2020-12-14 javascript - ioBroker(7).png

                      Wie gesagt ich schalte erst das Thermostat an und danach auf Automatikprogramm von Tado.

                      Sollte der Script so jetzt laufen?

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

                        @Slowman sagte:

                        Sollte der Script so jetzt laufen?

                        Der Trigger für die Heizperiode verwendet sicherlich einen falschen Datenpunkt. Ansonsten sieht es aus Blockly-Ansicht plausibel aus. Um es genau beurteilen zu können, poste bitte den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

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

                          @paul53

                          Den Datenpunkt mit true (aktiv) erstellt, aber wie greift der Script darauf zu?

                          Screenshot_2020-12-14 objects - ioBroker.png

                          und die Javaausgabe :

                          var Heizperiode, Heizung, Meldung;
                          
                          
                          // Fensterkontakt
                          on({id: 'zigbee.0.00158d0004524503.opened', change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            if (Heizperiode) {
                              if ((obj.state ? obj.state.val : "")) {
                                // Variablen
                                Heizung = 'OFF';
                                Meldung = 'Fenster offen';
                              } else {
                                Heizung = 'ON';
                                Meldung = 'Fenster geschlossen';
                                // Heizung wird auf Automatik gestellt
                                setStateDelayed("tado.0.125400.Rooms.8.overlay.clearZoneOverlay"/*Clear Zone Overlay*/, true, 120000, false);
                              }
                              if (getState("tado.0.125400.Rooms.8.setting.power").val != Heizung) {
                                // Heizung on
                                setStateDelayed("tado.0.125400.Rooms.8.setting.power"/*Power*/, Heizung, 60000, false);
                              }
                              sendTo("telegram", "send", {
                                  text: Meldung
                              });
                            }
                          });
                          
                          on({id: 'tado.0.125400.Rooms.8.setting.power', change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            Heizperiode = (obj.state ? obj.state.val : "");
                            if (!Heizperiode) {
                              // Heizung on
                              setState("tado.0.125400.Rooms.8.setting.power"/*Power*/, 'OFF');
                            }
                          });
                          
                          // Heizung on off Tado Datenpunkt
                          
                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Slowman last edited by paul53

                            @Slowman sagte:

                            on({id: 'tado.0.125400.Rooms.8.setting.power', change: "ne"}, function (obj) {

                            Wie schon gesagt: Der Datenpunkt taugt nicht für die Heizperiode. Der Rest passt.
                            Bei den Verzögerungen sollte man den Haken bei "löschen falls läuft" setzen, da sonst mehrere Timer laufen können.

                            @Slowman sagte in Fensterkontakt steuert Thermostat - Logikfehler?:

                            aber wie greift der Script darauf zu?

                            Den Datenpunkt dem zweiten Trigger per Select ID zuweisen.

                            Slowman 1 Reply Last reply Reply Quote 1
                            • Slowman
                              Slowman @paul53 last edited by Slowman

                              @paul53

                              So, denke mal da sich es verstanden habe, was du geschrieben hast. Dürfte jetzt korrekt sein.

                              var Heizperiode, Heizung, Meldung;
                              
                              
                              // Fensterkontakt
                              on({id: 'zigbee.0.00158d0004524503.opened', change: "ne"}, function (obj) {
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                if (Heizperiode) {
                                  if ((obj.state ? obj.state.val : "")) {
                                    // Variablen
                                    Heizung = 'OFF';
                                    Meldung = 'Fenster offen';
                                  } else {
                                    Heizung = 'ON';
                                    Meldung = 'Fenster geschlossen';
                                    // Heizung wird auf Automatik gestellt
                                    setStateDelayed("tado.0.125400.Rooms.8.overlay.clearZoneOverlay"/*Clear Zone Overlay*/, true, 120000, true);
                                  }
                                  if (getState("tado.0.125400.Rooms.8.setting.power").val != Heizung) {
                                    // Heizung on
                                    setStateDelayed("tado.0.125400.Rooms.8.setting.power"/*Power*/, Heizung, 60000, true);
                                  }
                                  sendTo("telegram", "send", {
                                      text: Meldung
                                  });
                                }
                              });
                              
                              on({id: 'javascript.0.Eigene_Datenpunkte.Heizung.Heizperiode', change: "ne"}, function (obj) {
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                Heizperiode = (obj.state ? obj.state.val : "");
                                if (!Heizperiode) {
                                  // Heizung on
                                  setState("tado.0.125400.Rooms.8.setting.power"/*Power*/, 'OFF');
                                }
                              });
                              
                              // Heiperiode Datenpunkt gesetzt
                              

                              Der letzte Blockly ist dafür da, das wenn DP Heizperiode false ist, der obrige Blockly gar nicht erst gestartet wird, richtig?

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

                                @Slowman sagte:

                                Dürfte jetzt korrekt sein.

                                Sieht so aus.

                                Slowman 1 Reply Last reply Reply Quote 1
                                • Slowman
                                  Slowman @paul53 last edited by

                                  @paul53

                                  😞 🙄 Keine Auschaltung, keine Meldung per Telegram. Kann der Fehler vielelicht daran liegen das ich einmal auf Automatikprogramm Trigger und ein mal auf Power? Den Trigger auf das Automatikprogramm brauche ich auch.

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

                                    @Slowman sagte:

                                    Keine Auschaltung, keine Meldung per Telegram.

                                    Initialisiere die Variable Heizperiode bei Skript-Start.

                                    Blockly_temp.JPG

                                    Slowman 1 Reply Last reply Reply Quote 1
                                    • Slowman
                                      Slowman @paul53 last edited by

                                      @paul53

                                      👍 Funktioniert jetzt, vielen Dank für die Hilfe und natürlich die Geduld 😊

                                      Für mich zum Verständnis, man sollte nicht so viele Datenpunkte anlegen (was ich gemacht habe), sondern lieber mit Variablen arbeiten, damit man das ioBroker System nicht so belastet? Wenn ich den Script jetzt mir anschaue, habe ich nur die "Hardware" DP abgefasst und nur einen DP angelegt.

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

                                        @Slowman sagte:

                                        sondern lieber mit Variablen arbeiten, damit man das ioBroker System nicht so belastet?

                                        Ja.

                                        Slowman 1 Reply Last reply Reply Quote 1
                                        • Slowman
                                          Slowman @paul53 last edited by

                                          @paul53

                                          Kleines kosmetisches Problem noch, wenn ich mehrere Fenster in einem Raum öffne bekomme ich für jedes geöffnete Fenster im Raum eine Benachrichtigung. 🙄

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

                                            @Slowman Das ist aber nur bedingt ein "Problem". Wenn du das nicht willst müsstest du dir noch ne Variable "fenster_auf" spendieren und die auf true setzen sobald ein Fenster geöffnet ist. und dann darfst du die Benachrichtigung nur bei "fenster_auf"=True senden.
                                            Ich hab das bei mir nicht gemacht, weil Fenster auf zum einen die Heizung runterfährt, bei mir aber auch die Alarmanlage auslöst wenn niemand im Haus ist. Und da will ich für jedes Fenster wissen ob es geöffnet wurde, egal ob schon eins auf ist.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            1.0k
                                            Online

                                            32.1k
                                            Users

                                            80.7k
                                            Topics

                                            1.3m
                                            Posts

                                            fensterkontakt tado
                                            3
                                            34
                                            2903
                                            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