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.
    • MartinP
      MartinP last edited by MartinP

      Kann man auch eine Liste als Trigger-Quelle nutzen?

      Bisher habe ich nur die Möglichkeit gefunden, die Datenpunkte einzeln in den Kopf der entsprechenden Variante des Trigger Blocks einzutragen.

      paul53 Ro75 2 Replies Last reply Reply Quote 0
      • 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

                            921
                            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