Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Auslösen nur bei Falsch

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    773

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Auslösen nur bei Falsch

Geplant Angeheftet Gesperrt Verschoben Blockly
40 Beiträge 8 Kommentatoren 4.3k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • MartinPM MartinP

    @paul53 said in Auslösen nur bei Falsch:

    Das ist der Sinn von Entprellen: Die erste Flanke true --> false löst die gewünschte Aktion ohne Verzögerung aus und weitere Flanken (Prellen) werden während der Sperrdauer ignoriert.

    Nur, dass es auch beim Übergang false-->true durch das Prellen des Kontaktes zu Flanken true-->false kommt ... ich habe mal eine Skizze hingeschmiert. Verzeiht meine Sauklaue ...
    bf249eee-c1f3-43d3-a5d7-dc08e0e176b9-grafik.png

    Wenn man den Timeout sowohl an steigenden, als auch an fallenden Flanken startet ("wurde geändert" statt "ist kleiner als letztes") behebt man das Problem der Auslösung durch das Prellen an der steigenden Flanke

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #23

    @martinp sagte: behebt man das Problem der Auslösung durch das Prellen an der steigenden Flanke

    Du hast recht. An das Prellen wenn von false --> true geschaltet wird, habe ich nicht gedacht. Also besser so:

    Blockly_temp.JPG

    EDIT: "stop timeout" ist seit JS-Version 7.0.5 überflüssig, da seitdem Blockly automatisch bei Ablauf des Timers die Variable timeout auf null zurück setzt.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    MartinPM G 2 Antworten Letzte Antwort
    2
    • paul53P paul53

      @martinp sagte: behebt man das Problem der Auslösung durch das Prellen an der steigenden Flanke

      Du hast recht. An das Prellen wenn von false --> true geschaltet wird, habe ich nicht gedacht. Also besser so:

      Blockly_temp.JPG

      EDIT: "stop timeout" ist seit JS-Version 7.0.5 überflüssig, da seitdem Blockly automatisch bei Ablauf des Timers die Variable timeout auf null zurück setzt.

      MartinPM Online
      MartinPM Online
      MartinP
      schrieb am zuletzt editiert von MartinP
      #24

      So ganz gefällt mir das "späte" Entprellen aber nicht, da werden sinnlos viele MQTT Telegramme durch die Gegend geschickt. Das Filtern weiter vorne im Signalweg vom Reed-Kontakt zum Blockly Skript zu machen wäre sicherlich die sauberere Lösung ...

      Habe aber mal geschaut, und z. B. beim shelly plus i4 keine Möglichkeit gefunden, dort schon im Shelly-Device ein Entprellen (engl. deglitching/debouncing) zu konfigurieren https://kb.shelly.cloud/knowledge-base/shelly-plus-i4-web-interface-guide

      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
      Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
      Linux pve 6.8.12-16-pve
      6 GByte RAM für den Container
      Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
      Remote-Access über Wireguard der Fritzbox

      WalW 1 Antwort Letzte Antwort
      0
      • MartinPM MartinP

        So ganz gefällt mir das "späte" Entprellen aber nicht, da werden sinnlos viele MQTT Telegramme durch die Gegend geschickt. Das Filtern weiter vorne im Signalweg vom Reed-Kontakt zum Blockly Skript zu machen wäre sicherlich die sauberere Lösung ...

        Habe aber mal geschaut, und z. B. beim shelly plus i4 keine Möglichkeit gefunden, dort schon im Shelly-Device ein Entprellen (engl. deglitching/debouncing) zu konfigurieren https://kb.shelly.cloud/knowledge-base/shelly-plus-i4-web-interface-guide

        WalW Online
        WalW Online
        Wal
        Developer
        schrieb am zuletzt editiert von Wal
        #25

        @martinp @paul53,
        wie wäre es eine Variable zu nutzen die bei true->false gesetzt wird und nach dem Timeout wieder zurückgesetzt wird.

        Mache ich so bei meiner Klingel.

        on({id: "mqtt.0.piface.input.DoorBell_1", val: true}, function (obj) {
            if (bell) {
                snap = '/opt/iobroker/snapshots/snap_' + formatDate(obj.state.lc, 'TT.MM.JJJJ_hh:mm:ss') + '.jpg';
                sendImage();
            }
            bell = false;
            setTimeout(function() {
                bell = true;
              }, 120000);
        });
        

        Gruß
        Walter

        DoorIO-Adapter
        wioBrowser-Adapter und wioBrowser

        MartinPM 1 Antwort Letzte Antwort
        0
        • WalW Wal

          @martinp @paul53,
          wie wäre es eine Variable zu nutzen die bei true->false gesetzt wird und nach dem Timeout wieder zurückgesetzt wird.

          Mache ich so bei meiner Klingel.

          on({id: "mqtt.0.piface.input.DoorBell_1", val: true}, function (obj) {
              if (bell) {
                  snap = '/opt/iobroker/snapshots/snap_' + formatDate(obj.state.lc, 'TT.MM.JJJJ_hh:mm:ss') + '.jpg';
                  sendImage();
              }
              bell = false;
              setTimeout(function() {
                  bell = true;
                }, 120000);
          });
          
          MartinPM Online
          MartinPM Online
          MartinP
          schrieb am zuletzt editiert von
          #26

          @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');
              }
            }
          });
          

          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
          Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
          Linux pve 6.8.12-16-pve
          6 GByte RAM für den Container
          Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
          Remote-Access über Wireguard der Fritzbox

          1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @xadox sagte: Trigger löst nach wie vor bei jeder Änderung aus.
            Sowohl auf false auch auch auf true.

            Wie stellst du das fest? Mit entsprechenden Logs?

            Blockly_temp.JPG

            xadoxX Offline
            xadoxX Offline
            xadox
            schrieb am zuletzt editiert von xadox
            #27

            @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 :joy:
            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.

            paul53P MartinPM 2 Antworten Letzte Antwort
            0
            • xadoxX 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 :joy:
              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.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #28

              @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.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • xadoxX 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 :joy:
                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.

                MartinPM Online
                MartinPM Online
                MartinP
                schrieb am zuletzt editiert von MartinP
                #29

                @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 :joy:
                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 ...

                Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
                Linux pve 6.8.12-16-pve
                6 GByte RAM für den Container
                Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
                Remote-Access über Wireguard der Fritzbox

                1 Antwort Letzte Antwort
                0
                • xadoxX Offline
                  xadoxX Offline
                  xadox
                  schrieb am zuletzt editiert von
                  #30

                  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.

                  paul53P WalW 2 Antworten Letzte Antwort
                  0
                  • xadoxX xadox

                    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.

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #31

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

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    WalW 1 Antwort Letzte Antwort
                    0
                    • xadoxX xadox

                      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.

                      WalW Online
                      WalW Online
                      Wal
                      Developer
                      schrieb am zuletzt editiert von
                      #32

                      @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.

                      Gruß
                      Walter

                      DoorIO-Adapter
                      wioBrowser-Adapter und wioBrowser

                      1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

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

                        WalW Online
                        WalW Online
                        Wal
                        Developer
                        schrieb am zuletzt editiert von
                        #33

                        @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.

                        Gruß
                        Walter

                        DoorIO-Adapter
                        wioBrowser-Adapter und wioBrowser

                        1 Antwort Letzte Antwort
                        0
                        • xadoxX Offline
                          xadoxX Offline
                          xadox
                          schrieb am zuletzt editiert von
                          #34

                          Ein großes Dankeschön an alle Beteiligten. :muscle: :+1:
                          Die Variante von @paul53 Link war die Lösung.

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @martinp sagte: behebt man das Problem der Auslösung durch das Prellen an der steigenden Flanke

                            Du hast recht. An das Prellen wenn von false --> true geschaltet wird, habe ich nicht gedacht. Also besser so:

                            Blockly_temp.JPG

                            EDIT: "stop timeout" ist seit JS-Version 7.0.5 überflüssig, da seitdem Blockly automatisch bei Ablauf des Timers die Variable timeout auf null zurück setzt.

                            G Offline
                            G Offline
                            Gonzokalle
                            schrieb am zuletzt editiert von
                            #35

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

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

                            paul53P 1 Antwort Letzte Antwort
                            0
                            • G Gonzokalle

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

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

                              paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #36

                              @gonzokalle sagte: Funktioniert das Blockly so wie deines

                              Ja.

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              1
                              • xadoxX Offline
                                xadoxX Offline
                                xadox
                                schrieb am zuletzt editiert von
                                #37

                                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 Antwort Letzte Antwort
                                0
                                • xadoxX Offline
                                  xadoxX Offline
                                  xadox
                                  schrieb am zuletzt editiert von
                                  #38

                                  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?

                                  CodierknechtC 1 Antwort Letzte Antwort
                                  0
                                  • xadoxX xadox

                                    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?

                                    CodierknechtC Online
                                    CodierknechtC Online
                                    Codierknecht
                                    Developer Most Active
                                    schrieb am zuletzt editiert von Codierknecht
                                    #39

                                    @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

                                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                    HmIP|ZigBee|Tasmota|Unifi
                                    Zabbix Certified Specialist
                                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                    xadoxX 1 Antwort Letzte Antwort
                                    1
                                    • CodierknechtC 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

                                      xadoxX Offline
                                      xadoxX Offline
                                      xadox
                                      schrieb am zuletzt editiert von
                                      #40

                                      @codierknecht Vielen Dank dafür. Funktioniert :+1:

                                      1 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      712

                                      Online

                                      32.6k

                                      Benutzer

                                      82.0k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe