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. Schnelle Änderungen am Triggerobjekt auswerten?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    765

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

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

Schnelle Änderungen am Triggerobjekt auswerten?

Scheduled Pinned Locked Moved Blockly
18 Posts 4 Posters 1.4k Views 3 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.
  • Dark AngelD Dark Angel

    Da sich die Logic beim Shelly Gen.2 gegenüber der Gen.1 etwas geändert hat, bin ich auf der Suche nach eine Lösung für folgendes Problem:

    Bei Gen.2 wurden ein paar Datenpunkte zusammengeschmissen, was eben dazu führt, dass z.B. ein Longpush nicht mehr mit true, oder false hinterlegt wird, sondern in einen Event zusammen mit dem Button-Status zusammengeschmissen wird.
    So z.B. sieht ein short_push aus:

      {
        "ts": 1736716265.022,
        "level": 2,
        "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_down\",\"ts\":1736716264.99}",
        "fd": 1
      },
      {
        "ts": 1736716265.188,
        "level": 2,
        "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_up\",\"ts\":1736716265.17}",
        "fd": 1
      },
      {
        "ts": 1736716265.51,
        "level": 2,
        "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"single_push\",\"ts\":1736716265.49}",
        "fd": 1
      },
    

    und so ein long_push:

     {
        "ts": 1736716271.118,
        "level": 2,
        "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_down\",\"ts\":1736716271.10}",
        "fd": 1
      },
      {
        "ts": 1736716272.116,
        "level": 2,
        "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"long_push\",\"ts\":1736716272.10}",
        "fd": 1
      },
      {
        "ts": 1736716273.469,
        "level": 2,
        "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_up\",\"ts\":1736716273.45}",
        "fd": 1
      },
    

    Hat jemand eine Idee, wie ich diese sich innerhalb von Millisekunden ändernde Events auswerten kann um short- und long-push zu triggern?

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    wrote on last edited by
    #3

    @dark-angel

    das event steh doch direkt in den daten drin
    single_push
    long_push

    eigentlich nur auf die eventdaten testen

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

    Dark AngelD 1 Reply Last reply
    1
    • OliverIOO OliverIO

      @dark-angel

      das event steh doch direkt in den daten drin
      single_push
      long_push

      eigentlich nur auf die eventdaten testen

      Dark AngelD Offline
      Dark AngelD Offline
      Dark Angel
      wrote on last edited by
      #4

      @oliverio
      Genau das ist ja die Frage...
      Wie filtere ich in eine "IF...THEN..." Schleife den richtigen Event?
      Die Schaltzustände werden in wirklich kürzeste Zeit hintereinander im Event angezeigt.

      OliverIOO 1 Reply Last reply
      0
      • MartinPM MartinP

        @dark-angel wenn es reicht, den short Push beim Loslassen der Taste zu erkennen, würde ich die Button down ignorieren

        Wenn das letzte Event vor dem Button - Up ein Button Down war, ist es ein Short, ansonsten Long

        Dark AngelD Offline
        Dark AngelD Offline
        Dark Angel
        wrote on last edited by
        #5

        @martinp
        wie werte ich das letzte Event aus?
        Die "IF...THEN.." Schleife wird bei Änderung im Event aktiviert, also praktisch bei der ersten Änderung und nicht bei der letzten.
        Ich könnte zwar das Script erst dann "aktivieren", wenn ein "short_push", oder "long_push" Event ausgelöst wird, ist aber für eine Schleife unbrauchbar und ich müsste 2 Scripte erstellen um die jeweiligen Events entsprechend abzufangen und damit dann mein Schindluder betreiben.

        1 Reply Last reply
        0
        • Dark AngelD Dark Angel

          @oliverio
          Genau das ist ja die Frage...
          Wie filtere ich in eine "IF...THEN..." Schleife den richtigen Event?
          Die Schaltzustände werden in wirklich kürzeste Zeit hintereinander im Event angezeigt.

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          wrote on last edited by
          #6

          @dark-angel

          ah, du machst dir sorgen über die geschwindigkeit?
          das ist eigentlich kein Problem (natürlich systemabhängigkeit und in welcher geschwindigkeit du reagieren möchtest)

          ich weiß jetzt nicht auf welcher Basis die Ausgabe oben entstanden ist.
          Ich gehe jetzt mal davon aus, das jedes Event einzeln vom Gerät gesendet wird und du nur sowas wie hier empfängst

           {
              "ts": 1736716271.118,
              "level": 2,
              "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_down\",\"ts\":1736716271.10}",
              "fd": 1
            }
          

          dann ist das erst einmal ein ganz normales JSON Objekt.
          ts ist der zeitstempel. level und fd weiß ich nicht.
          interessant ist data, das ist ein String der Text und ebenfalls nochmals ein JSON Objekt enthält, der muss zunächst mit regex interpretiert werden

          let obj = {
              "ts": 1736716272.116,
              "level": 2,
              "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"long_push\",\"ts\":1736716272.10}",
              "fd": 1
            }
          let regex=new RegExp("{.*}");
          let list = obj.data.match(regex);
          let data = JSON.parse(list[0]);
          switch(data.event)
             case "short_push":
                console.log("aktionen short_push")
             case "long_push":
                console.log("aktionen long_push")
             default:
                console.log("nix machen bei anderen eventtypen")
          

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

          Dark AngelD 1 Reply Last reply
          0
          • Dark AngelD Dark Angel

            Da sich die Logic beim Shelly Gen.2 gegenüber der Gen.1 etwas geändert hat, bin ich auf der Suche nach eine Lösung für folgendes Problem:

            Bei Gen.2 wurden ein paar Datenpunkte zusammengeschmissen, was eben dazu führt, dass z.B. ein Longpush nicht mehr mit true, oder false hinterlegt wird, sondern in einen Event zusammen mit dem Button-Status zusammengeschmissen wird.
            So z.B. sieht ein short_push aus:

              {
                "ts": 1736716265.022,
                "level": 2,
                "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_down\",\"ts\":1736716264.99}",
                "fd": 1
              },
              {
                "ts": 1736716265.188,
                "level": 2,
                "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_up\",\"ts\":1736716265.17}",
                "fd": 1
              },
              {
                "ts": 1736716265.51,
                "level": 2,
                "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"single_push\",\"ts\":1736716265.49}",
                "fd": 1
              },
            

            und so ein long_push:

             {
                "ts": 1736716271.118,
                "level": 2,
                "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_down\",\"ts\":1736716271.10}",
                "fd": 1
              },
              {
                "ts": 1736716272.116,
                "level": 2,
                "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"long_push\",\"ts\":1736716272.10}",
                "fd": 1
              },
              {
                "ts": 1736716273.469,
                "level": 2,
                "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_up\",\"ts\":1736716273.45}",
                "fd": 1
              },
            

            Hat jemand eine Idee, wie ich diese sich innerhalb von Millisekunden ändernde Events auswerten kann um short- und long-push zu triggern?

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

            @dark-angel sagte: in einen Event

            Gibt es einen Event-Datenpunkt?

            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

            Dark AngelD 1 Reply Last reply
            0
            • paul53P paul53

              @dark-angel sagte: in einen Event

              Gibt es einen Event-Datenpunkt?

              Dark AngelD Offline
              Dark AngelD Offline
              Dark Angel
              wrote on last edited by
              #8

              @paul53
              Der Datenpunkt in ioBroker (über den Shelly Adapter) heist direkt Event:

              shelly.0.shellyplus2pm#9015068820c0#1.Input0.Event
              

              Da werden direkt hintereinander die 3 Meldungen aus dem Eröffnungspost quitiert.

              OliverIOO paul53P 2 Replies Last reply
              0
              • Dark AngelD Dark Angel

                @paul53
                Der Datenpunkt in ioBroker (über den Shelly Adapter) heist direkt Event:

                shelly.0.shellyplus2pm#9015068820c0#1.Input0.Event
                

                Da werden direkt hintereinander die 3 Meldungen aus dem Eröffnungspost quitiert.

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                wrote on last edited by
                #9

                @dark-angel

                aber jeweils einzeln? oder steht da die liste von oben drin?

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

                Dark AngelD 1 Reply Last reply
                0
                • OliverIOO OliverIO

                  @dark-angel

                  ah, du machst dir sorgen über die geschwindigkeit?
                  das ist eigentlich kein Problem (natürlich systemabhängigkeit und in welcher geschwindigkeit du reagieren möchtest)

                  ich weiß jetzt nicht auf welcher Basis die Ausgabe oben entstanden ist.
                  Ich gehe jetzt mal davon aus, das jedes Event einzeln vom Gerät gesendet wird und du nur sowas wie hier empfängst

                   {
                      "ts": 1736716271.118,
                      "level": 2,
                      "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"btn_down\",\"ts\":1736716271.10}",
                      "fd": 1
                    }
                  

                  dann ist das erst einmal ein ganz normales JSON Objekt.
                  ts ist der zeitstempel. level und fd weiß ich nicht.
                  interessant ist data, das ist ein String der Text und ebenfalls nochmals ein JSON Objekt enthält, der muss zunächst mit regex interpretiert werden

                  let obj = {
                      "ts": 1736716272.116,
                      "level": 2,
                      "data": "shelly_notification:208 Event from input:0: {\"component\":\"input:0\",\"id\":0,\"event\":\"long_push\",\"ts\":1736716272.10}",
                      "fd": 1
                    }
                  let regex=new RegExp("{.*}");
                  let list = obj.data.match(regex);
                  let data = JSON.parse(list[0]);
                  switch(data.event)
                     case "short_push":
                        console.log("aktionen short_push")
                     case "long_push":
                        console.log("aktionen long_push")
                     default:
                        console.log("nix machen bei anderen eventtypen")
                  
                  Dark AngelD Offline
                  Dark AngelD Offline
                  Dark Angel
                  wrote on last edited by
                  #10

                  @oliverio
                  Die Ausgabe ist aus dem Debugfenster auf dem Shelly kopiert.

                  Die Idee mit dem Script geht schon in der Richtung wie ich mir die Lösung des Problems vorstelle.
                  Muss dann heute Abend gleich mal herumexperimentieren...

                  Danke für den Richtungsanstoß.

                  1 Reply Last reply
                  0
                  • OliverIOO OliverIO

                    @dark-angel

                    aber jeweils einzeln? oder steht da die liste von oben drin?

                    Dark AngelD Offline
                    Dark AngelD Offline
                    Dark Angel
                    wrote on last edited by
                    #11

                    @oliverio
                    Einzeln. So schnell kann ich gar nicht schauen, wie sich der Wert ändert ... 😵

                    1 Reply Last reply
                    0
                    • Dark AngelD Dark Angel

                      @paul53
                      Der Datenpunkt in ioBroker (über den Shelly Adapter) heist direkt Event:

                      shelly.0.shellyplus2pm#9015068820c0#1.Input0.Event
                      

                      Da werden direkt hintereinander die 3 Meldungen aus dem Eröffnungspost quitiert.

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

                      @dark-angel sagte: die 3 Meldungen aus dem Eröffnungspost

                      Das komplette JSON? Sicherlich die 3 Events unmittelbar nacheinander?

                      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

                      Dark AngelD 1 Reply Last reply
                      0
                      • paul53P paul53

                        @dark-angel sagte: die 3 Meldungen aus dem Eröffnungspost

                        Das komplette JSON? Sicherlich die 3 Events unmittelbar nacheinander?

                        Dark AngelD Offline
                        Dark AngelD Offline
                        Dark Angel
                        wrote on last edited by Dark Angel
                        #13

                        @paul53
                        01282801-06fe-4333-91a0-284890aa7987-grafik.png

                        Bzw.:
                        a8966fbc-2822-4186-93cf-e5aeca3c3822-grafik.png

                        OliverIOO paul53P 2 Replies Last reply
                        0
                        • Dark AngelD Dark Angel

                          @paul53
                          01282801-06fe-4333-91a0-284890aa7987-grafik.png

                          Bzw.:
                          a8966fbc-2822-4186-93cf-e5aeca3c3822-grafik.png

                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          wrote on last edited by OliverIO
                          #14

                          @dark-angel
                          da ist doch schon ein datenpunkt namens event.
                          dann musst doch nur einen trigger auf diesen datenpunkt setzen und unterscheiden ob da short oder long drin steht und deine aktionen auslösen
                          da muss man nicht mal die verrenkungen mit dem skript machen

                          wie gesagt, die geschwindigkeit ist kein problem. die events werden der reihe nach reinkommen, die datenpunkte aktualisisert werden.
                          auch wenn du uU die Änderungen auf der Oberfläche nicht wahrnimmst

                          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
                          0
                          • Dark AngelD Dark Angel

                            @paul53
                            01282801-06fe-4333-91a0-284890aa7987-grafik.png

                            Bzw.:
                            a8966fbc-2822-4186-93cf-e5aeca3c3822-grafik.png

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

                            @dark-angel
                            "Event" enthält doch, was man braucht.

                            Blockly_temp.JPG

                            "hold" bleibt true bis losgelassen wird.

                            EDIT: Anstelle des Schreibens in die eigenen Datenpunkte können auch direkt die Aktionen zur jeweiligen Tastenbetätigung ausgeführt werden.

                            Anmerkung: Wenn es "single_push" gibt, gibt es vielleicht auch "double_push"? Zum Erkennen von "long_push" wird immerhin 1 s benötigt.

                            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

                            Dark AngelD 1 Reply Last reply
                            1
                            • paul53P paul53

                              @dark-angel
                              "Event" enthält doch, was man braucht.

                              Blockly_temp.JPG

                              "hold" bleibt true bis losgelassen wird.

                              EDIT: Anstelle des Schreibens in die eigenen Datenpunkte können auch direkt die Aktionen zur jeweiligen Tastenbetätigung ausgeführt werden.

                              Anmerkung: Wenn es "single_push" gibt, gibt es vielleicht auch "double_push"? Zum Erkennen von "long_push" wird immerhin 1 s benötigt.

                              Dark AngelD Offline
                              Dark AngelD Offline
                              Dark Angel
                              wrote on last edited by
                              #16

                              @paul53
                              Das Problem ist, dass Event immer 3 Meldungen ausgibt (3 Zustände hintereinander)
                              Wenn ich Event triggere ist der erste Zustand immer "btn_down".
                              Bei SinglePress kommt erst "btn_up" und dann bleibt Event bei "single_push" stehen.
                              Anders allerdings bei LongPress: da kommt als nächstes "long_push" und zum Schluss bleibt es bei "btn_up" stehen.
                              Wenn ich zu 100% sicher wäre, dass die letzte Meldung bei LongPress immer "btn_up" sein wird, dann könnte ich das in mein Script einbauen (Event Auswertung mit kleine Verzögerung um sicher zu stellen, dass alle Eventmeldungen schon durch sind?).
                              Der Ursprung der "Geschichte" ist HIER nachzulesen. Das Shelly die Logic geändert hat finde ich persönlich nicht sehr prickelnd, aber die werden sich schon was dabei gedacht haben...

                              paul53P 1 Reply Last reply
                              0
                              • Dark AngelD Dark Angel

                                @paul53
                                Das Problem ist, dass Event immer 3 Meldungen ausgibt (3 Zustände hintereinander)
                                Wenn ich Event triggere ist der erste Zustand immer "btn_down".
                                Bei SinglePress kommt erst "btn_up" und dann bleibt Event bei "single_push" stehen.
                                Anders allerdings bei LongPress: da kommt als nächstes "long_push" und zum Schluss bleibt es bei "btn_up" stehen.
                                Wenn ich zu 100% sicher wäre, dass die letzte Meldung bei LongPress immer "btn_up" sein wird, dann könnte ich das in mein Script einbauen (Event Auswertung mit kleine Verzögerung um sicher zu stellen, dass alle Eventmeldungen schon durch sind?).
                                Der Ursprung der "Geschichte" ist HIER nachzulesen. Das Shelly die Logic geändert hat finde ich persönlich nicht sehr prickelnd, aber die werden sich schon was dabei gedacht haben...

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

                                @dark-angel sagte: Event immer 3 Meldungen ausgibt (3 Zustände hintereinander)
                                Wenn ich Event triggere ist der erste Zustand immer "btn_down".

                                Ja und ...? "btn_down" wird nicht ausgewertet, also ignoriert.

                                @dark-angel sagte in Schnelle Änderungen am Triggerobjekt auswerten?:

                                "long_push" und zum Schluss bleibt es bei "btn_up" stehen.

                                Genau dieses Verhalten wird in meinem Blockly-Vorschlag berücksichtigt.

                                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
                                • Dark AngelD Offline
                                  Dark AngelD Offline
                                  Dark Angel
                                  wrote on last edited by
                                  #18

                                  Erster (mehr, oder weniger) Erfolg, erzielt durch folg. Blockly:

                                  ad4420bb-5d2b-4e15-ae36-42d7b218949c-grafik.png
                                  Shelly Output ist "momentary" mit invertet Input
                                  So wird das Licht auch ohne ioBroker funktionsfähig bleiben, nur eben ohne den Zusatz des Longpushs.
                                  Wenn Output auf "detached" gesetzt würde, geht das Licht wenn Longpush erkannt wurde, oder aber eben beim loslassen an (in etwa wie "momentary_on_release" bei Shelly Gen.1). Nachteil: Wenn keine Kommunikation mit ioBroker, dann bleibt es dunkel.

                                  1 Reply Last reply
                                  0

                                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                  With your input, this post could be even better 💗

                                  Register Login
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  497

                                  Online

                                  32.8k

                                  Users

                                  82.7k

                                  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