Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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.9k

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

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

[gelöst] Influxdb Abfrage

Scheduled Pinned Locked Moved JavaScript
8 Posts 2 Posters 1.7k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • SabotiS Offline
    SabotiS Offline
    Saboti
    wrote on last edited by 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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        0
        • SabotiS Offline
          SabotiS Offline
          Saboti
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by 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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #8

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

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  460

                  Online

                  32.4k

                  Users

                  81.6k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe