Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Influxdb Abfrage

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Influxdb Abfrage

    This topic has been deleted. Only users with topic management privileges can see it.
    • Saboti
      Saboti last edited by 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

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Saboti last edited by 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);
        
        Saboti 1 Reply Last reply Reply Quote 0
        • Saboti
          Saboti @paul53 last edited by

          @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 Reply Quote 0
          • Saboti
            Saboti last edited by

            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

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Saboti last edited by 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 ?

              Saboti 1 Reply Last reply Reply Quote 0
              • Saboti
                Saboti @paul53 last edited by

                @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?

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Saboti last edited by

                  @Saboti sagte:

                  Wie könnte ich das denn direkt ändern?

                          var zaehlerstand = result.result[0][0].value / 1000;
                  
                  Saboti 1 Reply Last reply Reply Quote 0
                  • Saboti
                    Saboti @paul53 last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    797
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    1500
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo