Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script den Objektstamm durchsuchen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script den Objektstamm durchsuchen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Longbow
      Longbow last edited by

      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 Will paul53 2 Replies Last reply Reply Quote 0
      • Holger Will
        Holger Will @Longbow last edited by

        @longbow was heißt denn nie geklappt?

        Longbow 1 Reply Last reply Reply Quote 0
        • Longbow
          Longbow @Holger Will last edited by

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

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Longbow last edited by paul53

            @longbow sagte: Objektbaum durch suchen

            Dafür gibt es den $Selector.

            Longbow 1 Reply Last reply Reply Quote 0
            • Longbow
              Longbow @paul53 last edited by

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

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Longbow last edited by paul53

                @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
                
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                825
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                3
                6
                125
                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