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. Wie verhindern, dass ein trigger mehrfacht feuert?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Wie verhindern, dass ein trigger mehrfacht feuert?

Geplant Angeheftet Gesperrt Verschoben Blockly
12 Beiträge 5 Kommentatoren 2.0k Aufrufe 4 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.
  • 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
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • padrinoP Online
        padrinoP Online
        padrino
        Most Active
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                1
                • padrinoP Online
                  padrinoP Online
                  padrino
                  Most Active
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    1
                    • padrinoP Online
                      padrinoP Online
                      padrino
                      Most Active
                      schrieb am zuletzt editiert von
                      #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 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

                      452

                      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