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. Skripten / Logik
  4. Schleife über alle Datenpunkte

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Schleife über alle Datenpunkte

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
13 Beiträge 5 Kommentatoren 2.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.
  • a200A Offline
    a200A Offline
    a200
    schrieb am zuletzt editiert von
    #1

    Hallo,

    gibt es eine Möglichkeit eine Schleife über alle Datenpunkte zu erzeugen? So könnte ich eine Liste inkl. Werte erstellen, DP löschen usw.

    Danke für eure Tipps.

    a200.

    IoBroker auf QNAP TS-451, Raspi und NUC

    1 Antwort Letzte Antwort
    0
    • blauholstenB Offline
      blauholstenB Offline
      blauholsten
      Developer
      schrieb am zuletzt editiert von
      #2

      @a200:

      Hallo,

      gibt es eine Möglichkeit eine Schleife über alle Datenpunkte zu erzeugen? So könnte ich eine Liste inkl. Werte erstellen, DP löschen usw.

      Danke für eure Tipps.

      a200. `
      Kannst du das genauer beschreiben?

      Entwickler vom: - Viessman Adapter
      - Alarm Adapter

      1 Antwort Letzte Antwort
      0
      • a200A Offline
        a200A Offline
        a200
        schrieb am zuletzt editiert von
        #3

        ich würde gerne z.B. einen Array mit allen Datenpunkten haben.

        "admin.0.info.updatesList","admin.0.info.updatesNumber","javascript.0","javascript.0.eBus"….

        Damit wäre ich in der Lage per Skript alle Datenpunkte auslesen, ausgeben, manipulieren, löschen...

        Hoffe, dass ich mich etwas klarer ausgedrückt habe?! :roll:

        a200

        IoBroker auf QNAP TS-451, Raspi und NUC

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          Für ein Array mit den statischen Objekten (ohne state) aller Datenpunkte:

          var objects = [];
          
          $('state').each(function (id, i) {
              var obj = getObject(id);
              if (obj) objects[i] = obj;
          });
          

          Für ein Array inklusive der Zustände:

          var objects = [];
          
          $('state').each(function (id, i) {
              var obj = getObject(id);
              if (obj) {
                  obj.state = getState(id);
                  objects[i] = obj;
              }
          });
          

          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

          R 1 Antwort Letzte Antwort
          0
          • a200A Offline
            a200A Offline
            a200
            schrieb am zuletzt editiert von
            #5

            @paul53:

            Für ein Array mit den statischen Objekten (ohne state) aller Datenpunkte:

            ! `var objects = new Array; ! $('state').each(function (id, i) { var obj = getObject(id); if (obj) objects[i] = obj; });` Für ein Array inklusive der Zustände: `~~[code]~~var objects = new Array; ! $('state').each(function (id, i) { var obj = getObject(id); if (obj) { obj.state = getState(id); objects[i] = obj; } });` ! Super. Vielen Dank. Ich werde es am Wochenende testen. ! LG, ! a200.[/i][/code][/i] `

            IoBroker auf QNAP TS-451, Raspi und NUC

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              Für ein Array mit den statischen Objekten (ohne state) aller Datenpunkte:

              var objects = [];
              
              $('state').each(function (id, i) {
                  var obj = getObject(id);
                  if (obj) objects[i] = obj;
              });
              

              Für ein Array inklusive der Zustände:

              var objects = [];
              
              $('state').each(function (id, i) {
                  var obj = getObject(id);
                  if (obj) {
                      obj.state = getState(id);
                      objects[i] = obj;
                  }
              });
              
              R Offline
              R Offline
              radioman
              schrieb am zuletzt editiert von
              #6

              Hallo paul53, leider hat ja a200 nie geschrieben, wie es bei ihm funktioniert hat. Da ich vor einem nahezu identischen Problem stehe, nehme ich den über die Forum-Suchfunktion gefundenen Faden mal wieder auf.

              Leider komme ich mit Deinem Script nicht ganz zurecht, bzw. bekommen nur Fehlermeldungen. Es scheint mir aber sehr passend für mein Problem zu sein, ein Array zu bauen und damit dann ein JSON-Tabellen-String zu erstellen, das ich dann noch in einen Datenpunkt schreiben muss, um es dann in VIS als Tabelle anzeigen zu können.

              Ich fülle derzeit minütlich mit dem Parser eine ganze Latte Datenpunkte (Abfahrtszeiten des ÖPNV) und möchte diese dann am Ende in VIS als Tabelle darstellen.

              Scrrenshot

              Derzeit habe ich unter parser.0 nur Datenpunkte, die mit "DVB_ZS" beginnen. In Zukunft kommen da aber sicherlich auch noch andere hinzu. Ich brauche nun nur die "DVB_ZS" Datenpunkte aus dem Objekt parser.0.

              Der letzte String im Namen ["1a", "1b" ... ]

              • gibt mit der Zahl an, die wievielt-nächste Verbindung das ist (später in der VIS-Tabelle die Zeile).
              • gibt mit dem Buchstaben die Liniennummer, Abfahrtszeit, Bahnsteig, Endhaltestelle etc. an (später in der VIS-Tabelle die Spalte)

              an.

              Ich scheitere schon daran Dein RegEx wirklich zu verstehen und bekomme auch noch nicht mal Dein Script - auf die für mich notwendige Untermenge an Datenpunkten - reduziert.

              Kannst Du mir da bitte weiterhelfen? Vielen Dank.

              paul53P 1 Antwort Letzte Antwort
              0
              • R radioman

                Hallo paul53, leider hat ja a200 nie geschrieben, wie es bei ihm funktioniert hat. Da ich vor einem nahezu identischen Problem stehe, nehme ich den über die Forum-Suchfunktion gefundenen Faden mal wieder auf.

                Leider komme ich mit Deinem Script nicht ganz zurecht, bzw. bekommen nur Fehlermeldungen. Es scheint mir aber sehr passend für mein Problem zu sein, ein Array zu bauen und damit dann ein JSON-Tabellen-String zu erstellen, das ich dann noch in einen Datenpunkt schreiben muss, um es dann in VIS als Tabelle anzeigen zu können.

                Ich fülle derzeit minütlich mit dem Parser eine ganze Latte Datenpunkte (Abfahrtszeiten des ÖPNV) und möchte diese dann am Ende in VIS als Tabelle darstellen.

                Scrrenshot

                Derzeit habe ich unter parser.0 nur Datenpunkte, die mit "DVB_ZS" beginnen. In Zukunft kommen da aber sicherlich auch noch andere hinzu. Ich brauche nun nur die "DVB_ZS" Datenpunkte aus dem Objekt parser.0.

                Der letzte String im Namen ["1a", "1b" ... ]

                • gibt mit der Zahl an, die wievielt-nächste Verbindung das ist (später in der VIS-Tabelle die Zeile).
                • gibt mit dem Buchstaben die Liniennummer, Abfahrtszeit, Bahnsteig, Endhaltestelle etc. an (später in der VIS-Tabelle die Spalte)

                an.

                Ich scheitere schon daran Dein RegEx wirklich zu verstehen und bekomme auch noch nicht mal Dein Script - auf die für mich notwendige Untermenge an Datenpunkten - reduziert.

                Kannst Du mir da bitte weiterhelfen? Vielen Dank.

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

                @radioman sagte:

                bekommen nur Fehlermeldungen.

                Durch die Umstellung des Forums haben sich Fehler eingeschlichen. Habe es eben repariert.

                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

                R 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @radioman sagte:

                  bekommen nur Fehlermeldungen.

                  Durch die Umstellung des Forums haben sich Fehler eingeschlichen. Habe es eben repariert.

                  R Offline
                  R Offline
                  radioman
                  schrieb am zuletzt editiert von radioman
                  #8

                  @paul53

                  Habe es eben repariert.

                  Danke, soweit hatte ich Deinen Code testweise gestern auch schon bei meiner Fehlersuche minimiert. Leider habe ich durch die anderen Adapter (rflink, deconz, Sonos, DasWetter, Javasript) so viele Objekte (scheinbar knapp 5000 - siehe rechts oben im Screenshot), dass ein Script mit nur Deinen Zeilen

                  var objects = [];
                   
                  $('state').each(function (id, i) {
                      var obj = getObject(id);
                      if (obj) {
                          obj.state = getState(id);
                          objects[i] = obj;
                      }
                  });
                  

                  (auf meinem eigentlich potenten Rock64) mindestens 3 Sekunden lang läuft (= iOBroker blockiert) und dabei 3000 Zeilen Warnungen auswirft.

                  Kannst Du mir bitte helfen, dass Dein Script nur eine bestimmte Untermenge an Objekten untersucht/einliest?
                  Ich hatte sowas versucht wie

                  $('parser.0.state').each(function (id, i) {
                  
                  oder noch verrückter:
                  
                  $('state.o.state.DVB_SZ*').each(function (id, i) {
                  

                  aber das tut alles nicht. Aber eventuell geht das ja auch gar nicht?
                  Dann kann ich mir immer noch eine normale for-to-next-Schleife mit hartvercodeten Datenpunktnamen bauen.

                  Danke.

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • R radioman

                    @paul53

                    Habe es eben repariert.

                    Danke, soweit hatte ich Deinen Code testweise gestern auch schon bei meiner Fehlersuche minimiert. Leider habe ich durch die anderen Adapter (rflink, deconz, Sonos, DasWetter, Javasript) so viele Objekte (scheinbar knapp 5000 - siehe rechts oben im Screenshot), dass ein Script mit nur Deinen Zeilen

                    var objects = [];
                     
                    $('state').each(function (id, i) {
                        var obj = getObject(id);
                        if (obj) {
                            obj.state = getState(id);
                            objects[i] = obj;
                        }
                    });
                    

                    (auf meinem eigentlich potenten Rock64) mindestens 3 Sekunden lang läuft (= iOBroker blockiert) und dabei 3000 Zeilen Warnungen auswirft.

                    Kannst Du mir bitte helfen, dass Dein Script nur eine bestimmte Untermenge an Objekten untersucht/einliest?
                    Ich hatte sowas versucht wie

                    $('parser.0.state').each(function (id, i) {
                    
                    oder noch verrückter:
                    
                    $('state.o.state.DVB_SZ*').each(function (id, i) {
                    

                    aber das tut alles nicht. Aber eventuell geht das ja auch gar nicht?
                    Dann kann ich mir immer noch eine normale for-to-next-Schleife mit hartvercodeten Datenpunktnamen bauen.

                    Danke.

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

                    @radioman sagte:

                    aber das tut alles nicht.

                    Die Doku kennst Du?

                    $('parser.0.*').each(function (id, i) {
                    

                    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

                    R 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @radioman sagte:

                      aber das tut alles nicht.

                      Die Doku kennst Du?

                      $('parser.0.*').each(function (id, i) {
                      
                      R Offline
                      R Offline
                      radioman
                      schrieb am zuletzt editiert von
                      #10

                      Nein, den Separator kannte ich in der Tat noch nicht - funzt 1a.
                      Damit komme ich nun weiter - Danke, paul53!

                      R 1 Antwort Letzte Antwort
                      0
                      • R radioman

                        Nein, den Separator kannte ich in der Tat noch nicht - funzt 1a.
                        Damit komme ich nun weiter - Danke, paul53!

                        R Offline
                        R Offline
                        Ralf 8
                        schrieb am zuletzt editiert von
                        #11

                        Das Thema ist zwar schon sehr alt, habe aber keine andere passende Anleitung gefunden und bin erst noch Anfänger.
                        Ich wollte schon fragen, wie ich denn an die Werte der Datenpunkte komme, habe es aber selbst herausgefunden und möchte das für weitere Leser ergänzen:

                        var objects = [];
                        
                        $('0_userdata.0.*').each(function (id, i) {
                            if (getState(id).val != false) {
                                // id ist die Bezeichnung des Datenpunktes und mit getState(id).val bekommt man den Wert
                                log(id + ': ' + getState(id).val);
                            }
                        });
                        

                        Vielleicht kann aber noch jemand erklären, was man mit dem Ausdruck:

                        if (obj) {
                                obj.state = getState(id);
                                objects[i] = obj;
                        

                        weiter oben anfangen kann?

                        Kann man die Auswahl $('datenpunkt.*').each noch weiter eingrenzen?
                        z.B. mit Filter auf Objekte vom Typ state oder Rolle: device, indicator, state machen?

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • R Ralf 8

                          Das Thema ist zwar schon sehr alt, habe aber keine andere passende Anleitung gefunden und bin erst noch Anfänger.
                          Ich wollte schon fragen, wie ich denn an die Werte der Datenpunkte komme, habe es aber selbst herausgefunden und möchte das für weitere Leser ergänzen:

                          var objects = [];
                          
                          $('0_userdata.0.*').each(function (id, i) {
                              if (getState(id).val != false) {
                                  // id ist die Bezeichnung des Datenpunktes und mit getState(id).val bekommt man den Wert
                                  log(id + ': ' + getState(id).val);
                              }
                          });
                          

                          Vielleicht kann aber noch jemand erklären, was man mit dem Ausdruck:

                          if (obj) {
                                  obj.state = getState(id);
                                  objects[i] = obj;
                          

                          weiter oben anfangen kann?

                          Kann man die Auswahl $('datenpunkt.*').each noch weiter eingrenzen?
                          z.B. mit Filter auf Objekte vom Typ state oder Rolle: device, indicator, state machen?

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

                          @ralf-8 sagte: Kann man die Auswahl $('datenpunkt.*').each noch weiter eingrenzen?

                          Ja, siehe Doku.

                          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

                          R 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @ralf-8 sagte: Kann man die Auswahl $('datenpunkt.*').each noch weiter eingrenzen?

                            Ja, siehe Doku.

                            R Offline
                            R Offline
                            Ralf 8
                            schrieb am zuletzt editiert von
                            #13

                            @paul53
                            Mit der Doku tue ich mich noch schwer, daher herzlichen Dank dass Du mir genau die richtige Stelle zum Nachlesen zeigst.

                            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

                            708

                            Online

                            32.6k

                            Benutzer

                            82.2k

                            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