Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Grafana-Abfragen von iobroker MySQL

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Grafana-Abfragen von iobroker MySQL

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Mitch last edited by

      @Dutchman:

      Brauchst du nicht, in Grafana hast du Time-Shift in den grafiek Optionen

      Sent from my iPhone using Tapatalk `

      Das verschiebt nur die Anzeige, aber die Werte bleiben an den falschen Tagen, also + 1

      1 Reply Last reply Reply Quote 0
      • andre
        andre Developer last edited by

        Hallo,
        ich mache gerade meine ersten Schritte in Grafana und stehe noch ein wenig mit der SQL-Syntax auf Kriegsfuß. Besser gesagt bekomme ich meinen Graphen nicht "smooth"...
        Im Detail geht es um meine PV-Leistung. Ich habe aktuell diese Abfrage:

        SELECT
          floor(ts/1000) as time_sec,
          val as value,
          "PV-Leistung" as metric
        FROM ts_number
        WHERE $__unixEpochFrom()*1000 < ts and $__unixEpochTo()*1000 > ts and id = 2
        ORDER BY ts
        
        

        Funktioniert soweit tadellos. 🙂 Jetzt versuche ich seit Tagen übers zusammen-googlen mit MEAN bzw. AVG und GROUP BY meine Abfrage zu tunen. Zum einen in Hinblick auf kleinere Datenmengen bei der Abfrage, zum Anderen für eine "smoothe" Grafik...
        Hat vielleicht jemand ein Beispiel dazu, welches ich mit meinen SQL-Grundkenntnissen auch verstehen kann? Oder wie müsste meine Abfrage erweitert werden, wenn ich z.B. aus den Werten von jeweils 5 Minuten einen Mittelwert bilden möchte?

        Danke.

        MfG,
        André

        1 Reply Last reply Reply Quote 0
        • D
          Denis103 last edited by

          Ich mache grad meine ersten Gehversuche mit Garfana und einer mySQL-DB als Datenquelle. Als Beispiel habe ich hier aus dem Thread meine Test-Abfrage adaptiert:

          SELECT
            floor(nb.ts/1000) AS time_sec,
            nb.val AS value,
            dp.name AS metric
          FROM ts_number AS nb, datapoints AS dp
          WHERE $__unixEpochFrom()*1000 < nb.ts AND $__unixEpochTo()*1000 > nb.ts AND nb.id = 3 AND nb.id = dp.id
          ORDER BY nb.ts ASC
          

          Beim ausführen der Abfrage erhalte ich in PHPMYADMIN folgenden Fehler:

          #1305 - FUNCTION iobroker.$__unixEpochFrom does not exist 
          

          Füge ich das Query in Grafana ein, dann kommt da kein Fehler, aber der Graph zeigt auch keine Daten an.

          Stimmt etwas mit meiner mySQL-Syntax nicht?

          simatec 1 Reply Last reply Reply Quote 0
          • simatec
            simatec Developer Most Active @Denis103 last edited by simatec

            Ich muss das Thema hier noch einmal aufwärmen. Ich bin gerade dabei bei mir auf Grafana umzustellen und hänge an folgenden Punkt.
            Ich möchte gerne eine Graph erstellen, in dem ich meinen Tagesverbrauch an Strom darstellen kann.
            Mein Stromzähler werte ich aus und alle Daten werden bei mir in die mysql Datenbank geschrieben.

            Wie bekomme ich diese Graph hin, in der mir Tageweise der Verbrauch angezeigt wird?

            Hier ein Beispiel, wie ich mir das gerne bauen will:
            Bildschirmfoto 2020-11-15 um 15.47.43.png

            Meine Datenpunkt in mysql lese ich wie folgt aus:

            SELECT
            floor(n.ts/1000) as time_sec,
            n.val as value,
            "Tagesverbrauch" as metric
            FROM ts_number n
            WHERE $__unixEpochFrom()*1000<n.ts and $__unixEpochTo()*1000>n.ts and n.id = 18
            GROUP BY $__unixEpochGroup(n.ts,$__interval,previous)
            ORDER BY n.ts ASC
            
            Segway 1 Reply Last reply Reply Quote 0
            • Segway
              Segway @simatec last edited by

              @simatec

              Hallo Ich sowas bei mir laufen. Hier die tägliche PV Produktion - fest eingestellt auf die letzten 2 Wochen:
              ce04fd4d-7882-47cf-83c1-2ff60c4db431-grafik.png

              Das ganze per InfluxDB und Grafana:
              f296e975-f988-4cce-b914-b72d3ff60450-grafik.png

              simatec 1 Reply Last reply Reply Quote 0
              • simatec
                simatec Developer Most Active @Segway last edited by

                @Segway
                Ich habe inzwischen auch auf Influx gewechselt und meine Log Daten von mysql auf Influx portiert.

                Segway 1 Reply Last reply Reply Quote 0
                • Segway
                  Segway @simatec last edited by

                  @simatec
                  Läuft es denn dann ?

                  simatec 1 Reply Last reply Reply Quote 0
                  • simatec
                    simatec Developer Most Active @Segway last edited by

                    @Segway
                    Ja mit Influx lässt sich das einfacher in Grafana umsetzen

                    1 Reply Last reply Reply Quote 0
                    • W
                      WernerS @sissiwup last edited by

                      @sissiwup

                      Hallo

                      also das funktioniert bei mir. Ich benutze Mysql und MariaDB.

                      SELECT
                        floor(nb.ts/1000) AS time_sec,
                      
                        nb.val AS value,
                        dp.name AS metric
                      FROM ts_number AS nb, datapoints AS dp
                      WHERE $__unixEpochFrom()*1000 < nb.ts AND $__unixEpochTo()*1000 > nb.ts AND nb.id = 36 AND nb.id = dp.id
                      ORDER BY nb.ts ASC
                      

                      Ich bekomme manchmal den Fehler "Data is missing a Time Field" obwohl daten vorhanden sind

                      Gruß
                      Werner

                      Benjamin Häublein 1 Reply Last reply Reply Quote 0
                      • Benjamin Häublein
                        Benjamin Häublein Developer @WernerS last edited by

                        @werners Ich habe es jetzt folgendermaßen gelöst:

                        SELECT val AS value, ts AS "time" FROM iobroker.ts_number WHERE id = 12 AND $__unixEpochFilter(ts/1000)
                        

                        Das scheint mir das einfachste zu sein.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        821
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        12
                        37
                        14637
                        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