Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. [gelöst] JSON Wert extrahieren

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    165

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    186

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    882

[gelöst] JSON Wert extrahieren

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 623 Aufrufe
  • Ä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.
  • S Offline
    S Offline
    Stuti
    schrieb am zuletzt editiert von
    #1

    Hallo,

    leider hatte ich in FB keinen Erfolg, deswegen die Frage noch einmal hier:

    Ich versuche Min, Max und Mittelwerte aus der SQL Datenbank zu bekommen.

        sendTo('sql.0', 'query', 'select avg(val) from ioBroker.ts_number where id = 21 and ts/1000 >= Unix_TIMESTAMP(CURDATE())', function (avgval) {
        if (avgval.error) {
            console.error(avgval.error);
        } else {
            // show result
             log('Rows: ' + JSON.stringify(avgval.result));
             var test = JSON.stringify(avgval.result).avg(val);
             log(test);
        }
        })
    
    

    Ergibt:

    16:29:43.270	info	javascript.0 script.js.Datenbankabfragen.Tagesmittelwert: Rows: [{"avg(val)":-2.0713963963963966}]
    16:29:43.270	error	javascript.0 ReferenceError: val is not defined at Object.cb (script.js.Datenbankabfragen.Tagesmittelwert:7:55) at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3386:71) at Socket. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30) at Socket.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:133:20) at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:278:10) at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12) at Manager. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) at Manager.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:133:20) at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8) at Decoder. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15)</anonymous></anonymous></anonymous>
    

    Also prinzipiell funktionert die Rückgabe ja, aber ich schaffe es nicht den Wert raus zu bekommen.

    log(avgval.result[1].avg(val)) gibt auch immer die Meldung, das "val" nicht definiert ist.

    Kann mir jemand helfen?

    NUC i5 mit Proxmox - KVM für ioBroker
    Rest in Docker. z.B. KNXD, Pi-Hole, MySQL, Grafana, PostgreSQL, Wiki.js, Prometheus, Loki.

    KNX mit GIRA Homeserver, aber auch Shelly´s und Zigbee

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      Vielleicht liege ich völlig falsch, aber was soll im stringify der letzte ".avg(val)"? Das kannst du eigentlich nicht einfach anhängen.

      Also versuch mal so:

      sendTo('sql.0', 'query', 'select avg(val) from ioBroker.ts_number where id = 21 and ts/1000 >= Unix_TIMESTAMP(CURDATE())', function (avgval) {
          if (avgval.error) {
              console.error(avgval.error);
          } else {
              // show result
               log('Rows: ' + JSON.stringify(avgval.result));
               var test = JSON.stringify(avgval.result[0].avg(val));
               log(test);
          }
          })
      
      

      Vielleicht sind auch die runden Klammern im Namen ein Problem, dann probier mal

      var test = JSON.stringify(avgval.result[0].["avg(val)"]);
      

      Gruß

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Stuti
        schrieb am zuletzt editiert von
        #3

        Hallo,

        ich hatte mich irgendwann gewundert warum es in eckigen Klammern zurückgegeben wurde, also: [{"avg(val)":-2.0713963963963966}]

        Demnach ist das dann wohl ein Array…

        Es funktioniert: avgval.result[0]["avg(val)"]

        bzw am Ende: setState('Datenbank.TagesTempMittel', (avgval.result[0]["avg(val)"]).toFixed(2));

        Ob man JSON.stringify davor schreibt oder es lässt macht soweit ich gesehen hab keinen Unterschied.

        Danke für die Hilfe. Ich markier das hier als gelöst.

        NUC i5 mit Proxmox - KVM für ioBroker
        Rest in Docker. z.B. KNXD, Pi-Hole, MySQL, Grafana, PostgreSQL, Wiki.js, Prometheus, Loki.

        KNX mit GIRA Homeserver, aber auch Shelly´s und Zigbee

        1 Antwort Letzte Antwort
        0

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        246

        Online

        32.8k

        Benutzer

        82.7k

        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