Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Auslösen nur bei Falsch

    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

    Auslösen nur bei Falsch

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

      @wal Genau so macht das das Blockly Skript aus meinem Post etwas weiter oben ja, wenn man sich den Code des Blockly anschaut ...

      var timeout2;
      
      
      on({ id: '0_userdata.0.example_state' /* Example state */, change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (!timeout2) {
          timeout2 = setTimeout(async () => {
            timeout2 = null;
            (() => { if (timeout2) { clearTimeout(timeout2); timeout2 = null; }})();
            console.log('8 Sec Timeout abgelaufen');
          }, 8000);
          if ((obj.state ? obj.state.val : "") == false) {
            console.log('0 Sekunden');
            await wait(3000);
            console.log('3 Sekunden');
            await wait(3000);
            console.log('6 Sekunden');
          }
        }
      });
      
      1 Reply Last reply Reply Quote 0
      • xadox
        xadox @paul53 last edited by xadox

        @paul53 >>Wie stellst du das fest? Mit entsprechenden Logs?
        Indem ich sehe, dass die eigentliche Aktion sowohl bei true als auch bei false ausgelöst wird.

        Ich habe aber hier wieder den Faden verlohren 😂
        Und weiß nicht genau welchen dieser Vorschläge ich nun am ehesten nutzen soll.

        Ist denn überhaupt sichergestellt, dass der Reek Kontakt wirklich "prellt"?
        In der iob Übersicht sieht es zumindest mit dem bloßen Auge nach einer normalen schaltung von false auf true und von true auf false aus ohne mehrfach hin und her zu schalten.

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

          @xadox sagte: mit dem bloßen Auge

          Mit dem bloßen Auge kann man Prellen nicht erkennen, denn es passiert im Abstand von wenigen ms. Eine Logausgabe des Trigger-Wertes zeigt, ob es prellt.

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

            @xadox said in Auslösen nur bei Falsch:

            @paul53 >>Wie stellst du das fest? Mit entsprechenden Logs?
            Indem ich sehe, dass die eigentliche Aktion sowohl bei true als auch bei false ausgelöst wird.

            Ich habe aber hier wieder den Faden verlohren 😂
            Und weiß nicht genau welchen dieser Vorschläge ich nun am ehesten nutzen soll.

            Ist denn überhaupt sichergestellt, dass der Reek Kontakt wirklich "prellt"?
            In der iob Übersicht sieht es zumindest mit dem bloßen Auge nach einer normalen schaltung von false auf true und von true auf false aus ohne mehrfach hin und her zu schalten.

            Wie @paul53 schon sagte würde ich mich mit Logging dem Problem nähern

            Zuerst ein ganz einfaches Skript, was nur eine Log-Meldung ausgibt, sobald der Datenpunkt des Reed Relais sich geändert hat.

            Damit schaut man dann, ob es zu "Prellen" kommt. Wenn ja....

            Danach dann das Skript um die "Entprellung" erweitern (nur Logging als Aktion).

            Hat man das dann zum Funktionieren gebracht,
            baut man um des Logging die Erkennung des "interessierenden" entprellten Zustandsübergangs ein....

            Schritt für Schritt aufbauen das Skript, und immer Testen, ob die letzte eingebaute Erweiterung wie gewünscht funktioniert, bevor man den nächsten Aufbauschritt angeht...

            Sollten die Tests wirklich am Tor draußen mit dem dort installierten Reed-Relais erfolgen, sollte man dem Torantrieb zwischendurch auch Pausen gönnen. Die sind in der Regel nicht dafür ausgelegt, das Tor pausenlos auf und zu zu machen.

            Bequemere Tests könnte man mit einem Umbiegen des zu erstellenden Skripts während der Tests auf einen "Userdata.0" Test-Datenpunkt bewerkstelligen.

            Den Userdata-Datenpunkt könnte man auch selber "prellen" lassen ...

            Für solche Zwecke habe ich da einen angelegt, den ich über einen VIS "Knopf" bequem aktivieren und deaktivieren kann ...

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

              Ich habe den Reek Kontakt nun mal an einen anderen Shelly ohne Garagentor aufgebaut.
              Und kann nun auch bestätigen dieser prellt.

              Ich habe dem Script dann entsprechend den Verzögerer hinzugefügt aber nach wie vor wird der Trigger bei true und false ausgelöst:
              f1387b5e-ad22-4e36-b61b-7b65a55adcc3-image.png

              Bei Shelly selbst konnte ich kein Entprell Feature finden.

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

                @xadox
                Ändere den Trigger auf "wurde geändert"! (siehe hier)

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

                  @xadox ,
                  falls das nicht funktioniert von @paul53, versuche das mal.
                  t1.jpg

                  Da die Abarbeitung deiner Funktion 71 Sekunden dauert, habe ich den Timeout auf 73 Sekunden eingestellt.
                  Die Variable reed musst du erzeugen und deine Funktion unter "setze reed auf wahr" einfügen.
                  Dein Trigger fehlt auch noch.

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

                    @paul53 ,
                    wie wird ein wait Befehl in Blockly behandelt ?
                    Bleibt das Script dort stehen oder wird der Trigger wieder angestoßen ?
                    Bei async müsste der Trigger wieder angestoßen werden und das Problem verursachen.
                    Ich muss das mal testen.

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

                      Ein großes Dankeschön an alle Beteiligten. 💪 👍
                      Die Variante von @paul53 Link war die Lösung.

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

                        @paul53
                        Funktioniert das Blockly so wie deines oder gibt es da technische Unterschiede?

                        2597effc-69d3-4ad9-b085-db36a7d6a85f-image.png

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

                          @gonzokalle sagte: Funktioniert das Blockly so wie deines

                          Ja.

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

                            Ich benötige nochmal eure Unterstützung.
                            In der Weihnachtzeit ist die Gargenbeleuchtung von Sonnenuntergang bis 22:00 an.
                            Daher möchte ich hierbei ebenfalls vorab prüfen lassen, ob die Weihnachtsbeleuchtung bereits an ist und falls ja soll das Script nicht auslösen.

                            So ist mein Ansatz, aber nun geht die Beleuchtung nicht mehr an:
                            c37a0dfb-6247-4fb9-8292-2eb49d0cfaa8-image.png

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

                              Ich habe es nochmals auf anderem Weg probiert, leider ebenfalls ohne Erfolg:
                              4c8f7e25-c4d0-45cf-9f2c-73314f3aec03-image.png

                              Habt ihr ggf. nochmals einen Tipp?

                              Codierknecht 1 Reply Last reply Reply Quote 0
                              • Codierknecht
                                Codierknecht Developer Most Active @xadox last edited by Codierknecht

                                @xadox

                                1. Du liest das ganze Objekt. Was Du brauchst wäre "Wert vom Objekt"
                                2. Wenn in dem Objekt ein bool'scher Wert (true/false) steht, brauchst Du nicht auf "= falsch" prüfen.
                                  Da nimmt man dann ein "nicht"

                                9eed6913-3144-429d-a73a-1e69070b09f0-image.png

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

                                  @codierknecht Vielen Dank dafür. Funktioniert 👍

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  928
                                  Online

                                  31.9k
                                  Users

                                  80.2k
                                  Topics

                                  1.3m
                                  Posts

                                  8
                                  40
                                  2501
                                  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