Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. AutoOFF nach bestimmter Zeit

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    AutoOFF nach bestimmter Zeit

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

      Guten Morgen Zusammen,

      in meiner Wohnung habe ich mir in allen Schalter Shellys 1 eingebaut und bin mit sehr glücklich mit der AutoOff-Funktion.
      Über meiner Visu kann ich jeden Schalter per Minuteneingabe automatisch ausschalten lassen.

      Bild.jpg

      Jetzt musste ich aber aus technischen Gründen bei einer Kreuzschaltung einen Meross Schalter einbauen, der sich auch sehr einfach in Iobroker integrieren lässt - aber leider ohne AutoOff Datenpunkt.

      Jetzt war meine Idee, diese AutoOff Funktion über Blockly selbst zu realisieren.
      Tja und jetzt bin ich hier 😉

      Leider hatte ich mir das einfacher vorgestellt.

      Die AutoOff Blockly Skripte die ich im Netz gefunden hatte, wollen bei mir nicht funktionieren.

      Gibt es eine Möglichkeit in Blockly per Datenpunkt (Beispiel: 10 Minuten) - eine Lampe sobald diese eingeschaltet wurde - nach einer selbst bestimmt Zeit (Minuten) ausschalten zu lassen.

      Für eure Hilfe schonmal vorab vielen Dank.

      Gruß

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

        @Brunoz sagte in AutoOFF nach bestimmter Zeit:

        Leider hatte ich mir das einfacher vorgestellt.
        Die AutoOff Blockly Skripte die ich im Netz gefunden hatte, wollen bei mir nicht funktionieren.

        Beispiel ?

        Gibt es eine Möglichkeit in Blockly per Datenpunkt (Beispiel: 10 Minuten) - eine Lampe sobald diese eingeschaltet wurde - nach einer selbst bestimmt Zeit (Minuten) ausschalten zu lassen.

        gibt es

        Für eure Hilfe schonmal vorab vielen Dank.

        Jetzt mal Details, zumindest für ein Beispiel, sonst wird das nichts mit der Hilfe:

        • Welche Datenpunkte hast du (bei dem Beispiel) ?
        • Welches Verhalten soll genau entstehen ?

        Zum Thema "variable" timeouts in Blockly - das ist leider schlecht dokumentiert, aber:

        Screenshot 2020-11-05 at 07.56.38.png

        Man kann sowohl beim Timeout Block als auch beim Intervall Block an Stelle der Zahl auch den Namen einer Variable eintragen. Es wird dann der Wert dieser Variablen genutzt. Das gibt natürlich Probleme wenn die Variable keine Zahl beinhaltet.

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

          @Asgothian
          Vielen Dank!
          Hab es gerade versucht.

          Aber leider scheint er die Variable zu setzen aber der Timeout mit Variable funktioniert nicht.

          Der Code innerhalb der Timeout Funktion wird sofort ausgeführt.

          Wie in meinem Beispiel - sollte die Lampe erst nach 21 Minuten ausgeschaltet werden.

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

            @Brunoz

            welche Version des JS Adapters nutzt du ?

            poste bitte den JS code deines Skriptes (bekommst du angezeigt wenn du da drauf clickst

            Screenshot 2020-11-05 at 08.59.17.png

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

              @Asgothian
              Ich verwende die JS Script Engine 4.10.1

              var Autooff, timeout;
              
              
              on({id: 'meross.0.2001108949566790807948e1e916cd6c.0', change: "ne"}, async function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                if (getState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOFF_Minuten").val > 0) {
                  setState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOff"/*Beleuchtung.Flur.AutoOff*/, true);
                } else {
                  setState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOff"/*Beleuchtung.Flur.AutoOff*/, false);
                }
              });
              
              on({id: '0_userdata.0.Technik.Beleuchtung.Flur.AutoOff', val: true}, async function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                console.log((obj.state ? obj.state.val : ""));
                Autooff = parseFloat(getState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOFF_Minuten").val);
                timeout = setTimeout(async function () {
                  console.log(Autooff);
                }, Autooff);
              });
              
              Asgothian 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @Brunoz last edited by

                @Brunoz
                Seltsam. Nach dem JS das du gepostet hast muss es eigentlich gehen.

                Kannst Du mal bitte eine Debug-Ausgabe der Variable "Autooff" vor dem Timeout einfügen, nicht das da 0 steht ?

                Auch: es kann sein das du dem Timeout einen "integer", also eine Zahl ohne Nachkommastellen mitgeben musst.

                A.

                B paul53 2 Replies Last reply Reply Quote 0
                • B
                  Brunoz @Asgothian last edited by

                  @Asgothian

                  Bild3.jpg

                  var Autooff, timeout;
                  
                  
                  on({id: 'meross.0.2001108949566790807948e1e916cd6c.0', change: "ne"}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    if (getState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOFF_Minuten").val > 0) {
                      setState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOff"/*Beleuchtung.Flur.AutoOff*/, true);
                    } else {
                      setState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOff"/*Beleuchtung.Flur.AutoOff*/, false);
                    }
                  });
                  
                  on({id: '0_userdata.0.Technik.Beleuchtung.Flur.AutoOff', val: true}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    console.log((obj.state ? obj.state.val : ""));
                    Autooff = parseFloat(getState("0_userdata.0.Technik.Beleuchtung.Flur.AutoOFF_Minuten").val);
                    console.log(Autooff);
                    timeout = setTimeout(async function () {
                      console.log('LAMPE AUS!!!');
                    }, Autooff);
                  });
                  
                  N 1 Reply Last reply Reply Quote 0
                  • N
                    Nordischerjung @Brunoz last edited by

                    @Brunoz

                    Moin,

                    du hast Millisekunden in deinem Timer

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

                      @Asgothian sagte:

                      Timeout einen "integer", also eine Zahl ohne Nachkommastellen mitgeben musst.

                      Ja, mit dem Faktor 60000 (min --> ms).

                      1 Reply Last reply Reply Quote 0
                      • B
                        Brunoz @Nordischerjung last edited by

                        Vielen herzlichen Dank! 😊

                        Da war tatsächlich der Wurm drin!

                        Jetzt funktioniert es.

                        👍 👍 👍

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        683
                        Online

                        31.9k
                        Users

                        80.3k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        1325
                        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