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. JavaScript
  5. Script den Objektstamm durchsuchen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Script den Objektstamm durchsuchen

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 3 Kommentatoren 461 Aufrufe 2 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.
  • LongbowL Offline
    LongbowL Offline
    Longbow
    schrieb am zuletzt editiert von
    #1

    Hallo

    ich habe mal versucht, was zu programmieren. Wollte der JS den Objektbaum durch suchen, wenn man ein DP mit einer bestimmten Bezeichnung findet, das dann dieser Wert Addiert wird.

    Leider hat es nie geklappt, dran liegt das ? Hier mein Beispiel.

    const suchPfad = 'shelly.0.';
    const suchEndung = '.Power';
    const zielDatenpunkt = '0_userdata.0.Shelly.GesamtPower';
    
    // Ziel-DP erstellen, wenn nicht vorhanden
    if (!existsObject(zielDatenpunkt)) {
        createState(zielDatenpunkt, 0, {
            name: 'Summierter Power-Wert aller Shellys',
            type: 'number',
            read: true,
            write: true
        });
    }
    
    // Array für passende IDs
    let powerIDs = [];
    
    // Funktion: Alle State-IDs durchgehen und passende merken
    function findePowerDatenpunkte() {
        powerIDs = [];
    
        getStates().forEach(id => {
            if (id.startsWith(suchPfad) && id.endsWith(suchEndung)) {
                powerIDs.push(id);
            }
        });
    }
    
    // Funktion: Summe berechnen
    function berechneSumme() {
        let summe = 0;
        powerIDs.forEach(id => {
            const val = parseFloat(getState(id).val) || 0;
            summe += val;
        });
        setState(zielDatenpunkt, summe);
    }
    
    // Funktion: Listener setzen
    function setzeListener() {
        powerIDs.forEach(id => {
            on({ id: id, change: 'ne' }, berechneSumme);
        });
    }
    
    // Hauptablauf
    findePowerDatenpunkte();
    berechneSumme();
    setzeListener();
    
    
    Holger WillH paul53P 2 Antworten Letzte Antwort
    0
    • LongbowL Longbow

      Hallo

      ich habe mal versucht, was zu programmieren. Wollte der JS den Objektbaum durch suchen, wenn man ein DP mit einer bestimmten Bezeichnung findet, das dann dieser Wert Addiert wird.

      Leider hat es nie geklappt, dran liegt das ? Hier mein Beispiel.

      const suchPfad = 'shelly.0.';
      const suchEndung = '.Power';
      const zielDatenpunkt = '0_userdata.0.Shelly.GesamtPower';
      
      // Ziel-DP erstellen, wenn nicht vorhanden
      if (!existsObject(zielDatenpunkt)) {
          createState(zielDatenpunkt, 0, {
              name: 'Summierter Power-Wert aller Shellys',
              type: 'number',
              read: true,
              write: true
          });
      }
      
      // Array für passende IDs
      let powerIDs = [];
      
      // Funktion: Alle State-IDs durchgehen und passende merken
      function findePowerDatenpunkte() {
          powerIDs = [];
      
          getStates().forEach(id => {
              if (id.startsWith(suchPfad) && id.endsWith(suchEndung)) {
                  powerIDs.push(id);
              }
          });
      }
      
      // Funktion: Summe berechnen
      function berechneSumme() {
          let summe = 0;
          powerIDs.forEach(id => {
              const val = parseFloat(getState(id).val) || 0;
              summe += val;
          });
          setState(zielDatenpunkt, summe);
      }
      
      // Funktion: Listener setzen
      function setzeListener() {
          powerIDs.forEach(id => {
              on({ id: id, change: 'ne' }, berechneSumme);
          });
      }
      
      // Hauptablauf
      findePowerDatenpunkte();
      berechneSumme();
      setzeListener();
      
      
      Holger WillH Offline
      Holger WillH Offline
      Holger Will
      schrieb am zuletzt editiert von
      #2

      @longbow was heißt denn nie geklappt?

      LongbowL 1 Antwort Letzte Antwort
      0
      • Holger WillH Holger Will

        @longbow was heißt denn nie geklappt?

        LongbowL Offline
        LongbowL Offline
        Longbow
        schrieb am zuletzt editiert von
        #3

        @holger-will Es wurde keine Werte gefunden... und dann zusammen gerechnet

        1 Antwort Letzte Antwort
        0
        • LongbowL Longbow

          Hallo

          ich habe mal versucht, was zu programmieren. Wollte der JS den Objektbaum durch suchen, wenn man ein DP mit einer bestimmten Bezeichnung findet, das dann dieser Wert Addiert wird.

          Leider hat es nie geklappt, dran liegt das ? Hier mein Beispiel.

          const suchPfad = 'shelly.0.';
          const suchEndung = '.Power';
          const zielDatenpunkt = '0_userdata.0.Shelly.GesamtPower';
          
          // Ziel-DP erstellen, wenn nicht vorhanden
          if (!existsObject(zielDatenpunkt)) {
              createState(zielDatenpunkt, 0, {
                  name: 'Summierter Power-Wert aller Shellys',
                  type: 'number',
                  read: true,
                  write: true
              });
          }
          
          // Array für passende IDs
          let powerIDs = [];
          
          // Funktion: Alle State-IDs durchgehen und passende merken
          function findePowerDatenpunkte() {
              powerIDs = [];
          
              getStates().forEach(id => {
                  if (id.startsWith(suchPfad) && id.endsWith(suchEndung)) {
                      powerIDs.push(id);
                  }
              });
          }
          
          // Funktion: Summe berechnen
          function berechneSumme() {
              let summe = 0;
              powerIDs.forEach(id => {
                  const val = parseFloat(getState(id).val) || 0;
                  summe += val;
              });
              setState(zielDatenpunkt, summe);
          }
          
          // Funktion: Listener setzen
          function setzeListener() {
              powerIDs.forEach(id => {
                  on({ id: id, change: 'ne' }, berechneSumme);
              });
          }
          
          // Hauptablauf
          findePowerDatenpunkte();
          berechneSumme();
          setzeListener();
          
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @longbow sagte: Objektbaum durch suchen

          Dafür gibt es den $Selector.

          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

          LongbowL 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @longbow sagte: Objektbaum durch suchen

            Dafür gibt es den $Selector.

            LongbowL Offline
            LongbowL Offline
            Longbow
            schrieb am zuletzt editiert von
            #5

            @paul53 Danke für den Hinweis, da ich Neuling bin, wie müsste es aussehen?

            paul53P 1 Antwort Letzte Antwort
            0
            • LongbowL Longbow

              @paul53 Danke für den Hinweis, da ich Neuling bin, wie müsste es aussehen?

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

              @longbow sagte: wie müsste es aussehen?

              const ids = $('shelly.0.*.Power').toArray();
              const zielDatenpunkt = '0_userdata.0.Shelly.GesamtPower';
               
              // Funktion: Summe berechnen
              function berechneSumme() {
                  let summe = 0;
                  ids.forEach((id) => {
                      summe += parseFloat(getState(id).val) || 0;
                  });
                  setState(zielDatenpunkt, summe, true);
              }
              
              on(ids, berechneSumme);
              berechneSumme(); // Scriptstart
              

              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

              532

              Online

              32.6k

              Benutzer

              82.1k

              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