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. Blockly
  5. [gelöst] Integral in Query bilden und Result verarbeiten?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    225

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[gelöst] Integral in Query bilden und Result verarbeiten?

Geplant Angeheftet Gesperrt Verschoben Blockly
5 Beiträge 2 Kommentatoren 997 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.
  • ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von Ein ehemaliger Benutzer
    #1

    Hallo
    ich baue derzeit an einer influxDB Abfrage um damit Datenpunkte zu beschreiben. Hier als ersten Versuch ein Integral über einen Leistungswert (Watt) um daraus die elektr. Arbeit (kwh) zu ermitteln.
    Das Query lautet:

    SELECT integral("value") /3600000 FROM "shelly.0.SHBDUO-1#D0CE26#1.lights.Power" WHERE time >='2020-11-20T00:00:00Z' AND time<'2020-11-21T22:35:50Z'
    

    Grob erscheint mir die Funktion des Blocklys für eine Abfrage für den Zeitbereich Gestern 0h bis Jetzt zu funktionieren.

    80481edc-809d-48ce-926f-6676de7d74db-grafik.png

    Zu dieser Aussage komme ich, da die Query Abfrage über einen GUI-Client mir folgendes Ergebnis liefert:
    9e2b5b68-4836-4813-a561-cf79f011e73a-grafik.png

    Der Debug Eintrag im Log liefert:

    
    			
    javascript.0	2020-11-21 23:51:00.080	info	(1155) script.js.Testen.InfluxTest: {"result":[[{"integral":44718.38777000003,"ts":0}]],"ts":1605999060072,"error":null}
    

    Der Timestamp passt zum Client Ergebnis für den 1.1.1970 (UnixTimeStamp) aber mir fällt nichts ein, warum und wie das Ergebnis des Integrals formatiert ist.

    Habt ihr eine Idee?
    Client: 0,0124217743805556 kwh
    Blockly: 44718.38777000003 ???

    Vielen Dank!

    ? 1 Antwort Letzte Antwort
    0
    • ? Ein ehemaliger Benutzer

      Hallo
      ich baue derzeit an einer influxDB Abfrage um damit Datenpunkte zu beschreiben. Hier als ersten Versuch ein Integral über einen Leistungswert (Watt) um daraus die elektr. Arbeit (kwh) zu ermitteln.
      Das Query lautet:

      SELECT integral("value") /3600000 FROM "shelly.0.SHBDUO-1#D0CE26#1.lights.Power" WHERE time >='2020-11-20T00:00:00Z' AND time<'2020-11-21T22:35:50Z'
      

      Grob erscheint mir die Funktion des Blocklys für eine Abfrage für den Zeitbereich Gestern 0h bis Jetzt zu funktionieren.

      80481edc-809d-48ce-926f-6676de7d74db-grafik.png

      Zu dieser Aussage komme ich, da die Query Abfrage über einen GUI-Client mir folgendes Ergebnis liefert:
      9e2b5b68-4836-4813-a561-cf79f011e73a-grafik.png

      Der Debug Eintrag im Log liefert:

      
      			
      javascript.0	2020-11-21 23:51:00.080	info	(1155) script.js.Testen.InfluxTest: {"result":[[{"integral":44718.38777000003,"ts":0}]],"ts":1605999060072,"error":null}
      

      Der Timestamp passt zum Client Ergebnis für den 1.1.1970 (UnixTimeStamp) aber mir fällt nichts ein, warum und wie das Ergebnis des Integrals formatiert ist.

      Habt ihr eine Idee?
      Client: 0,0124217743805556 kwh
      Blockly: 44718.38777000003 ???

      Vielen Dank!

      ? Offline
      ? Offline
      Ein ehemaliger Benutzer
      schrieb am zuletzt editiert von Ein ehemaliger Benutzer
      #2

      mit frischen Augen sieht man mehr......

      Im Text des Blocklys zur Abfrage fehlt die Umrechnung von Ws auf kwh also /3600000

      jetzt funktioniert es :)

      Nun geht es an das Zerlegen der Ausgabe um das Ergebnis des Intergrals als Zahl/Datenpunkt zu haben.

      Leider verzweifel ich gerade daran diese JSON Funktion Stringify mit Blockly Text Funktionen zu zerlegen.

      5916de44-9026-4b24-9536-5a36be52beb2-grafik.png

      Egal welches "grüne Text Blockly" ich verwende, es gibt für JSON.stringify einen error im Log.

      Diese Funktion habe ich mir auch aus der Dokumentation kopiert und mehr als dass es eine Umwandlung zu Text bedeutet /bedeuten kann, ist mir nicht bewusst. Denk hier liegt mein Problem...

      Habt Ihr einen Tip wie ich das (0.012931285780555562) in einen Datenpunkt "Zahl" auswerten kann?

      2020-11-22 12:33:30.082 - info: javascript.0 (30275) script.js.Testen.InfluxTest: {"result":[[{"integral":0.012931285780555562,"ts":0}]],"ts":1606044810076,"error":null}
      

      Thx!

      ? 1 Antwort Letzte Antwort
      0
      • ? Ein ehemaliger Benutzer

        mit frischen Augen sieht man mehr......

        Im Text des Blocklys zur Abfrage fehlt die Umrechnung von Ws auf kwh also /3600000

        jetzt funktioniert es :)

        Nun geht es an das Zerlegen der Ausgabe um das Ergebnis des Intergrals als Zahl/Datenpunkt zu haben.

        Leider verzweifel ich gerade daran diese JSON Funktion Stringify mit Blockly Text Funktionen zu zerlegen.

        5916de44-9026-4b24-9536-5a36be52beb2-grafik.png

        Egal welches "grüne Text Blockly" ich verwende, es gibt für JSON.stringify einen error im Log.

        Diese Funktion habe ich mir auch aus der Dokumentation kopiert und mehr als dass es eine Umwandlung zu Text bedeutet /bedeuten kann, ist mir nicht bewusst. Denk hier liegt mein Problem...

        Habt Ihr einen Tip wie ich das (0.012931285780555562) in einen Datenpunkt "Zahl" auswerten kann?

        2020-11-22 12:33:30.082 - info: javascript.0 (30275) script.js.Testen.InfluxTest: {"result":[[{"integral":0.012931285780555562,"ts":0}]],"ts":1606044810076,"error":null}
        

        Thx!

        ? Offline
        ? Offline
        Ein ehemaliger Benutzer
        schrieb am zuletzt editiert von Ein ehemaliger Benutzer
        #3

        Soooo.... lange probiert und falls es jemand auch versucht hier wie ich es jetzt gelöst habe.

        Also zuerst die Antwort des Query aus der Datenbank nicht in den Debug geschrieben, sondern mal in einen String Datenpunkt. Dort herausgefunden, dass es wirklich so zurück kommt:

        {"result":[[{"integral":0.011766770013888896,"ts":0}]],"ts":1606062090132,"error":null}
        

        Also nun daran gemacht diesen String in eine Liste aus Text mit Trennzeichen ":" zu zerlegen und das 3te Element wieder in eine Liste aus Text geschrieben. Diesmal mit dem Trennzeichen "," und das 1. Element genommen.
        Bleibt der String aus Zahlen 0.011766770013888896.
        Diesen noch nach Zahl konvertiert und in einen Datenpunkt vom Typ Zahl geschrieben.

        e83d812c-2e95-43b5-ae47-06377898f525-grafik.png

        Somit klappt es. Mit einer definierbaren Zeitspanne z.B. heute eine Datenbankabfrage auf influxdB machen und in einem das Integral der gewählten Datenpunkte bilden lassen. Das Ergebnis wiederum in einen Datenpunkt schreiben.

        F 1 Antwort Letzte Antwort
        0
        • ? Ein ehemaliger Benutzer

          Soooo.... lange probiert und falls es jemand auch versucht hier wie ich es jetzt gelöst habe.

          Also zuerst die Antwort des Query aus der Datenbank nicht in den Debug geschrieben, sondern mal in einen String Datenpunkt. Dort herausgefunden, dass es wirklich so zurück kommt:

          {"result":[[{"integral":0.011766770013888896,"ts":0}]],"ts":1606062090132,"error":null}
          

          Also nun daran gemacht diesen String in eine Liste aus Text mit Trennzeichen ":" zu zerlegen und das 3te Element wieder in eine Liste aus Text geschrieben. Diesmal mit dem Trennzeichen "," und das 1. Element genommen.
          Bleibt der String aus Zahlen 0.011766770013888896.
          Diesen noch nach Zahl konvertiert und in einen Datenpunkt vom Typ Zahl geschrieben.

          e83d812c-2e95-43b5-ae47-06377898f525-grafik.png

          Somit klappt es. Mit einer definierbaren Zeitspanne z.B. heute eine Datenbankabfrage auf influxdB machen und in einem das Integral der gewählten Datenpunkte bilden lassen. Das Ergebnis wiederum in einen Datenpunkt schreiben.

          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #4

          @Pete0815 Du benötigst keine extra JS-Funktion. Dein Ergebnis ist bereits entweder ein Objekt oder ein JSON(ich kenne Influx-DB nicht). Aber egal welches es ist, Blockly erledigt das bereits.

          Hier mal ein auf deine Daten zugeschnittenes Beispiel, die erste Zeile simuliert lediglich deine Abfrage, ab dort kannst du es einsetzen. Ist übersichtlicher und universeller
          Integral.PNG

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          ? 1 Antwort Letzte Antwort
          0
          • F fastfoot

            @Pete0815 Du benötigst keine extra JS-Funktion. Dein Ergebnis ist bereits entweder ein Objekt oder ein JSON(ich kenne Influx-DB nicht). Aber egal welches es ist, Blockly erledigt das bereits.

            Hier mal ein auf deine Daten zugeschnittenes Beispiel, die erste Zeile simuliert lediglich deine Abfrage, ab dort kannst du es einsetzen. Ist übersichtlicher und universeller
            Integral.PNG

            ? Offline
            ? Offline
            Ein ehemaliger Benutzer
            schrieb am zuletzt editiert von
            #5

            @fastfoot vielen Dank. Das sieht übersichtlicher aus und die Nutzung von "Attribut" im Blockly kenne ich noch nicht. Vereinfacht es aber erheblich.

            Ist es Absicht, dass Du zweimal Daten setzt? Liegt das an den 2 eckigen Klammern im result?

            Deine Info bzgl. JS-Funktion verstehe ich noch nicht, da ich Objekt oder JSON erst auch noch (grob) verstehen muß. Bleibt spannend, macht aber Spaß.

            Vielen Dank und Grüße!

            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

            423

            Online

            32.7k

            Benutzer

            82.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