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. [gelöst] JSON Wert extrahieren

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    986

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

[gelöst] JSON Wert extrahieren

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 576 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
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        767

        Online

        32.5k

        Benutzer

        81.6k

        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