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] Influxdb Abfrage

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[gelöst] Influxdb Abfrage

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 2 Kommentatoren 1.7k 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.
  • SabotiS Offline
    SabotiS Offline
    Saboti
    schrieb am zuletzt editiert von Saboti
    #1

    Hallo zusammen,

    ich würde gerne meine InfluxDB abfragen und einen Wert daraus in ein Objekt in iobroker schreiben.
    Die Daten werden von einem vzlogger vom Volkszähler Projekt in die influxdb geschrieben.

    Ich bekomme auch eine Abfrage auf den letzten Wert hin mit:

    sendTo('influxdb.0', 'query', 'SELECT * FROM vzlogger.autogen."xxxxxxxx" LIMIT 1', function (result) {
        if (result.error) {
            console.error(result.error);
        } else {
            // show result
             console.log(JSON.stringify(result.result[0]));
             //setState('javascript.0.Eigene_Datenpunkte.volkszaehler', JSON.stringify(result.result[0]));
        }
    });
    

    Die Ausgabe ist dann der komplette String: [{"uuid":"xxxxxxxxxxxxxx","value":yyyyyyyyyy,"ts":xxxxxxx}]

    Ich hab nun leider keine Ahnung wie ich nur die value yyyyyyyyy daraus bekomme.

    Vielen Dank schon einmal.
    Gruß Saboti

    paul53P 1 Antwort Letzte Antwort
    0
    • SabotiS Saboti

      Hallo zusammen,

      ich würde gerne meine InfluxDB abfragen und einen Wert daraus in ein Objekt in iobroker schreiben.
      Die Daten werden von einem vzlogger vom Volkszähler Projekt in die influxdb geschrieben.

      Ich bekomme auch eine Abfrage auf den letzten Wert hin mit:

      sendTo('influxdb.0', 'query', 'SELECT * FROM vzlogger.autogen."xxxxxxxx" LIMIT 1', function (result) {
          if (result.error) {
              console.error(result.error);
          } else {
              // show result
               console.log(JSON.stringify(result.result[0]));
               //setState('javascript.0.Eigene_Datenpunkte.volkszaehler', JSON.stringify(result.result[0]));
          }
      });
      

      Die Ausgabe ist dann der komplette String: [{"uuid":"xxxxxxxxxxxxxx","value":yyyyyyyyyy,"ts":xxxxxxx}]

      Ich hab nun leider keine Ahnung wie ich nur die value yyyyyyyyy daraus bekomme.

      Vielen Dank schon einmal.
      Gruß Saboti

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

      @Saboti sagte:

      Die Ausgabe ist dann der komplette String: [{"uuid":"xxxxxxxxxxxxxx","value":yyyyyyyyyy,"ts":xxxxxxx}]

      result.result[0] liefert immer noch ein Array ? Dann

      log(result.result[0][0].value);
      

      Wahrscheinlicher aber so

      log(result.result[0].value);
      

      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

      SabotiS 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Saboti sagte:

        Die Ausgabe ist dann der komplette String: [{"uuid":"xxxxxxxxxxxxxx","value":yyyyyyyyyy,"ts":xxxxxxx}]

        result.result[0] liefert immer noch ein Array ? Dann

        log(result.result[0][0].value);
        

        Wahrscheinlicher aber so

        log(result.result[0].value);
        
        SabotiS Offline
        SabotiS Offline
        Saboti
        schrieb am zuletzt editiert von
        #3

        @paul53 sagte in Influxdb Abfrage:

        [0].value

        Danke Dir, mit dem ersten hat es funktioniert und ich bekomme nur den Wert in das Objekt :-)

        Gruß Saboti

        1 Antwort Letzte Antwort
        0
        • SabotiS Offline
          SabotiS Offline
          Saboti
          schrieb am zuletzt editiert von
          #4

          Für interessierte mit der gleichen Problemstellung. Hier mein finales Script.
          Es frägt eine Influxdb ab und holt den aktuellsten Wert daraus. Diesen muss ich durch 1000 teilen um auf kWh zu kommen.

          createState('Eigene_Datenpunkte.volkszaehler.zaehlerstand', 0,{
              name: 'Zaehlerstand',
              desc: 'Aktueller Zaehlerstand',
              type: 'number',
              role: 'value',
              unit: 'kWh'
          });
          
          Gruß Saboti
          schedule("*/5 * * * * *", function () {
              sendTo('influxdb.0', 'query', 'SELECT * FROM <datenbank_name>.autogen."<measurement_name>" ORDER BY DESC LIMIT 1', function (result) {
              if (result.error) {
                  console.error(result.error);
              } else {
                  //console.log(JSON.stringify(result.result[0][0].value / 1000));
                  //setState('javascript.0.Eigene_Datenpunkte.volkszaehler.zaehlerstand', JSON.stringify(result.result[0][0].value / 1000));
                  var value = (JSON.stringify(result.result[0][0].value / 1000));
                  var zaehlerstand = parseFloat(value);
                  //console.log(zaehlerstand);
                  setState('javascript.0.Eigene_Datenpunkte.volkszaehler.zaehlerstand', zaehlerstand);     
                  }
              });
          });
          

          Das ganze wird dann über Sourceanalytix weiterverarbeitet.

          Gruß Saboti

          paul53P 1 Antwort Letzte Antwort
          0
          • SabotiS Saboti

            Für interessierte mit der gleichen Problemstellung. Hier mein finales Script.
            Es frägt eine Influxdb ab und holt den aktuellsten Wert daraus. Diesen muss ich durch 1000 teilen um auf kWh zu kommen.

            createState('Eigene_Datenpunkte.volkszaehler.zaehlerstand', 0,{
                name: 'Zaehlerstand',
                desc: 'Aktueller Zaehlerstand',
                type: 'number',
                role: 'value',
                unit: 'kWh'
            });
            
            Gruß Saboti
            schedule("*/5 * * * * *", function () {
                sendTo('influxdb.0', 'query', 'SELECT * FROM <datenbank_name>.autogen."<measurement_name>" ORDER BY DESC LIMIT 1', function (result) {
                if (result.error) {
                    console.error(result.error);
                } else {
                    //console.log(JSON.stringify(result.result[0][0].value / 1000));
                    //setState('javascript.0.Eigene_Datenpunkte.volkszaehler.zaehlerstand', JSON.stringify(result.result[0][0].value / 1000));
                    var value = (JSON.stringify(result.result[0][0].value / 1000));
                    var zaehlerstand = parseFloat(value);
                    //console.log(zaehlerstand);
                    setState('javascript.0.Eigene_Datenpunkte.volkszaehler.zaehlerstand', zaehlerstand);     
                    }
                });
            });
            

            Das ganze wird dann über Sourceanalytix weiterverarbeitet.

            Gruß Saboti

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

            @Saboti sagte:

                    var value = (JSON.stringify(result.result[0][0].value / 1000));
                    var zaehlerstand = parseFloat(value);
            

            Weshalb machst Du aus der Zahl erst einen String und wandelst den String dann in eine Zahl ?

            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

            SabotiS 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @Saboti sagte:

                      var value = (JSON.stringify(result.result[0][0].value / 1000));
                      var zaehlerstand = parseFloat(value);
              

              Weshalb machst Du aus der Zahl erst einen String und wandelst den String dann in eine Zahl ?

              SabotiS Offline
              SabotiS Offline
              Saboti
              schrieb am zuletzt editiert von
              #6

              @paul53 aus dem einfachen Grund weil ich es nicht besser kann/weiß ;-)
              Bin Blutiger Anfänger was Java angeht und bin froh das das Script so läuft.
              Wie könnte ich das denn direkt ändern?

              paul53P 1 Antwort Letzte Antwort
              0
              • SabotiS Saboti

                @paul53 aus dem einfachen Grund weil ich es nicht besser kann/weiß ;-)
                Bin Blutiger Anfänger was Java angeht und bin froh das das Script so läuft.
                Wie könnte ich das denn direkt ändern?

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

                @Saboti sagte:

                Wie könnte ich das denn direkt ändern?

                        var zaehlerstand = result.result[0][0].value / 1000;
                

                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

                SabotiS 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @Saboti sagte:

                  Wie könnte ich das denn direkt ändern?

                          var zaehlerstand = result.result[0][0].value / 1000;
                  
                  SabotiS Offline
                  SabotiS Offline
                  Saboti
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 vielen Dank für Deine Hilfe.
                  Klappt wunderbar :)

                  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

                  899

                  Online

                  32.4k

                  Benutzer

                  81.5k

                  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