Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Ein Trigger auf alle Datenpunkte in einer Liste

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Ein Trigger auf alle Datenpunkte in einer Liste

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

      @martinp sagte: Kann man auch eine Liste als Trigger-Quelle nutzen?

      Ja, eine Liste aus Datenpunkt-IDs.

      Blockly_temp.JPG

      Diese Version erzeugt intern ebenfalls eine ID-Liste:

      Blockly_temp.JPG

      Und diese Version erzeugt eine ID-Liste anhand der Selektionskriterien:

      Blockly_temp.JPG

      MartinP 1 Reply Last reply Reply Quote 2
      • MartinP
        MartinP @paul53 last edited by MartinP

        @paul53 Kann man irgendwie auf diese intern erzeugte ID Liste zugreifen?

        Das Blockly dient der Alive Überwachung von Geräten nebst eMail versand, und Ich würde im Text der Mail dann einfach den Zustand jedes Gerätes in einer Zeile ausgeben. Da wäre ein Recycling der Liste einfacher, als eine Variable anzulegen....

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

          @martinp so mache ich es via JS:

          var list_gc_temperatur  = ['fritzdect.0.DECT_087610464655.celsius','fritzdect.0.DECT_087610465893.celsius','fritzdect.0.DECT_087610482188.celsius','fritzdect.0.DECT_087610517354.celsius','fritzdect.0.DECT_116300042978.celsius','fritzdect.0.DECT_116300052609.celsius','fritzdect.0.DECT_116300299458.celsius','fritzdect.0.DECT_116300299459.celsius','fritzdect.0.DECT_116300299460.celsius'];
          
          on({id: list_gc_temperatur, change: 'ne'}, function (dp) {
             // hier der Code oder einen Aufruf einer Funktion
          });
          

          Ro75.

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

            @ro75 sagte: so mache ich es via JS:

            Das entspricht der ersten Version.

            @martinp sagte in Ein Trigger auf alle Datenpunkte in einer Liste:

            Kann man irgendwie auf diese intern erzeugte ID Liste zugreifen?

            Nein. Nimm die Version mit der Variablen.

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

              @paul53 So, das ist der erste Versuch ... sind noch nicht annähernd alle Geräte ...
              Vielleicht wäre "über Bande" mit einer Sammlung von "Alive" Punkten als Aliase zu arbeiten eine bequemere Lösung, als da im Blockly die Liste zu pflegen... bin da noch unsicher

              07da10c3-f585-46c7-9c42-ca8be506984c-Bildschirmfoto vom 2024-05-12 18-44-41.png

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

                @martinp sagte: Sammlung von "Alive" Punkten

                Kann man keinen Selektor verwenden? Wie sieht die ID-Struktur aus?

                Anmerkung: Die Variable EmailBody muss vor der Schleife initialisiert werden.

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

                  @paul53 Die meisten Datenpunkte kommen aus dem Ping-Adapter. Die hätten natürlich eine einheitliche Struktur ... man muss sich da ansonsten durch die Objektbäume der Adapter, und die Lesarten, wie man so etwas ausgeben sollte der verschiedenen Entwickler kämpfen...

                  Inzwischen habe ich zwei zigbee2MQTT Datenpunkte hinzugefügt, aber selbst die sind nicht untereinander "Kompatibel":
                  beim Lidl-Fluter "...availability={"state" : "online"}",
                  beim aqara-thermometer "...availability=true (bool)

                  ... und deshalb habe ich mir schon einmal Alias-Datenpunkte für die beiden angelegt ...

                  a48027de-4e00-49b5-b436-41ccd170560d-grafik.png

                  Vielleicht wäre es da wirklich das Einfachste, in einem ersten Schritt allen Geräten, die überwacht werden sollen dort unter "alias.0.available" einen Eintrag zu verschaffen, der über read Konvertierungsfunktion dann die Unterschiede glattbügelt, und verlässlich true/false enthält ...

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

                    @martinp sagte: allen Geräten, die überwacht werden sollen dort unter "alias.0.available" einen Eintrag zu verschaffen, der über read Konvertierungsfunktion dann die Unterschiede glattbügelt, und verlässlich true/false enthält ...

                    Gute Idee.

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

                      @martinp sagte: Die meisten Datenpunkte kommen aus dem Ping-Adapter.

                      Man kann auch eine Liste per Selektor erstellen und sie anschließend um weitere IDs erweitern:

                      Blockly_temp.JPG

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

                        @paul53 Danke, das würde das Blockly wieder um einiges verkürzen.

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

                          So, hier die endgültige Lösung

                          Initialisierung:

                          e665a404-9fd7-4fd6-83e7-d39a1f550889-grafik.png

                          Trigger-Schleife:
                          559f84e1-6cf2-4b4b-bb29-d0a4e83fb455-grafik.png

                          Durch die um 3 Sekunden verzögerte Ausführung möchte ich die Anzahl der Mails verringern. Häufig fallen ja die Geräte in "Rudeln" aus, z. B. bei WLAN-Problemen, und dann ist es sicher gut, erst eine Mail zu bekommen, wenn das ganze Rudel die Probleme gemeldet hat ... Vielleicht spiele ich noch mit der Wartezeit. Der Ping-Adapter ist auf 60 Sekunden eingestellt, wahrscheinlich wären da mehr als 70 Sekunden besser, aber dann dauert es noch länger, bis die Mail eintrudelt...

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          937
                          Online

                          32.0k
                          Users

                          80.4k
                          Topics

                          1.3m
                          Posts

                          3
                          12
                          333
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo