Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Wie verhindern, dass ein trigger mehrfacht feuert?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    614

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

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

Wie verhindern, dass ein trigger mehrfacht feuert?

Scheduled Pinned Locked Moved Blockly
12 Posts 5 Posters 2.1k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • padrinoP Offline
    padrinoP Offline
    padrino
    Most Active
    wrote on last edited by padrino
    #1

    Hi,

    mit meinem Skript (Blockly) versuche ich Funkthermometer zu loggen.

    temp_log.jpg

    (die RegExp ist

    (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
    

    )

    Da die Sensoren (gleichzeitig) Temperatur und Luftfeuchtigkeit übermitteln und ich bei jeder Änderung in einem (externen Skript die absolute Luftfeuchtigkeit berechne), bekomme ich mehr Berechnungen bzw. log Einträge als nötig (ein Signal aktualisiert ja mehrer Datenpunkte), z.B. so

    javascript.0	2019-06-19 18:24:37.210	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
    javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
    javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
    javascript.0	2019-06-19 18:24:37.205	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
    javascript.0	2019-06-19 18:24:37.203	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
    

    Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann? :D

    CU,
    padrino

    paul53P E madjack84M 5 Replies Last reply
    0
    • OliverIOO Offline
      OliverIOO Offline
      OliverIO
      wrote on last edited by
      #2

      Hm, ganz nachvollziehen kann ich es nicht.
      Also Temperatur und Luftfeuchtigkeit wird immer zusammen übertragen.
      ich gehe davon aus, dass die dann auch in verschiedene DPs gepseichert werden.
      Warum erzeugst du dann Trigger für beide Werte? Reicht dann nicht einer? also bspw Firstline_1.HUM?

      Wenn deine Berechnung nicht extrem Aufwändig ist, wäre mir das egal. Den Datenpunkt kannst du ja so konfigurieren, dass er gleiche Werte nicht immer erneut aufschreibt bzw. nur ab einer bestimmten Änderung aufschreibt.

      Ansonsten wäre eine andere Lösung noch aufwändiger (Werte Zwischenpuffern und dann bspw. im Interval die endgültige Berechnung ausführen.)

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      1 Reply Last reply
      1
      • padrinoP padrino

        Hi,

        mit meinem Skript (Blockly) versuche ich Funkthermometer zu loggen.

        temp_log.jpg

        (die RegExp ist

        (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
        

        )

        Da die Sensoren (gleichzeitig) Temperatur und Luftfeuchtigkeit übermitteln und ich bei jeder Änderung in einem (externen Skript die absolute Luftfeuchtigkeit berechne), bekomme ich mehr Berechnungen bzw. log Einträge als nötig (ein Signal aktualisiert ja mehrer Datenpunkte), z.B. so

        javascript.0	2019-06-19 18:24:37.210	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
        javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
        javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
        javascript.0	2019-06-19 18:24:37.205	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
        javascript.0	2019-06-19 18:24:37.203	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
        

        Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann? :D

        CU,
        padrino

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #3

        @padrino sagte:

        externen Skript die absolute Luftfeuchtigkeit berechne

        Dann ist das der zuletzt erzeugte Wert, also sollte darauf getriggert werden.

        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 Reply Last reply
        1
        • padrinoP padrino

          Hi,

          mit meinem Skript (Blockly) versuche ich Funkthermometer zu loggen.

          temp_log.jpg

          (die RegExp ist

          (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
          

          )

          Da die Sensoren (gleichzeitig) Temperatur und Luftfeuchtigkeit übermitteln und ich bei jeder Änderung in einem (externen Skript die absolute Luftfeuchtigkeit berechne), bekomme ich mehr Berechnungen bzw. log Einträge als nötig (ein Signal aktualisiert ja mehrer Datenpunkte), z.B. so

          javascript.0	2019-06-19 18:24:37.210	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
          javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
          javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
          javascript.0	2019-06-19 18:24:37.205	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
          javascript.0	2019-06-19 18:24:37.203	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
          

          Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann? :D

          CU,
          padrino

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @padrino sagte:

          rflink.0.channels.

          Versuche es mal mit diesem RegExp:

          ^rflink\.0\.channels\..+\.ABS$
          

          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 Reply Last reply
          0
          • padrinoP Offline
            padrinoP Offline
            padrino
            Most Active
            wrote on last edited by padrino
            #5

            @OliverIO
            Ich erzeuge den Trigger für beide Werte, da sich ja jeder für sich ändern kann, aber nicht zwingend immer beide sich ändern, aber wenn sich nur einer ändert, dann hat das ja Einfluss auf die absolute LF. :)
            Ne, sind keine super komplizierten Berechnungen, also die Formeln schon irgendwie, aber nicht, dass da Raketenwissenschaft betrieben wird. ;)

            @paul53
            Stimmt! Ich könnte natürlich auf .ABS triggern, aber ich hätte gedacht, das würde auch dann mehrfach greifen... wie gesagt, hätte, denn wie sich herausstellt (für mich setsameweise) triggert ein

            (rflink.0.channels.*.HUM|rflink.0.channels.*.TEMP)
            

            seltener als ein

            (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
            

            (die einzelne Auflistung hatte ich nur vorgenommen, da ich Geräte ausnehmen wollte, was aber evtl. gar nicht nötig ist)

            paul53P 1 Reply Last reply
            0
            • padrinoP padrino

              @OliverIO
              Ich erzeuge den Trigger für beide Werte, da sich ja jeder für sich ändern kann, aber nicht zwingend immer beide sich ändern, aber wenn sich nur einer ändert, dann hat das ja Einfluss auf die absolute LF. :)
              Ne, sind keine super komplizierten Berechnungen, also die Formeln schon irgendwie, aber nicht, dass da Raketenwissenschaft betrieben wird. ;)

              @paul53
              Stimmt! Ich könnte natürlich auf .ABS triggern, aber ich hätte gedacht, das würde auch dann mehrfach greifen... wie gesagt, hätte, denn wie sich herausstellt (für mich setsameweise) triggert ein

              (rflink.0.channels.*.HUM|rflink.0.channels.*.TEMP)
              

              seltener als ein

              (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
              

              (die einzelne Auflistung hatte ich nur vorgenommen, da ich Geräte ausnehmen wollte, was aber evtl. gar nicht nötig ist)

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              @padrino sagte:

              seltener als ein

              Der triggert auch nur die Datenpunkte .TEMP und .HUM, während der andere auf alle Datenpunkte eines Kanales triggert.

              @padrino sagte in Wie verhindern, dass ein trigger mehrfacht feuert?:

              aber ich hätte gedacht, das würde auch dann mehrfach greifen

              Nur, wenn sich Temperatur und rH gleichzeitig ändern, wobei man das im Skript mit der Berechnung der abs. Feuchte verhindern kann.

              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 Reply Last reply
              0
              • padrinoP padrino

                Hi,

                mit meinem Skript (Blockly) versuche ich Funkthermometer zu loggen.

                temp_log.jpg

                (die RegExp ist

                (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
                

                )

                Da die Sensoren (gleichzeitig) Temperatur und Luftfeuchtigkeit übermitteln und ich bei jeder Änderung in einem (externen Skript die absolute Luftfeuchtigkeit berechne), bekomme ich mehr Berechnungen bzw. log Einträge als nötig (ein Signal aktualisiert ja mehrer Datenpunkte), z.B. so

                javascript.0	2019-06-19 18:24:37.210	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                javascript.0	2019-06-19 18:24:37.205	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                javascript.0	2019-06-19 18:24:37.203	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                

                Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann? :D

                CU,
                padrino

                E Offline
                E Offline
                el_malto
                wrote on last edited by el_malto
                #7

                @padrino So ganz check ich nicht was dein Trigger macht (keine Ahnung von RegExp oder sowas).
                Aber bedeutet das, dass dein trigger quasi innerhalb von 1 sec. mehrfach triggert weil sich merhere Werte in RegExp innerhalb weniger ms ändern und der trigger das immer merkt?
                Wenn ich das so richtig verstanden habe, kannst du das ja mit einen "Entpreller" sperren.
                Hier ein Beispiel von meiner Klingel.
                Bild Text
                Mein Magnetkontakt merkt das sich das Magnetfeld in der Spule von meiner Klingel beim klingeln gefühlt 1000 mal in der Sekunde ändert und dann würde ich z.B. 1000 Meldungen bekommen das es geklingelt hat. Mit dem "Entpreller" wird der Trigger erst wieder nach 10 Sekunden "freigeschaltet".

                1 Reply Last reply
                1
                • padrinoP padrino

                  Hi,

                  mit meinem Skript (Blockly) versuche ich Funkthermometer zu loggen.

                  temp_log.jpg

                  (die RegExp ist

                  (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
                  

                  )

                  Da die Sensoren (gleichzeitig) Temperatur und Luftfeuchtigkeit übermitteln und ich bei jeder Änderung in einem (externen Skript die absolute Luftfeuchtigkeit berechne), bekomme ich mehr Berechnungen bzw. log Einträge als nötig (ein Signal aktualisiert ja mehrer Datenpunkte), z.B. so

                  javascript.0	2019-06-19 18:24:37.210	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                  javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                  javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                  javascript.0	2019-06-19 18:24:37.205	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                  javascript.0	2019-06-19 18:24:37.203	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                  

                  Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann? :D

                  CU,
                  padrino

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #8

                  @padrino sagte:

                  Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann?

                  Ja, vor das Ausführen timeout in 300 ms ein stop timeout setzen.

                  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 Reply Last reply
                  1
                  • padrinoP padrino

                    Hi,

                    mit meinem Skript (Blockly) versuche ich Funkthermometer zu loggen.

                    temp_log.jpg

                    (die RegExp ist

                    (rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.HUM|rflink.0.channels.Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1.TEMP)
                    

                    )

                    Da die Sensoren (gleichzeitig) Temperatur und Luftfeuchtigkeit übermitteln und ich bei jeder Änderung in einem (externen Skript die absolute Luftfeuchtigkeit berechne), bekomme ich mehr Berechnungen bzw. log Einträge als nötig (ein Signal aktualisiert ja mehrer Datenpunkte), z.B. so

                    javascript.0	2019-06-19 18:24:37.210	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                    javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                    javascript.0	2019-06-19 18:24:37.207	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                    javascript.0	2019-06-19 18:24:37.205	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                    javascript.0	2019-06-19 18:24:37.203	error	script.js.common.Temperatur_log: Baldr 1: 28.2°C (38% = 10.46g/m³)
                    

                    Gibt es eine Möglichkeit, wie ich eine solche "Mehrfachabarbeitung" verhindern kann? :D

                    CU,
                    padrino

                    madjack84M Offline
                    madjack84M Offline
                    madjack84
                    wrote on last edited by
                    #9

                    @padrino du hast das Skript aber nicht unter "global" oder? das hatte ich mal und hab mich gewundert warum die Dinger öfter ausgelöst werden...

                    nuc i3, Proxmox, raspimatic (PI3), 15 shellies, shelly 4pro/25/RGB, wled sonoff, 7x xiaomi sensoren, 4xEchos, 4 Tasmota Steckdosen, motionEye, nspanel, Ring, hoymiles usw

                    1 Reply Last reply
                    1
                    • padrinoP Offline
                      padrinoP Offline
                      padrino
                      Most Active
                      wrote on last edited by
                      #10

                      @el_malto & @paul53
                      Das mit dem "Entpreller" bzw. timeout/stop muss ich mir mal anschauen. Danke!

                      @paul53
                      Hmm, kannst Du mir das mit der RegExp (einfach :innocent: ) erklären?
                      Wieso ist das mit den Pipes nicht einfach "oder" (also a|b) sondern der ganze "Kanal" und bei "*" an der Stelle nicht?

                      @madjack84
                      Ne, den Fehler mit "global" hab ich nur einmal gaaaanz am Anfang gemacht, da lief dann aber gar kein Skript. Seither nutze ich immer "common". =)

                      paul53P 1 Reply Last reply
                      0
                      • padrinoP padrino

                        @el_malto & @paul53
                        Das mit dem "Entpreller" bzw. timeout/stop muss ich mir mal anschauen. Danke!

                        @paul53
                        Hmm, kannst Du mir das mit der RegExp (einfach :innocent: ) erklären?
                        Wieso ist das mit den Pipes nicht einfach "oder" (also a|b) sondern der ganze "Kanal" und bei "*" an der Stelle nicht?

                        @madjack84
                        Ne, den Fehler mit "global" hab ich nur einmal gaaaanz am Anfang gemacht, da lief dann aber gar kein Skript. Seither nutze ich immer "common". =)

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by paul53
                        #11

                        @padrino sagte:

                        Wieso ist das mit den Pipes nicht einfach "oder"

                        Das ist es, aber da spielt die Klammer (Capturing Group) eine große Rolle. Was Du möchtest, sollte etwa so aussehen:

                        ^rflink\.0\.channels\.(Auriol_V3_1|Baldr_1|F007_TH_1|Firstline_1)\.(HUM|TEMP)$
                        

                        regex101.com:
                        RegExp_Gruppen.JPG

                        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 Reply Last reply
                        1
                        • padrinoP Offline
                          padrinoP Offline
                          padrino
                          Most Active
                          wrote on last edited by
                          #12

                          Hmm, dachte, das hätte ich mal so gehabt, hat nicht geklappt, daher der Versuch mit dem "oder" und dem ganzen Ausdruck zweimal... :thinking_face:
                          Muss ich mir mal nochmal anschauen, vielleicht hatte ich ja die Klammern doch irgendwie vermurkst. :face_with_rolling_eyes:

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          729

                          Online

                          32.7k

                          Users

                          82.6k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe