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. "Alle" Objekte aus Baum abfragen bei Stateänderung

NEWS

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

  • 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

"Alle" Objekte aus Baum abfragen bei Stateänderung

Scheduled Pinned Locked Moved Skripten / Logik
15 Posts 3 Posters 1.2k 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.
  • CodierknechtC Codierknecht

    @maniac
    Im Prinzip nach diesem Muster:

    350a8716-eac3-4f94-8fc7-0e01b40ee69c-image.png

    Die JavaScript-Funktion ist denkbar einfach:

    return text.replace(oldText, newText);
    

    Edit:
    Allerdings findest Du damit noch keine neuen Geräte, da die Liste der zu überwachenden Objekte (der Selektor) beim Start des Script erzeugt wird.

    Edit2:
    Dir ist aber schon klar, dass die Liste ggf. seeeeehr lang werden kann?
    Besser wäre hier, mit einer Aufzählung zu arbeiten und nur bestimmte Geräte zu überwachen.

    M Offline
    M Offline
    maniac
    wrote on last edited by
    #4

    @codierknecht sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

    Edit:
    Allerdings findest Du damit noch keine neuen Geräte, da die Liste der zu überwachenden Objekte (der Selektor) beim Start des Script erzeugt wird.

    Das könnte ich ja lösen indem ich das einmal am Tag neu starte?

    Edit2:
    Dir ist aber schon klar, dass die Liste ggf. seeeeehr lang werden kann?
    Besser wäre hier, mit einer Aufzählung zu arbeiten und nur bestimmte Geräte zu überwachen.

    Wie würde das mit der Aufzählung funktionieren?

    Gruß Frank…

    1 Reply Last reply
    0
    • M maniac

      @codierknecht
      Danke, wie komme ich an den Block ran?
      76223fe7-41e5-4cc2-81a6-faf2bb3e1f50-grafik.png

      Device und Client sind Variablen denke ich? Wie wird Client gefüllt?

      Bisher habe ich es so.

      c999aa07-a8f0-4603-ab29-2d3308e93b1f-grafik.png

      M Offline
      M Offline
      maniac
      wrote on last edited by
      #5

      @maniac sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

      @codierknecht
      Danke, wie komme ich an den Block ran?
      76223fe7-41e5-4cc2-81a6-faf2bb3e1f50-grafik.png

      Hab es hinbekommen.

      9497f0d1-e7be-4170-99b6-820024f7b0c0-grafik.png

      Device und Client sind Variablen denke ich? Wie wird Client gefüllt?

      Client ist ja gar nicht nötig. Device reicht ja als Name.

      Gruß Frank…

      1 Reply Last reply
      0
      • M maniac

        @codierknecht
        Danke, wie komme ich an den Block ran?
        76223fe7-41e5-4cc2-81a6-faf2bb3e1f50-grafik.png

        Device und Client sind Variablen denke ich? Wie wird Client gefüllt?

        Bisher habe ich es so.

        c999aa07-a8f0-4603-ab29-2d3308e93b1f-grafik.png

        CodierknechtC Online
        CodierknechtC Online
        Codierknecht
        Developer Most Active
        wrote on last edited by
        #6

        @maniac sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

        Wie wird Client gefüllt?

        Überbleibsel aus einem Test. Hat da nix zu suchen :-(

        wie komme ich an den Block ran?

        Indem Du Dir eine "JS-Funktion mit Ergebnis" baust, die die passenden Parameter entgegennimmt.

        Das könnte ich ja lösen indem ich das einmal am Tag neu starte?

        Dann müsstest Du Dir eine Liste der Geräte irgendwo vorhalten und beim Neustart abgleichen, ob neue hinzugekommen sind. Das wird dann schon ordentlich aufwändig.

        Wie würde das mit der Aufzählung funktionieren?

        Im Prinzip so:
        68156b3a-2cbe-4c44-95c9-9fc8473aa635-image.png

        3d8caa24-b816-4a90-9759-79efbe159107-image.png

        In der Aufzählung sind hier alle Geräte enthalten, die mich interessieren (hier: die Handys der Bewohner).
        Der Trigger feuert nur dann, wenn eines dieser Geräte seinen Status ändert.

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        M 1 Reply Last reply
        1
        • CodierknechtC Codierknecht

          @maniac sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

          Wie wird Client gefüllt?

          Überbleibsel aus einem Test. Hat da nix zu suchen :-(

          wie komme ich an den Block ran?

          Indem Du Dir eine "JS-Funktion mit Ergebnis" baust, die die passenden Parameter entgegennimmt.

          Das könnte ich ja lösen indem ich das einmal am Tag neu starte?

          Dann müsstest Du Dir eine Liste der Geräte irgendwo vorhalten und beim Neustart abgleichen, ob neue hinzugekommen sind. Das wird dann schon ordentlich aufwändig.

          Wie würde das mit der Aufzählung funktionieren?

          Im Prinzip so:
          68156b3a-2cbe-4c44-95c9-9fc8473aa635-image.png

          3d8caa24-b816-4a90-9759-79efbe159107-image.png

          In der Aufzählung sind hier alle Geräte enthalten, die mich interessieren (hier: die Handys der Bewohner).
          Der Trigger feuert nur dann, wenn eines dieser Geräte seinen Status ändert.

          M Offline
          M Offline
          maniac
          wrote on last edited by
          #7

          @codierknecht Funktioniert einwandfrei wenn man es begriffen hat 😀
          Vielen Dank

          Gruß Frank…

          1 Reply Last reply
          0
          • M maniac

            Moin zusammen.

            Ich würde gerne die States bei Änderung von "allen" Objekten in einem Ordner überwachen und dann eine Telegram Nachricht bekommen.

            Speziell geht es um den Unifi Ordner Clients.

            e38b200e-bb14-44ca-8420-a35a2e2ed2cf-grafik.png

            Hier sind diverse Clients aufgeführt.

            Nun möchte ich wenn z.B. das NAS offline geht eine Telegram Meldung bekommen.
            Es soll also der Datenpunkt is_online ausgewertet werden. Dann möchte ich aber gerne in der Telegram Meldung den Namen sehen. In diesem Fall FFL-NAS

            Bisher mache ich das von Hand in den Telegram Einstellungen, was sehr aufwendig ist.

            f05a9d97-f43e-4653-a7a4-cfe0f8a327b5-grafik.png

            Das funktioniert zwar soweit, aber da sich die Geräte sehr dynamisch ändern, würde ich gerne den State is_online im gesamten Ordner auswerten und egal welcher Client sich an-/abmeldet eine Telegram bekommen mit dem Namen des Client.

            Als Beispiel nochmal, es wird ein neuer Drucker installiert, dieser wird im Unifi-Controller "Drucker0815" genannt. Wenn dieser nun online geht, soll eine Telegram mit Drucker0815 ist online oder so ähnlich erfolgen.

            Ist das irgendwie mit Blockly möglich?

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

            @maniac sagte: Namen sehen. In diesem Fall FFL-NAS

            Der wird im Trigger als Kanalname geliefert.

            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

            M 1 Reply Last reply
            0
            • paul53P paul53

              @maniac sagte: Namen sehen. In diesem Fall FFL-NAS

              Der wird im Trigger als Kanalname geliefert.

              M Offline
              M Offline
              maniac
              wrote on last edited by maniac
              #9

              @paul53 sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

              @maniac sagte: Namen sehen. In diesem Fall FFL-NAS

              Der wird im Trigger als Kanalname geliefert.

              Ja, hast Du Recht in dem Fall, aber es ist oft so, das im Kanalnamen nur eine IP steht wenn der Client noch nicht konfiguriert ist. Da ist der Hostname dann meist sinnvoller.
              Es ging mir auch mehr um die Funktion alle States auf einmal zu "überwachen".
              Bisher hatte ich ja jeden Client manuell mit Telegram konfiguriert.

              Aber wo wir gerade dabei sind 😉

              Jetzt geht es weiter.

              Wie kann ich jetzt aus allen Clients die online sind eine Liste generieren?

              Ich habe da was mit cacheselektor gefunden, aber Javascript habe ich nun gar keinen Schimmer.
              Ist da auch was in Blockly möglich?

              Praktisch so: Selektiere alle Online clients und gebe den Namen und Status in eine Liste.

              Gruß Frank…

              CodierknechtC 1 Reply Last reply
              0
              • M maniac

                @paul53 sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

                @maniac sagte: Namen sehen. In diesem Fall FFL-NAS

                Der wird im Trigger als Kanalname geliefert.

                Ja, hast Du Recht in dem Fall, aber es ist oft so, das im Kanalnamen nur eine IP steht wenn der Client noch nicht konfiguriert ist. Da ist der Hostname dann meist sinnvoller.
                Es ging mir auch mehr um die Funktion alle States auf einmal zu "überwachen".
                Bisher hatte ich ja jeden Client manuell mit Telegram konfiguriert.

                Aber wo wir gerade dabei sind 😉

                Jetzt geht es weiter.

                Wie kann ich jetzt aus allen Clients die online sind eine Liste generieren?

                Ich habe da was mit cacheselektor gefunden, aber Javascript habe ich nun gar keinen Schimmer.
                Ist da auch was in Blockly möglich?

                Praktisch so: Selektiere alle Online clients und gebe den Namen und Status in eine Liste.

                CodierknechtC Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                wrote on last edited by
                #10

                @maniac sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

                Praktisch so: Selektiere alle Online clients und gebe den Namen und Status in eine Liste.

                Du baust Dir einfach eine weitere Liste.
                Da ich zu bequem bin, das Ganze nochmal komplett zu bauen, hier nur das Prinzip:
                b76742b9-779e-4edf-a12e-782d1c60616d-image.png

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                M 1 Reply Last reply
                1
                • CodierknechtC Codierknecht

                  @maniac sagte in "Alle" Objekte aus Baum abfragen bei Stateänderung:

                  Praktisch so: Selektiere alle Online clients und gebe den Namen und Status in eine Liste.

                  Du baust Dir einfach eine weitere Liste.
                  Da ich zu bequem bin, das Ganze nochmal komplett zu bauen, hier nur das Prinzip:
                  b76742b9-779e-4edf-a12e-782d1c60616d-image.png

                  M Offline
                  M Offline
                  maniac
                  wrote on last edited by
                  #11

                  @codierknecht

                  278ccb74-9ba1-494a-bd29-0ce1a20dd15d-grafik.png

                  So hab ich jetzt mal nachgebaut.
                  Passiert aber nix weiter.
                  Liste ist anscheinend leer. 😕

                  Gruß Frank…

                  paul53P 1 Reply Last reply
                  0
                  • M maniac

                    @codierknecht

                    278ccb74-9ba1-494a-bd29-0ce1a20dd15d-grafik.png

                    So hab ich jetzt mal nachgebaut.
                    Passiert aber nix weiter.
                    Liste ist anscheinend leer. 😕

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

                    @maniac

                    Versuche mal:

                    Blockly_temp.JPG

                    Es muss sich erst ein Datenpunktwert "is_online" ändern, damit getriggert wird.

                    id = id.replace('is_online', 'hostname');
                    return getState(id).val;
                    

                    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

                    M 2 Replies Last reply
                    1
                    • paul53P paul53

                      @maniac

                      Versuche mal:

                      Blockly_temp.JPG

                      Es muss sich erst ein Datenpunktwert "is_online" ändern, damit getriggert wird.

                      id = id.replace('is_online', 'hostname');
                      return getState(id).val;
                      
                      M Offline
                      M Offline
                      maniac
                      wrote on last edited by
                      #13

                      @paul53 Made my Day...

                      Das klappt soweit, vielen Dank.

                      Nun muesste das noch übersichtlicher werden, im Moment kommt es in Telegram so an:

                      Client1,Client2,Client3,Client4,Client5,Client6,Client7 usw.
                      In Telegram ist nur ein Komma dazwischen was natürlich recht unübersichtlich ist.

                      Gibt das Möglichkeiten in die Formatierung einzugreifen? z.B. nach jedem Client ein "return"?
                      Mit ´\n´ als Trennzeichen geht es nicht 😇
                      Oder wäre gar irgendwie HTML möglich zur Formatierung? (Wunschdenken... 😉 )

                      Gruß Frank…

                      1 Reply Last reply
                      0
                      • paul53P paul53

                        @maniac

                        Versuche mal:

                        Blockly_temp.JPG

                        Es muss sich erst ein Datenpunktwert "is_online" ändern, damit getriggert wird.

                        id = id.replace('is_online', 'hostname');
                        return getState(id).val;
                        
                        M Offline
                        M Offline
                        maniac
                        wrote on last edited by
                        #14

                        @paul53
                        Und nochmal eine Verständnisfrage.

                        Diese Funktion wählt alle Datenpunkte aus die "true" sind?
                        Könnte man dann auch überall nutzen? Bei Licht z.B. alle eingeschalteten Lampen wählen? (Sofern die ID der Lampen "gleich" ist)

                        48c433b7-c3fb-46b6-8884-b135e01594f4-grafik.png

                        Gruß Frank…

                        paul53P 1 Reply Last reply
                        0
                        • M maniac

                          @paul53
                          Und nochmal eine Verständnisfrage.

                          Diese Funktion wählt alle Datenpunkte aus die "true" sind?
                          Könnte man dann auch überall nutzen? Bei Licht z.B. alle eingeschalteten Lampen wählen? (Sofern die ID der Lampen "gleich" ist)

                          48c433b7-c3fb-46b6-8884-b135e01594f4-grafik.png

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

                          @maniac sagte: Diese Funktion wählt alle Datenpunkte aus die "true" sind?

                          Nein, es werden alle Datenpunkte ausgewählt, deren ID "unify.0.defaults.clients." und ".is_online" enthält. "falls Wert von id" filtert die Datenpunkte, deren Wert true ist.

                          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

                          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

                          424

                          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