Autor Thema: Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)  (Gelesen 53506 mal)

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1139
Unter Metrics wenn ich den SQL da reintrage:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "temp_keller" as metric
FROM history
WHERE READING="temperature2" AND DEVICE="temp_keller" AND $__timeFilter(TIMESTAMP)

Lieg sicher an den Formt bei mir ist value 18.2  type in phpmyadmin: VARCHAR
Und die Datenbank utf8_bin
Varchar ist default. Utf8 ist unicode und auch Standard. Das dblog scriot legt genau diese Struktur an.


Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
also ich hab die DB geleert lag wohl weil ich erst ohne utf8 geloggt habe und dann umgestellt habe.
Aktuell keine Fehlermeldung aber es wird auch nichts angezeigt .. obwohl schon ein paar Temperaturen in der Datenbank sind .. komisch. Selbst Zeitraum 5 Minuten Zeigt nichts an.

Edit: ... nun macht es wieder Probleme. Hatte die Tabelle Repariert / Optimiert per phpmyadmin. Das 2. Thermometer aktuell ohne fehler aber no data ..

{
  "results": {
    "A": {
      "error": "Value column must have numeric datatype, column: value type: string value: 18.6",
      "refId": "A",
      "meta": {
        "sql": "SELECT\r\n  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,\r\n  VALUE as value,\r\n  \"temp_keller\" as metric\r\nFROM history\r\nWHERE READING=\"temperature2\" AND DEVICE=\"temp_keller\" AND TIMESTAMP BETWEEN FROM_UNIXTIME(1548078070) AND FROM_UNIXTIME(1548099670)"
      },
      "series": null,
      "tables": null
    }
  },
  "message": "Value column must have numeric datatype, column: value type: string value: 18.6"
}


Der Code liefert über phpmyadmin Daten ich lasse nur  AND $__timeFilter(TIMESTAMP) weg ... komisch irgendwas scheint mit der Zeit nicht zu funktionieren


Edit2: also die Ausgabe in phpmyadmin Zeigt was an
SELECT
 UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
 VALUE as value,
 "temp_keller" as metric
 FROM history
 WHERE READING="temperature2" AND DEVICE="temp_keller" AND TIMESTAMP BETWEEN FROM_UNIXTIME(1548057565) AND FROM_UNIXTIME(1548100765)

Frag mich wo der fehler nun liegt ...
« Letzte Änderung: 21 Januar 2019, 21:01:10 von ChrisW »
Raspberry PI3 mit allem möglichen.

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1139
hast du dir den link mal angesehen? https://github.com/grafana/grafana/issues/12463

ab version 5.20 ist die Datentypeprüfung scheinbar restriktiver.

Dein Log zeigt dass du einen Type-Missmatch hast. Solange wirst du auch keine Werte bekommen.

Versuche mal ein Cast für Feld VALUE. Zum Test mal DECIMAL, muss ggf. noch geändert werden.
VALUE as value, <... alt
 
CAST(VALUE AS DECIMAL(3,1)) as value, <... neu

Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
Danke. Mit dem cast hatte ich auch da hat er dann nur 22c angezeigt obwohl das nicht im Log war.
Mit CAST(VALUE AS DECIMAL(3,1)) as value, klappt es :) Juhu

edit: Wie bekomm ich nun noch die Legende richtig ?
   22.6000 °C   22.9000 °C   22.9000 °C

Edit: Wäre noch Interessant wie man die Farbe anpasst :D Habe alles gefunden aber nichts zur farbe
« Letzte Änderung: 21 Januar 2019, 21:26:28 von ChrisW »
Raspberry PI3 mit allem möglichen.


Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
Danke so versteckt *g* was ich nun noch vermisse wie ich den einzelnen Metricen A B C verschiedene Designs geben kann ? Quasi A = steps B= Points ist so etwas möglich ??

Und nun noch etwas Kompliziertes ich hoffe das kann man über den mysql Befehl filtern ?
Täglich generiert das Device Hausstrom ein Reading :
day das scaut so aus : D21 Wd: 27.45 kWh Wm:  27.45 kWh C:  0.00 €
Das D ändert sich pro Tag. Ich möchte gern Bars haben wo ich täglich eine Bar habe mit dem Verbrauch.
Wie komme ich also an dieses 27.45 ?

Raspberry PI3 mit allem möglichen.

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1139
Danke so versteckt *g* was ich nun noch vermisse wie ich den einzelnen Metricen A B C verschiedene Designs geben kann ? Quasi A = steps B= Points ist so etwas möglich ??


balken und linien kombinieren geht irgendwie ... musst mal google fragen.
https://community.hiveeyes.org/t/abweichungen-pro-tag-als-balken-in-gewichtsgrafik-anzeigen/748


Frage zu Tageswerten ... schau dir mal die Grafik an, Datasource ist zwar Influx aber vielleicth hast du die 1d-Agregation auch für Mysql in Grafana. In der Grafik ganz unten.

https://discourse-cdn-sjc2.com/standard14/uploads/grafana/optimized/2X/8/804b5a0db49b1864d31428493496490d219feec4_2_690x387.PNG

Ansonsten müsstest du in Mysql die Group by date Funktion nutzen. Ich lade mir Mysql in influxdb, macht vieles einfacher. Wenn die Aggregation in Grafana für Mysql nicht angeboten wird meldest dich nochmal.

Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
oh okay ja sicher alles irgendwie möglich aber sql ist da nicht so mein ding :D
Ich denke ich werde da eher mit Fhem arbeiten mit diesem Statistik Modul scheint ein wenig einfacher zu sein. Dann lasse ich mir da die Werte Ausrechnen und per dblog loggen.
Raspberry PI3 mit allem möglichen.

Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
Ein anderes Problem gerade gefunden ..
Ich logge Gerät Hausstrom mit reading power
Im filelog und in der mysql ist um 17:12:05 ein Eintrag mit 16KW also power 16.80

