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. Entwicklung
  4. Auslesen von Objektstruktur über Javascript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Auslesen von Objektstruktur über Javascript

Geplant Angeheftet Gesperrt Verschoben Entwicklung
javaskript
13 Beiträge 2 Kommentatoren 1.6k Aufrufe 3 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.
  • G gammler2003

    Hallo zusammen,

    ich würde gerne die Namen der Ordner in der Struktur meiner Objekte in ioBroker über Javascript auslesen.

    Bildschirmfoto 2020-05-04 um 17.16.35.png

    Ganz konkret möchte ich die Namen aller Ordner (u.a. den schwarz markierten) auslesen, die unter dem übergeordneten Ordner "devices" hängen. Also nicht die Werte von einzelnen Datenpunkten, sondern tatsächlich die Namen der übergeordneten Ordner.

    Hat jemand eine Idee, wie/ob das funktionieren kann?

    Vielen Dank an euch vorab.

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #2

    @gammler2003 sagte:

    die Namen der übergeordneten Ordner.

    Eine Möglichkeit:

    id = id.split('.'); // Datenpunkt-ID
    log(id[id.length - 2]);
    

    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
    • G Offline
      G Offline
      gammler2003
      schrieb am zuletzt editiert von
      #3

      @paul53 said in Auslesen von Objektstruktur über Javascript:

      id = id.split('.'); // Datenpunkt-ID
      log(id[id.length - 2]);

      Hallo & vielen Dank für die schnelle Rückmeldung.
      Leider hilft mir das nur bedingt. Mein Ausgangspunkt soll der Ordner "tr-064.0.devices" sein.

      Die konkrete Anforderung => Gebe mir die Namen aller Ordner, die unter "tr-064.0.devices" liegen.

      paul53P 1 Antwort Letzte Antwort
      0
      • G gammler2003

        @paul53 said in Auslesen von Objektstruktur über Javascript:

        id = id.split('.'); // Datenpunkt-ID
        log(id[id.length - 2]);

        Hallo & vielen Dank für die schnelle Rückmeldung.
        Leider hilft mir das nur bedingt. Mein Ausgangspunkt soll der Ordner "tr-064.0.devices" sein.

        Die konkrete Anforderung => Gebe mir die Namen aller Ordner, die unter "tr-064.0.devices" liegen.

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #4

        @gammler2003 sagte:

        Namen aller Ordner, die unter "tr-064.0.devices" liegen

        var devices = [];
        $('tr-064.0.devices.*').each(function(id, i) {
            let dev = id.split('.')[3];
            if(devices.indexOf(dev) == -1) devices.push(dev);
        });
        // Array devices enthält jedes Device einmal
        

        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
        • G Offline
          G Offline
          gammler2003
          schrieb am zuletzt editiert von
          #5

          Genau das habe ich gesucht - herzlichen Dank!

          1 Antwort Letzte Antwort
          0
          • G Offline
            G Offline
            gammler2003
            schrieb am zuletzt editiert von
            #6

            Jetzt hat sich doch noch einmal eine Frage ergeben, auf die ich leider bisher keine passende Antwort gefunden habe.

            Besteht die Möglichkeit, dass ich einen Trigger auf den Knoten "devices" setze? Dieser soll immer dann anspringen, wenn in irgendeinem beliebigen Datenpunkt in der Struktur unter "devices" eine Änderung stattgefunden hat.

            Vielen Dank nochmals für euren Support!

            paul53P 1 Antwort Letzte Antwort
            0
            • G gammler2003

              Jetzt hat sich doch noch einmal eine Frage ergeben, auf die ich leider bisher keine passende Antwort gefunden habe.

              Besteht die Möglichkeit, dass ich einen Trigger auf den Knoten "devices" setze? Dieser soll immer dann anspringen, wenn in irgendeinem beliebigen Datenpunkt in der Struktur unter "devices" eine Änderung stattgefunden hat.

              Vielen Dank nochmals für euren Support!

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #7

              @gammler2003 sagte:

              Besteht die Möglichkeit, dass ich einen Trigger auf den Knoten "devices" setze?

              Ja, $Selector.on()

              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

              G 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @gammler2003 sagte:

                Besteht die Möglichkeit, dass ich einen Trigger auf den Knoten "devices" setze?

                Ja, $Selector.on()

                G Offline
                G Offline
                gammler2003
                schrieb am zuletzt editiert von
                #8

                @paul53 said in Auslesen von Objektstruktur über Javascript:

                $Selector.on()

                Vielen Dank - liefert mir aber, so wie ich es jetzt eingebaut habe, einen Fehler. Meine erste Zeile sieht wie folgt aus:

                $Selector.on({id: 'tr-064.0.devices.*', change: "ne"}, function (obj) {
                
                paul53P 1 Antwort Letzte Antwort
                0
                • G gammler2003

                  @paul53 said in Auslesen von Objektstruktur über Javascript:

                  $Selector.on()

                  Vielen Dank - liefert mir aber, so wie ich es jetzt eingebaut habe, einen Fehler. Meine erste Zeile sieht wie folgt aus:

                  $Selector.on({id: 'tr-064.0.devices.*', change: "ne"}, function (obj) {
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von paul53
                  #9

                  @gammler2003 sagte:

                  Meine erste Zeile sieht wie folgt aus:

                  const ids = $('tr-064.0.devices.*'); // das ist der Selector
                  var devices = [];
                  
                  ids.on(function() { // triggert bei Wertänderung aller Datenpunkte des Selectors
                      ids.each(function(id, i) {
                          let dev = id.split('.')[3];
                          if(devices.indexOf(dev) == -1) devices.push(dev);
                      });
                      // Array devices enthält jedes Device einmal
                  });
                  

                  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
                  • G Offline
                    G Offline
                    gammler2003
                    schrieb am zuletzt editiert von
                    #10

                    Super, danke! Trigger funktioniert und Array schreiben auch.
                    Jetzt will ich mit dem Array weiterarbeiten - genauer gesagt will ich in einem zweiten Array die Zustände der Geräte abfragen (true/false) und davon abhängig einen weiteren Datenpunkt setzen.

                    Jedoch habe ich das Problem, dass der Trigger

                    ids.on(function() { // triggert bei Wertänderung aller Datenpunkte des Selectors
                        ids.each(function(id, i) {
                            let dev = id.split('.')[3];
                            if(devices.indexOf(dev) == -1) devices.push(dev);
                        });
                        // Array devices enthält jedes Device einmal
                    });
                    
                    

                    nicht nur einmal triggert bei Wertänderung, sondern die Anzahl der Datenpunkte (in meinem Fall 4x).

                    Kurz gesagt: Wenn sich einer der Datenpunkte des Selektors ändert, soll einmalig getriggert werden.

                    Gibt es soetwas?

                    Vielen Dank.

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • G gammler2003

                      Super, danke! Trigger funktioniert und Array schreiben auch.
                      Jetzt will ich mit dem Array weiterarbeiten - genauer gesagt will ich in einem zweiten Array die Zustände der Geräte abfragen (true/false) und davon abhängig einen weiteren Datenpunkt setzen.

                      Jedoch habe ich das Problem, dass der Trigger

                      ids.on(function() { // triggert bei Wertänderung aller Datenpunkte des Selectors
                          ids.each(function(id, i) {
                              let dev = id.split('.')[3];
                              if(devices.indexOf(dev) == -1) devices.push(dev);
                          });
                          // Array devices enthält jedes Device einmal
                      });
                      
                      

                      nicht nur einmal triggert bei Wertänderung, sondern die Anzahl der Datenpunkte (in meinem Fall 4x).

                      Kurz gesagt: Wenn sich einer der Datenpunkte des Selektors ändert, soll einmalig getriggert werden.

                      Gibt es soetwas?

                      Vielen Dank.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #11

                      @gammler2003 sagte:

                      Problem, dass der Tigger nicht nur einmal triggert bei Wertänderung, sondern die Anzahl der Datenpunkte

                      ?? Der Trigger reagiert jedesmal, wenn sich der Wert eines der Datenpunkte des Selectors ändert. In der each-Schleife werden dann alle Datenpunkte abgeklappert.
                      Was möchtest Du erreichen ?

                      @gammler2003 sagte in Auslesen von Objektstruktur über Javascript:

                      Zustände der Geräte abfragen (true/false)

                      Nur Datenpunkte haben Zustände.

                      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
                      • G Offline
                        G Offline
                        gammler2003
                        schrieb am zuletzt editiert von
                        #12

                        Ich möchte alle Datenpunkte unter einem Knoten überwachen. Sobald sich der Wert von einem dieser Datenpunkte ändert, soll eine Aktion (z.B. Konsolenausgabe) getriggert werden.

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • G gammler2003

                          Ich möchte alle Datenpunkte unter einem Knoten überwachen. Sobald sich der Wert von einem dieser Datenpunkte ändert, soll eine Aktion (z.B. Konsolenausgabe) getriggert werden.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #13

                          @gammler2003 sagte:

                          Sobald sich der Wert von einem dieser Datenpunkte ändert

                          Genau dann wird getriggert: Wenn sich Wert eines der im Selector erfassen Datenpunkte ändert . Wie möchtest Du es auswerten ? Was soll in der Ausgabe erscheinen ?

                          const ids = $('tr-064.0.devices.*'); // das ist der Selector
                          // var devices = [];
                           
                          ids.on(function(dp) { // triggert bei Wertänderung eines der Datenpunkte des Selectors
                              log('Änderung von: ' + dp.common.name + ', neuer Wert: ' + dp.state.val);
                          /*    ids.each(function(id, i) {
                                  let dev = id.split('.')[3];
                                  if(devices.indexOf(dev) == -1) devices.push(dev);
                              });
                          */    // Array devices enthält jedes Device einmal
                          });
                          

                          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
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          915

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          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