Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)

Begonnen von Thyraz, 08 Oktober 2017, 15:02:38

Vorheriges Thema - Nächstes Thema

kadettilac89

Zitat von: ChrisW am 21 Januar 2019, 17:11:11
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.


ChrisW

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 ...
Raspberry PI3 mit allem möglichen.

kadettilac89

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


ChrisW

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
Raspberry PI3 mit allem möglichen.


ChrisW

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.

kadettilac89

Zitat von: ChrisW am 22 Januar 2019, 12:41:02
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.

ChrisW

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.

ChrisW

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.

kadettilac89

Zitat von: ChrisW am 22 Januar 2019, 15:37:18
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 ...


Zitat von: ChrisW am 22 Januar 2019, 17:34:06
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.

ChrisW

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
Raspberry PI3 mit allem möglichen.

kadettilac89

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?

kadettilac89

#163
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

ChrisW

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   
Raspberry PI3 mit allem möglichen.