Ich lasse es wie folgt ausgeben:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
CAST(VALUE AS DECIMAL(3,1)) as value,
  "Power" as metric
FROM history
WHERE READING="power" AND DEVICE="Hausstrom" AND $__timeFilter(TIMESTAMP)

Aber so schaut es aus die "Spitze" ist absolut nicht sichbar .. im Filelog vom Fhem schon. Woran liegt das?
Raspberry PI3 mit allem möglichen.

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1139
oh okay ja sicher alles irgendwie möglich aber sql ist da nicht so mein ding :D
Ich denke ich werde da eher mit Fhem arbeiten mit diesem Statistik Modul scheint ein wenig einfacher zu sein. Dann lasse ich mir da die Werte Ausrechnen und per dblog loggen.


https://discourse-cdn-sjc2.com/standard14/uploads/grafana/optimized/2X/8/804b5a0db49b1864d31428493496490d219feec4_2_690x387.PNG
--> Das bedeutet, die Aggregationsfunktion "1d" wird dir bei mysql nicht angezeigt? Interessehalber ...


Ein anderes Problem gerade gefunden ..
Ich logge Gerät Hausstrom mit reading power
Im filelog und in der mysql ist um 17:12:05 ein Eintrag mit 16KW also power 16.80

Ich lasse es wie folgt ausgeben:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
CAST(VALUE AS DECIMAL(3,1)) as value,
  "Power" as metric
FROM history
WHERE READING="power" AND DEVICE="Hausstrom" AND $__timeFilter(TIMESTAMP)

Aber so schaut es aus die "Spitze" ist absolut nicht sichbar .. im Filelog vom Fhem schon. Woran liegt das?

Teste mal DECIMAL(5,2) ... insgesamt 5 Stellen, davon 2 Nachkomma. Evtl. wird hier was abgeschnitten oder verworfen weil CAST fehlschlägt.

Zusätzlich habe ich bei Plots mit wenig Datensätze mit Point als Typ getestet, da siehst du viel besser welche Werte ankamen. Mit Linien wird geglättet. Das ist irgendwo bei Chart options, da hast du aktuell Lines, daneben kannst du Points auswählen. Kann erst wieder am Wochenende auf mein System, kann grad nicht genauer beschreiben.

Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
Danke aber irgendwie stimmen die Werte nicht die Angezeigt werden auch nach der Anpassung. Es werden Werte Angezeigt die gibt es in der Datenbank nicht. Auch im fhem filelog nicht
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
CAST(VALUE AS DECIMAL(5,2)) as value,
  "Power" as metric
FROM history
WHERE READING="power" AND DEVICE="Hausstrom" AND $__timeFilter(TIMESTAMP)
Und noch ein paar bilder

EDIT: Intressant es scheint als ob Grafana eine Stunde vor geht ...


edit2: Bei einem Thermometer hab ich es geprüft 21.10 Uhr letzter eintrag filelog und mysql gleich. Aber in Grafana sind bis jetzt locker 10 andere anzeigen. Hab Points an ... woher die messwerte auch sind. Ich glaube in der Zeitumrechnung stimmt etwas nicht
« Letzte Änderung: 22 Januar 2019, 21:44:09 von ChrisW »
Raspberry PI3 mit allem möglichen.

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1139
was ist unter timezone in den einstellungen des dashboards eingestellt. utc oder local browser time? grafana erwartet utc zeiten aus der mysql datenbank. grafana dashboard sollte aber local browser time haben.vielleicht passt auch hier was nicht.

timezone auf host und locals prüfen. wird die richtige zeit und zeitzone cet angezeigt?
date

wird im browser richtige timezone genutzt?

http://browserspy.dk/date.php

zeigt die seite gmt+0100 an?

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1139
Nachtrag. Du kannst zum Test die Dashboard Zeitzone auf utc umstellen oder andersherum. Je nachdem was aktuell drin ist.

da war oder ist ein Bug in Grafana. Hast du kleiner als 5.3.4? Auch 5.3.4 ohne letze Bugfixes könnte betroffen sein. Könnte dein Problem erklären.
Wenn es der Bug ist, sollte die Änderung deines Statements zu dem unten geposteten dein Problem lösen.

$__timeFilter(TIMESTAMP::TIMESTAMP WITH TIME ZONE AT TIME ZONE 'UTC')

Bug Report
https://github.com/grafana/grafana/issues/13769
« Letzte Änderung: 23 Januar 2019, 08:47:24 von kadettilac89 »

Offline ChrisW

  • Hero Member
  • *****
  • Beiträge: 2129
ALso ich habe  Grafana v5.4.3
Habe beides UTC gesetzt links in den Settings und im Dashboard oben bei diesen Settings. Es steht nun oben rechts rot UTC.
Problem er denkt es ist 8:11 es ist aber 9:11 hmm

Wenn ich den Code anpasse:
Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '::TIMESTAMP WITH TIME ZONE AT TIME ZONE 'UTC' BETWEEN FROM_UNIXTIME(1548209580) ' at line 6
Gerade im Docker bei grafana geschaut bei date kommt :
Wed Jan 23 08:21:18 UTC 2019   
« Letzte Änderung: 23 Januar 2019, 09:21:49 von ChrisW »
Raspberry PI3 mit allem möglichen.

 

decade-submarginal