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. [Gelöst] Einzelwert aus Array-Objekt?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Gelöst] Einzelwert aus Array-Objekt?

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 239 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.
  • frank2604F Offline
    frank2604F Offline
    frank2604
    schrieb am zuletzt editiert von frank2604
    #1

    Hallo,

    ich frage einen einzelnen Wert aus der InfluxDB ab (z.B. Stromverbrauch der Wärmepumpe der letzten 24h) und möchte diesen in einen Datenpunkt schreiben.

    Das Ergebnis der Query sieht so aus:

    {"result":[[{"result":"_result","table":0,"_start":"2022-01-28T09:00:12.676771291Z","_stop":"2022-01-29T09:00:12.676771291Z","_measurement":"Strom.Heizung.Energie_in_der_letzten_Stunde","_value":14.683000000000117,"_time":"2022-01-29T09:00:12.676771291Z","ts":1643446812676}]],"ts":1643446812684,"error":null}
    

    Ich benötige den _value, den ich mir so aus dem Objekt hole:

    value = query.result[0].map(elm => (elm._value));
    

    Wenn ich jetzt den Inhalt der Variablen value in einen DP schreibe, steht das Ergebnis noch in eckigen Klammern [14.683000000000117].

    Es fehlt wohl noch eine Kleinigkeit, um den reinen Wert da herauszuholen. Könnt Ihr mir helfen?

    Hier das vollständige Skript:

    refresh();
    
    function refresh() {
        let targetDP = '0_userdata.0.Strom.Heizung.Heizung_Energie_gestern';
        let value = 0;
    
        sendTo('influxdb.0', 'query',
                'from(bucket: "iobroker") \
                    |> range(start: -24h) \
                    |> filter(fn: (r) => r["_measurement"] == "Strom.Heizung.Energie_in_der_letzten_Stunde") \
                    |> drop(columns: ["_field", "ack", "from", "q"]) \
                    |> aggregateWindow(every: 1w, fn: sum, createEmpty: false) \
                    |> limit(n:1) \
                    ',
            function (query) {
                if (query.error) {
                    console.error(query.error);
                } else {
                    // Ergebnis in Datenpunkt
                    console.log('Row: ' + JSON.stringify(query));
                    value = query.result[0].map(elm => (elm._value));
                    setState(targetDP, value, true);
                    console.log("value: " + value);
                }
        })
    };
    

    Danke.

    Grüße Frank

    Intel NUC8 i3, Proxmox, VM Ubuntu, ioBroker
    Philips HUE, Homematic CCU3, Zigbee, Yamaha MusicCast, Vorwerk ...

    mickymM 1 Antwort Letzte Antwort
    0
    • frank2604F frank2604

      Hallo,

      ich frage einen einzelnen Wert aus der InfluxDB ab (z.B. Stromverbrauch der Wärmepumpe der letzten 24h) und möchte diesen in einen Datenpunkt schreiben.

      Das Ergebnis der Query sieht so aus:

      {"result":[[{"result":"_result","table":0,"_start":"2022-01-28T09:00:12.676771291Z","_stop":"2022-01-29T09:00:12.676771291Z","_measurement":"Strom.Heizung.Energie_in_der_letzten_Stunde","_value":14.683000000000117,"_time":"2022-01-29T09:00:12.676771291Z","ts":1643446812676}]],"ts":1643446812684,"error":null}
      

      Ich benötige den _value, den ich mir so aus dem Objekt hole:

      value = query.result[0].map(elm => (elm._value));
      

      Wenn ich jetzt den Inhalt der Variablen value in einen DP schreibe, steht das Ergebnis noch in eckigen Klammern [14.683000000000117].

      Es fehlt wohl noch eine Kleinigkeit, um den reinen Wert da herauszuholen. Könnt Ihr mir helfen?

      Hier das vollständige Skript:

      refresh();
      
      function refresh() {
          let targetDP = '0_userdata.0.Strom.Heizung.Heizung_Energie_gestern';
          let value = 0;
      
          sendTo('influxdb.0', 'query',
                  'from(bucket: "iobroker") \
                      |> range(start: -24h) \
                      |> filter(fn: (r) => r["_measurement"] == "Strom.Heizung.Energie_in_der_letzten_Stunde") \
                      |> drop(columns: ["_field", "ack", "from", "q"]) \
                      |> aggregateWindow(every: 1w, fn: sum, createEmpty: false) \
                      |> limit(n:1) \
                      ',
              function (query) {
                  if (query.error) {
                      console.error(query.error);
                  } else {
                      // Ergebnis in Datenpunkt
                      console.log('Row: ' + JSON.stringify(query));
                      value = query.result[0].map(elm => (elm._value));
                      setState(targetDP, value, true);
                      console.log("value: " + value);
                  }
          })
      };
      

      Danke.

      Grüße Frank

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #2

      @frank2604 sagte in Einzelwert aus Array-Objekt?:

      {"result":[[{"result":"_result","table":0,"_start":"2022-01-28T09:00:12.676771291Z","_stop":"2022-01-29T09:00:12.676771291Z","_measurement":"Strom.Heizung.Energie_in_der_letzten_Stunde","_value":14.683000000000117,"_time":"2022-01-29T09:00:12.676771291Z","ts":1643446812676}]],"ts":1643446812684,"error":null}

      Der Pfad müsste meines Erachtens so lauten:

      result[0][0]._value
      

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      frank2604F 1 Antwort Letzte Antwort
      1
      • mickymM mickym

        @frank2604 sagte in Einzelwert aus Array-Objekt?:

        {"result":[[{"result":"_result","table":0,"_start":"2022-01-28T09:00:12.676771291Z","_stop":"2022-01-29T09:00:12.676771291Z","_measurement":"Strom.Heizung.Energie_in_der_letzten_Stunde","_value":14.683000000000117,"_time":"2022-01-29T09:00:12.676771291Z","ts":1643446812676}]],"ts":1643446812684,"error":null}

        Der Pfad müsste meines Erachtens so lauten:

        result[0][0]._value
        
        frank2604F Offline
        frank2604F Offline
        frank2604
        schrieb am zuletzt editiert von
        #3

        @mickym

        Ja, funktioniert. Vielen Dank!

        refresh();
        
        function refresh() {
            let targetDP = '0_userdata.0.Strom.Heizung.Heizung_Energie_gestern';
            let value = 0;
        
            sendTo('influxdb.0', 'query',
                    'from(bucket: "iobroker") \
                        |> range(start: -24h) \
                        |> filter(fn: (r) => r["_measurement"] == "Strom.Heizung.Energie_in_der_letzten_Stunde") \
                        |> drop(columns: ["_field", "ack", "from", "q"]) \
                        |> aggregateWindow(every: 1w, fn: sum, createEmpty: false) \
                        |> limit(n:1) \
                        ',
                function (query) {
                    if (query.error) {
                        console.error(query.error);
                    } else {
                        // Ergebnis in Datenpunkt
                        console.log('Row: ' + JSON.stringify(query));
                        value = query.result[0][0]._value
                        console.log("value: " + value);
                        setState(targetDP, value, true);
        
                    }
            })
        };
        

        Intel NUC8 i3, Proxmox, VM Ubuntu, ioBroker
        Philips HUE, Homematic CCU3, Zigbee, Yamaha MusicCast, Vorwerk ...

        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

        766

        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