Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Licht: Bewegungsmelder & Schalter

    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

    Licht: Bewegungsmelder & Schalter

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

      Ich würde gerne ein Licht nach Bewegung schalten und zusätzlich über einen Schalter.
      Mein Blockly Script sieht folgendermaßen aus:
      2452ee01-a681-4f2d-9e00-828799ea2a8a-image.png

      var timeout;
      
      
      on({id: 'deconz.0.Sensors.3.presence', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if ((obj.state ? obj.state.val : "") && compareTime(getAstroDate("sunriseEnd", undefined, 0), getAstroDate("sunsetStart", undefined, 0), "not between", null) && getState("shelly.0.SHSW-25#483FDA828AE1#1.Relay0.Switch").val == false) {
          (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
          setState("shelly.0.SHSW-25#483FDA828AE1#1.Relay0.Switch"/*Switch*/, true);
        } else {
          timeout = setTimeout(function () {
            setState("shelly.0.SHSW-25#483FDA828AE1#1.Relay0.Switch"/*Switch*/, false);
            setState("shelly.0.SHSW-25#483FDA828AE1#1.Relay1.Switch"/*Switch*/, false);
          }, 20000);
        }
      });
      

      Allerdings funktioniert dies nicht so wie es soll. Das Licht schaltet sich dennoch aus obwohl der Schalter umgelegt ist.

      Edit:
      Oder muss es eher so aussehen:
      44f3fe6e-20bc-48fe-86eb-f01b64b5599c-image.png

      Lösung:
      1cbfc0d7-de6a-44b3-a4d3-ced3d1e69734-image.png

      var manuell, timeout;
      on({id: 'shelly.0.SHSW-25#483FDA828AE1#1.Relay0.Switch', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        manuell = (obj.state ? obj.state.val : "") && (obj.state ? obj.state.from : "") != 'system.adapter.javascript.0';
      });
      on({id: 'deconz.0.Sensors.3.presence', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (compareTime(getAstroDate("sunriseEnd", undefined, 0), getAstroDate("sunsetStart", undefined, 0), "not between", null) && !manuell) {
          if ((obj.state ? obj.state.val : "")) {
            (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
            setState("shelly.0.SHSW-25#483FDA828AE1#1.Relay0.Switch"/*Switch*/, true);
          } else {
            timeout = setTimeout(function () {
              setState("shelly.0.SHSW-25#483FDA828AE1#1.Relay0.Switch"/*Switch*/, false);
              setState("shelly.0.SHSW-25#483FDA828AE1#1.Relay1.Switch"/*Switch*/, false);
            }, 20000);
          }
        }
      });
      
      J 1 Reply Last reply Reply Quote 0
      • J
        Jan1 @xadox last edited by

        @xadox
        Du musst ne Erkennung einbauen, die sich merkt von wo das Licht eingeschaltet wurde.
        Ich habe hier ein Blockly, das erkennt ob es der BWM war und das funktioniert ganz gut:
        eb16b92e-8cd2-4bf1-b2bf-1a0359b6c261-grafik.png
        Der 9s Timeout enfernt auch die 10s Sperre der erneuten Erkennung des Xiomi BWM 😉

        Es gibt aber auch den eleganten Ansatz über den Ursprung des Trigger zu arbeiten, sprich wird das über ein Script angeschaltet, wäre der Usprung "javascript.0" und darauf kannst auch abfragen.

        xadox 1 Reply Last reply Reply Quote 0
        • xadox
          xadox @Jan1 last edited by xadox

          @Jan1 Du schreibts dann einen Wert in eine Variable die du später dann wieder als Bedingung verwendest. Ok.
          Ich verstehe nur nicht wie die beiden Trigger Elemente Arbeiten? Bisher habe ich immer nur einen Trigger pro Script gehabt.

          Würde es ggf. auch so funktionieren wie in meinem Edit Nachtrag?

          J 1 Reply Last reply Reply Quote 0
          • J
            Jan1 @xadox last edited by

            @xadox
            Dein Blockly ergibt nicht viel Sinn, da Du ne Bedingung hast, die nie erfüllt wird 😉
            Die erste FALLS prügt den WERT auf falsch und darin hast ne FALLS die den selben WERT auf TRUE prüft, was nie passieren wird.

            xadox 1 Reply Last reply Reply Quote 0
            • xadox
              xadox @Jan1 last edited by xadox

              @Jan1 Hmm... wieso wird diese nie erfüllt? Ich beziehe mich auf den Nachtrag:
              90c6c336-9ed9-4489-bafc-23744753280d-image.png
              Der Schalter ist ja durchaus auch im Aus Zustand also auf false.

              J 1 Reply Last reply Reply Quote 0
              • J
                Jan1 @xadox last edited by

                @xadox
                OK, stimmt, wobei das ganze etwas undurchsichtig ist wenn man die dazu gehörigen DPs nicht kennt.

                Du verwendest ein anderen BWM und somit auch andere DP, wobei das nur ne untergeordnete Rolle spielt. Du musst irgendwie den Schaltvorgang zuordnen können und wie das machbar ist, hatte ich oben geschrieben.

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Jan1 last edited by

                  @Jan1 sagte in Licht: Bewegungsmelder & Schalter:

                  wenn man die dazu gehörigen DPs nicht kennt.

                  Was bitte ist Switch?
                  und welche möglichen Werte liefert presence.3.presence?

                  xadox 1 Reply Last reply Reply Quote 0
                  • xadox
                    xadox @Homoran last edited by

                    @Homoran Switch ist ein Shelly 2.5:
                    9a203ce6-1251-4f08-a14d-a4c43ebd234d-image.png

                    Bewegungsmelder ist ein Xiaomi:
                    5e2eca96-bf50-4142-8f4e-b34b56f59c40-image.png

                    Homoran J 2 Replies Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @xadox last edited by

                      @xadox sagte in Licht: Bewegungsmelder & Schalter:

                      Switch ist ein Shelly 2.5:

                      und was macht der?
                      das Licht anschalten?

                      @xadox sagte in Licht: Bewegungsmelder & Schalter:

                      Bewegungsmelder ist ein Xiaomi:

                      @Homoran sagte in Licht: Bewegungsmelder & Schalter:

                      welche möglichen Werte liefert presence.3.presence?

                      xadox 1 Reply Last reply Reply Quote 0
                      • J
                        Jan1 @xadox last edited by

                        @xadox
                        Mit Tasmota? Wenn ja, dann hast Dir ins Knie geschossen, da ich ebenfalls Tasmota drauf habe und mich schon immer gefragt habe, was dieser DP überhaupt aussagt, da der immer egal wie Du schaltest auf "false" steht 😉

                        1 Reply Last reply Reply Quote 0
                        • xadox
                          xadox @Homoran last edited by xadox

                          @Homoran Der Shelly schaltet das Licht. Ja.
                          presence.3.presence liefert true oder false.

                          @Jan1 nein Tasmota ist nicht im Einsatz.
                          Ich versuche es mal über deinen Ansatz nachzubauen.

                          J 1 Reply Last reply Reply Quote 0
                          • J
                            Jan1 @xadox last edited by

                            @xadox
                            Schau mal hier, da wird der Ansatz über "Ursprung" gezeigt und den finde ich wenn es läuft wesentlich eleganter als meinen. Ich war bei mir einfach zu faul mein funktionierendes Blockly mal zu umzubauen.

                            xadox 1 Reply Last reply Reply Quote 1
                            • xadox
                              xadox @Jan1 last edited by xadox

                              @Jan1 Vielen Dank. Ich habe es mal nun so umgebaut wie @paul53 es erklärt hat:
                              69b1afcb-41f8-4fea-bf43-20226ddf83c7-image.png

                              J paul53 2 Replies Last reply Reply Quote 0
                              • J
                                Jan1 @xadox last edited by

                                @xadox
                                Wenn es funktioniert mit der Erkennung des manuellen Schalten, dann ist das die einfachste Methode. Da geht bei mir leider nicht, deshalb der Umweg über die Erkennung, ob über BWM geschaltet wurde. Es ist dann auch egal, was man nimmt, wichtig ist einzig, dass man unterscheiden kann, was die Lampe angeschaltet hat.

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

                                  @xadox sagte:

                                  so umgebaut wie @paul53 es erklärt hat:

                                  Es fehlt die Abfrage des Ursprungs.

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

                                    @paul53
                                    Wo er sich bei seinem Blockly auf Deine Vorgabe bezogen hat, ist mir auch nicht klar, aber wenn es läuft ist auch schon mal gut. Hatte ja oben schon auf den Thread verlinkt.

                                    Zum Ursprung hätte ich aber auch noch ne Frage. Bei mir steht unter "geändert von" bei meinen Lampen die ich schalten immer "sonoff.0/admin" auch wenn der DP über Script vom BWM geschaltet wurde. Wo kann ich denn den Ursprung wirklich ablesen?

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

                                      @Jan1 sagte:

                                      Wo kann ich denn den Ursprung wirklich ablesen?

                                      Der Ursprung ist nicht statisch: Nachdem der Wert per Script geändert wurde (ack: false), wird er von der Adapter-Instanz bestätigt (ack: true).

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

                                        @paul53
                                        OK und wie bekomme ich den genauen Namen raus wenn der gleich wieder verschwindet?
                                        Im Beispiel sind wurde auch einmal "system.adapter.javascript.0" und einmal nur "javascript.0" angegeben. Ist das eine der volle Namen und der zweite der reicht um zu Prüfen?

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

                                          @Jan1 sagte:

                                          wie bekomme ich den genauen Namen raus wenn der gleich wieder verschwindet?

                                          Im Trigger loggen

                                          log('Ursprung: ' + dp.state.from);
                                          

                                          @Jan1 sagte in Licht: Bewegungsmelder & Schalter:

                                          einmal "system.adapter.javascript.0" und einmal nur "javascript.0"

                                          "system.adapter.javascript.0" ist richtig.

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

                                            Ich verstehe momentan nur Bahnhof.
                                            Was für ein Ursprung?

                                            Funktionieren tut das Script nicht. Nachdem durch Bewegung das Licht angeschaltet würde schaltet es nicht mehr aus.

                                            paul53 J 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            888
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            4
                                            32
                                            2247
                                            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