Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Bewegungsmelder nur aktivieren wenn das Licht aus ist

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Bewegungsmelder nur aktivieren wenn das Licht aus ist

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

      Hallo,

      ich hoffe ihr könnt mir helfen.
      mein wunsch ist es, das der Bewegungsmelder das Licht nur einschaltet, wenn es noch nicht eingeschaltet ist.

      wenn man z.b. schon blaues licht angemacht hat und dann den Bewegungsmelder auslöst wird dies durch das blockly script überschrieben.
      dies würde ich jedoch gerne verhindern.

      Screenshot 2020-11-04 211008.jpg

      danke Gruß Basti

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

        @Hank sagte:

        das der Bewegungsmelder das Licht nur einschaltet, wenn es noch nicht eingeschaltet ist.

        Erzeuge eine Sperr-Variable manuell und prüfe im BWM-Trigger auf nicht manuell.

        H 1 Reply Last reply Reply Quote 1
        • H
          Hank @paul53 last edited by

          @paul53 uff ich stehe ein bisschen auf dem Schlauch... 😕 ich bin noch ein ziemlicher anfänger mit Blockly.
          ich habe mal probiert das umzusetzen was du vorgeschlagen hast aber leider funktioniert es nicht.
          Screenshot 2020-11-04 230043.jpg

          wäre toll wenn du noch einen Tipp für mich hättest.

          danke Gruß Basti

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

            @Hank sagte:

            leider funktioniert es nicht.

            Sollte es aber, wenn das Script unter der Instanz 0 läuft, denn ich kenn keinen Fehler erkennen. Poste mal den von Blockly erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

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

              @paul53
              ich weiß leider nicht genau was du mit "unter der Instanz 0" meinst.
              Wenn du meinst das Script Engine unter instanz 0 läuft dann ist die Antwort ja.

              var manuell, timeout;
              
              
              on({id: 'hue.0.Büro.on', change: "ne"}, async 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: "0_userdata.0.büropresence"/*büropresence*/, change: "ne"}, async function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                if (!manuell) {
                  manuell = false;
                  if (true == getState("0_userdata.0.büropresence").val) {
                    (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
                    setState("hue.0.Büro.scene_hell"/*Scene Hell*/, true);
                  } else if (false == getState("0_userdata.0.büropresence").val) {
                    timeout = setTimeout(async function () {
                      setStateDelayed("hue.0.Büro.scene_gedimmt"/*Scene Gedimmt*/, true, 10, true);
                      setStateDelayed("hue.0.Büro.on"/*Büro.on*/, false, 30000, true);
                    }, 30000);
                  }
                }
              });
              

              danke Gruß Basti

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

                @Hank
                Kann keinen Fehler entdecken. Lediglich Zeile 13 ist überflüssig

                    manuell = false;
                

                Ist im Blockly-Bild auch nicht vorhanden.
                Was funktioniert nicht ? Verhindert das manuelle Einschalten nicht die Steuerung durch den BWM ?

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

                  @paul53
                  hey,
                  nein leider nicht wenn ich über die hue app am handy das licht einstelle wird es leider immer noch durch den bewegungsmelder wieder überschrieben.

                  "Lediglich Zeile 13 ist überflüssig"

                  ja da hatte ich nur grade etwas noch ausprobiert und hatte vergessen es vorher wieder zu löschen.
                  Screenshot 2020-11-05 002136.jpg

                  ich glaube das wird mich noch eine zeit lang beschäftigen bis es funktioniert 😂

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

                    @Hank ich glaube das Problem liegt daran, dass du es über die App steuern willst und es dort keinen Taster als Trigger im iobroker gibt.
                    Lass doch den Bewegungsmelder die variable unter der Bedingung auf true setzen, dass die Lampe noch nicht eingeschaltet ist und der Timer darf dann nur herunterzählen, wenn die Variable des BW auf true steht.

                    H 1 Reply Last reply Reply Quote 0
                    • H
                      Hank @Ocrim last edited by

                      @Ocrim
                      vielleicht denke ich ja grade in die völlig falsche Richtung oder habe mich schlecht ausgredrückt

                      wenn ich die hue lampe manuell per wanschalter oder app an mache geht dieser Wert im iobroker ja von true auf false

                      Screenshot 2020-11-05 030505.jpg

                      und alles was ich wollte ist das mein bewegunsmelder blocklyscript dann nicht aktiviert wird wenn der wert der lampe auf true ist.

                      Asgothian Ocrim 2 Replies Last reply Reply Quote 0
                      • Asgothian
                        Asgothian Developer @Hank last edited by

                        @Hank
                        Das was @paul53 gepostet hat sollte funktionieren.

                        Füge doch dem Trigger auf das Objekt Büro.on noch eine Debugausgabe hinzu, in der du den Inhalt der Bausteine "wert" und "Ursprung" ausgibst.

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

                          @Hank
                          Mir fällt gerade auf, dass das Script nicht das Licht direkt einschaltet, sondern über eine Szene. Dann bringt die Prüfung auf "Ursprung != system.adapter.javascript.0" nichts, weil sie immer erfüllt ist.

                          EDIT: Versuche es mal so:

                          Blockly_temp.JPG

                          H 1 Reply Last reply Reply Quote 0
                          • Ocrim
                            Ocrim @Hank last edited by

                            @Hank
                            Büro on wird aber auch getriggert, wenn der bw die Szene schaltet. Das letzte Programm von Paul würde ich jetzt nehmen und noch um einen Trigger mit dem Wandschalter und vllt sogar um einen Trigger vom Farbwert erweitern, der den wert bwm_ein zusätzlich auf falsch setzt. Mit letzterem sollte sich der bw deaktivieren sobald du die Farbe in der App änderst

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

                              @paul53 @Ocrim
                              hi
                              erstmal vielen Dank für die ganze Hilfe! Ohne die hätte ich ewig daran gesessen. ich habe meine blockly script von gestern soweit jetzt fertig.
                              ich habe dank des Tipps, die Scenen durch feste Licht und Farbwerte ersetzt.
                              Anscheinend funktioniert es auch erstmal alles wie gewünscht. 🙂

                              Hier erstmal die fertige lösung

                              Screenshot 2020-11-05 133810.jpg

                              der neue Vorschlag von paul53 sieht gut aus.
                              nur leider habe ich da aktuell noch das Problem, das die Lichter nicht wieder hell werden wenn nach sich nach einer zeit wieder bewegt.

                              Und danke Ocrim das werde ich probieren!

                              Gruß Basti

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

                                @Hank sagte:

                                das die Lichter nicht wieder hell werden wenn nach sich nach einer zeit wieder bewegt.

                                Ja, das stimmt.

                                Wozu sollen die zusätzlichen Verzögerungen von 5 s dienen ? Sie verbrauchen nur unnötig Ressourcen.
                                Macht es Sinn, sowohl level als auch bri zu steuern ?

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

                                  @paul53

                                  das wusste ich nicht das es zusätzliche Ressourcen benötigt. Hab ich wieder raus genommen!

                                  Macht es Sinn, sowohl level als auch bri zu steuern ?

                                  nach überprüfung, habe ich festgestellt das es wohl keinen macht 😂 Hab level auch entfernt!

                                  war zwar eine schwere Geburt, aber nun bin ich wenigsten ein bisschen schlauer. 😁

                                  Hier noch der Javascript-Code falls jemand mal das selbe Problem hat

                                  var manuell, timeout, timeout2;
                                  
                                  
                                  on({id: 'hue.0.Büro.on', change: "ne"}, async 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: "0_userdata.0.büropresence"/*büropresence*/, change: "ne"}, async function (obj) {
                                    var value = obj.state.val;
                                    var oldValue = obj.oldState.val;
                                    if (!manuell) {
                                      if (true == getState("0_userdata.0.büropresence").val) {
                                        (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
                                        (function () {if (timeout2) {clearTimeout(timeout2); timeout2 = null;}})();
                                        if (compareTime('07:00', '20:00', "between", null)) {
                                          setState("hue.0.Büro.on"/*Büro.on*/, true);
                                          setState("hue.0.Büro.bri"/*Büro.bri*/, 254);
                                          setState("hue.0.Büro.ct"/*Büro.ct*/, 2732);
                                        }
                                      } else if (false == getState("0_userdata.0.büropresence").val) {
                                        timeout = setTimeout(async function () {
                                          setState("hue.0.Büro.bri"/*Büro.bri*/, 77);
                                          setState("hue.0.Büro.ct"/*Büro.ct*/, 2732);
                                          timeout2 = setTimeout(async function () {
                                            setState("hue.0.Büro.on"/*Büro.on*/, false);
                                          }, 80000);
                                        }, 50000);
                                      }
                                    }
                                  });
                                  
                                  

                                  Gruß Basti

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    sit-in last edited by

                                    @hank said in Bewegungsmelder nur aktivieren wenn das Licht aus ist:

                                    Hier erstmal die fertige lösung

                                    Screenshot 2020-11-05 133810.jpg

                                    @paul53 @Hank @Ocrim

                                    Hallo Zusammen,
                                    Der Post ist schon ein wenig älter, aber ich stehe aktuell vor genau dem selben Problem.
                                    Das Blockly Script mit der manuellen Abfrage habe ich soweit verstanden.
                                    Aber ganz oben den ersten Bereich nicht.

                                    Wenn "Lampe Büro on" geändert wurde, dann setze manuell auf... Und hier verstehe ich es nicht...
                                    was ist "Wert" und "Ursprung" und mit was (system.adapter.javascript()?) wird dort verglichen (ungleich)?

                                    a7f24a92-1e96-41d0-a90c-e3cb6881172a-grafik.png

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    848
                                    Online

                                    32.0k
                                    Users

                                    80.5k
                                    Topics

                                    1.3m
                                    Posts

                                    blockly
                                    5
                                    16
                                    1180
                                    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