FHEM Forum

FHEM => Frontends => Thema gestartet von: Thyraz am 08 Oktober 2017, 15:02:38

Titel: Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 08 Oktober 2017, 15:02:38
Hallo zusammen. :)

Worum gehts:
Grafana beschreibt sich als "The open platform for beautiful analytics and monitoring".
Eine Live Demo zum Erkunden findet man hier: http://play.grafana.org

Grafana konnte bis vor kurzem noch nicht mit MySQL als Datasource umgehen, was das Zusammenspiel mit der eigenen DBLog Datenbank erschwerte.
(Dadurch entstand z.B. das hier im Forum erhältliche Modul zum Loggen in eine InfluxDB, womit man eine doppelte Datenhaltung in Kauf nahm.)
Dies hat sich zum Glück seit einiger Zeit geändert und seit Grafana 4.5.1 ist das Ganze sehr brauchbar.

Was ist der Vorteil der Lösung?
- Man kann den angezeigten Zeitraum einfach über ein Dropdown ändern. Dort gibt es viele Presets wie Letzte 24h, 6 Monate, 1 Jahr, ... und eine Auswahl über eine Kalenderansicht.
Auswertungen machen so weit mehr Freude und gehen leicht von der Hand.

- Die Legende kann außerdem automatisch Dinge wie Min/Max/Durchschnitt aller Werte im gerade gewählten Zeitraum mit anzeigen was auch sehr nett ist.

- Man kann direkt in Grafana Dashboards mit verschiedenen Auswertungen arrangieren. Ein weiteres Frontend zur Platzierung mehrerer Charts wird also nicht benötigt.
Das Embedden einzelner Charts in andere Seiten ist aber natürlich auch möglich.

- Es gibt verschiedene Paneltypen, welche neben dem klassischen Chart (Line / Bar / Point) auch Pie Charts oder Tabellen beinhalten.

- Durch die Nutzung von MySQL Select Requests hat man vielseitige Möglichkeiten Daten auszuwerten oder auch schon beim Laden zu manipulieren oder auszudünnen.
Das geschieht dann direkt serverseitig in MySQL und das Ausdünnen entlastet Clients wie etwa Mobilgeräte und erzeugt dann auch weniger Traffic.

- Die UI lädt schnell und ist auf all meinen Geräten flüssig und einfach zu bedienen.
Sie passt sich auch bei Größenänderungen des Fensters (oder drehen des Mobilgeräts) an und zeichnet die Charts hier sehr schnell neu.
Auch das ist ein deutlicher Vorteil gegenüber den Charts die ich bisher mit FHEM/TabletUI/... genutzt hatte.


Installation und Konfiguration kommt im nächsten Post..
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 08 Oktober 2017, 15:02:58
Voraussetzungen:
Ihr braucht eine DBLog Instanz die in eine MySQL Datenbank loggt.
Ich hatte bisher SQLite3 verwendet und habe meine Altdaten daher in eine neue MySQL Datenbank umgezogen.

Installation und Einrichtung einer DBLog Instanz mit MySQL:
https://wiki.fhem.de/wiki/DbLog#Beispiel:_Anlegen_und_Nutzung_einer_Mysql-Datenbank

Sicherung der Altdaten aus SQLite und wieder einspielen in MySQL:
https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Datens.C3.A4tze_.28Devices.29_von_einer_Datenbank_in_eine_andere_umziehen_.28Export.2FImport.29
Das Beispiel sichert nur Logdaten für ein einzelnes Gerät und nicht für alles aus der DB.
Das lässt sich aber problemlos anpassen, indem man das Attribut device in der DBRep Instanz nicht belegt.

Ein Umstieg von Filelog auf DBLog würde ebenfalls mit dem ober verlinkten Erstellen einer DBLog Instanz mit MySQL starten.
Import der Altdaten aus den Filelogs wäre darüber möglich:
https://forum.fhem.de/index.php/topic,66383.0.html

Installation
Offizieller Download: https://grafana.com/grafana/download
Fertiges Package für den Raspberry Pi, welches einfach mit dpkg -i grafana_X.X.X_armhf.deb installiert werden kann: https://github.com/fg2it/grafana-on-raspberry/releases

Damit Grafana automatisch mit dem System startet muss der Grafana Server noch aktiviert werden.
Bei Verwendung von Systemd wäre das mit folgendem Befehl zu erledigen: sudo /bin/systemctl enable grafana-server

Grafana lauscht per default auf Port 3000.
Dies kann ein Problem sein, falls man Alexa mit Custom Skill nutzt. Dieser Dienst belegt ebenfalls schon Port 3000.
In dem Fall mit sudo nano /etc/grafana/grafana.ini die Konfiguration anpassen folgende Zeile anpassen:
;http_port = 3000
Hier den führenden Semicolon entfernen den Port entsprechend abändern.

Im Grafana Webinterface dann eine neue Datasource vom Typ MySQL anlegen und die Daten eurer FHEM MYSQL Datenbank eintragen (Port/User/Passwort).
Danach solltest ihr startklar sein.  8)

Hinweise zu MySQL Selects in Grafana
Datenstruktur:
An sich ist es egal wie der MySQL Select aussieht. Grafana interessiert nur, dass es 3 Spalten mit der richtigen Benennung geliefert bekommmt.
  - time_sec muss Zeitwerte im UNIX-Timestamp Format (Sekunden seit 01.01.1970) enthalten. Meist der TIMESTAMP Eintrag aus der Datenbank.
  - value muss Werte für die Y-Achse liefern, welche den Zeitstempeln aus time_sec zuzuordnen sind. Meist der VALUE Eintrag aus der Datenbank.
  - metric ist der Text der für die Kurve in der Legende angezeigt wird. Am Besten z.B. den zugehörigen DEVICE Eintrag aus der DB zurückliefern, oder einen festen String.

Beim den VALUE Einträgen von FHEM muss man beachten, dass diese (da sie auch Text beinhalten können) nicht numerisch sind.
Soll schon intern im SELECT eine Berechnung durchgeführt werden wie AVG oder MIN/MAX dann muss man hier CONVERT(VALUE, DOUBLE) oder CONVERT(VALUE, INTEGER) verwenden. Ansonsten wundert man sich evtl, dass 9 größer 12 ist. ;)

Beispiel:
SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    "Kurvenbezeichnung" as metric
  FROM history
  WHERE READING="state" AND DEVICE="MyDummy" AND $__timeFilter(TIMESTAMP)

Nützliche Macros:
Grafana bietet ein paar Macros die man in den MySQL Selects verwenden kann, um die zu ladenden Daten auf den angezeigten Zeitraum zu begrenzen.
  - $__timeFilter(TIMESTAMP) liefert eine Überprüfung auf einen Zeitraum zurück, die man in der WHERE Bedingung verwenden kann (siehe obiges Beispiel)
  - $__timeFrom() liefert den Startzeitpunkt des angezeigten Zeitraums als "YYYY-MM-DD HH:MM:SS" zurück.
  - $__timeTo() liefert den Endzeitpunkt des angezeigten Zeitraums als "YYYY-MM-DD HH:MM:SS" zurück (so loggt auch DBLog in die Datenbank).
  - $__unixEpochFrom() liefert den Startzeitpunkt des angezeigten Zeitraums als UNIX-Timestamp Format (Sekunden seit 01.01.1970) zurück.
  - $__unixEpochTo liefert den Endzeitpunkt des angezeigten Zeitraums als UNIX-Timestamp Format (Sekunden seit 01.01.1970) zurück.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 08 Oktober 2017, 15:03:05
Beispiel: Line-Chart für Temperatursensor

Erstellt ein neues Dashboard und dort eine neues Panel vom Typ Chart.
Klickt auf den Panel-Title und im Popup Menu auf Edit.

Wählt hier den Tab "Metrics" um die MySQL Definition anzupassen.
Ersetzt den Code mit diesem hier:

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Garten" as metric
FROM history
WHERE READING="temperature" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)

Danach könnt ihr auf Add Query klicken falls ihr weitere Kurven zu dem Diagramm hinzufügen wollt (weitere Temperatursensoren).

Zu guter Letzt könnte man noch im Reiter General den Chart Title anpassen, im Reiter Axes die Unit auf "°C" setzen und im Reiter Legend entscheiden ob ihr Min/Max/Durchschnittswerte unter dem Diagramm wollt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 09 Oktober 2017, 11:02:21
Beispiel: Bar Chart mit monatlichen Verbräuchen
Ich habe in meiner Datenbank Logeinträge von mehreren Statistic-Modul Instanzen die mir den täglichen / monatlichen / jährlichen Stromverbrauch diverser Geräte aufzeichnen.

Das Problem ist hier, dass zB. bei den monatlichen Verbräuchen der Timestamp 5 Sekunden vor dem Monatswechsel geloggt wird.
Dadurch sitzt der Balken im Diagramm mehr im nächsten Monat als im eigentlich zugehörigen.
Um das zu umgehen wird die DATE_FORMAT Funktion von MySQL genutzt um Uhrzeit und Tag des Monats im Timestamp zu manipulieren:

SELECT
  UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-01')) as time_sec,
  VALUE as value,
  "Trockner" as metric
FROM history
WHERE READING="statEnergyValMonthLast" AND DEVICE="Dummy_PowerSwitch04" AND $__timeFilter(TIMESTAMP)

- Im Reiter Display ist der Draw Mode statt Line auf Bars gesetzt
- Im Reiter Time Range habe ich Override relative time auf 1 Jahr (1y) gesetzt
- Beim Select Statement für das zweite Gerät im Balkendiagramm habe ich den Tag in der DATE_FORMAT Funktion nicht auf 1, sondern auf 4 gesetzt. Dadurch sind die Balken etwas versetzt zu einander.
Das ist optisch von Vorteil falls der hintere Balken mal kleiner ist als vordere.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 11 Oktober 2017, 07:32:05
Beispiel: Mehrere Linecharts stapeln
Um mehrere Schaltsignale (in diesem Fall Ventile der Fußbodenheizung) in einem Chart dazustellen, habe ich den Y-Wert (0 oder 1) der einzelnen Kurven im Select Statement mit unterschiedlichen Offsets verrechnet.
Dadurch werden die Linien untereinander gezeichnet und sind besser ablesbar.

Erste Linie ohne Offset:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT(VALUE, INTEGER) + 2 as value,
  "Flur" as metric
FROM history
WHERE READING="Heizkreis_Flur" AND DEVICE="Heizung" AND $__timeFilter(TIMESTAMP)

Zweite Linie mit Offset:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT(VALUE, INTEGER) + 2 as value,
  "Wohnzimmer" as metric
FROM history
WHERE READING="Heizkreis_Wohnzimmer" AND DEVICE="Heizung" AND $__timeFilter(TIMESTAMP)

Die weiteren Linien dann eben mit entsprechend größeren Offsets.
Die Achsenbeschriftung der Y-Achse habe ich bei dem Diagramm dann ausgeblendet, da sie keine sinnvolle Information liefert.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 11 Oktober 2017, 07:33:04
Beispiel: Kurve ausdünnen bei zu vielen Messwerten (lange Ladezeiten / langsamer Seitenaufbau)

Meine LaCrosse Thermometer loggen die Temperatur mit 0.1°C Genauigkeit, wodurch man an sich ständig Schwankungen hat und somit massig Messwerte.
Damit die Diagramme auf dem Handy anständig laden, zeige ich weit weniger Punkte in der Kurve an, als Messwerte vorhanden sind.
Um dennoch eine möglichst genaue Darstellung der Kurven zu bekommen, wird dazu jeweils aus den zusammengefassten Punkten der Mittelwert gebildet.

Zuerst das normale Select Statement mit allen Messpunkten:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Original" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)

Und hier dann die angepasste Version mit Gruppierung zu 300s / 5min und der Average Berechnung:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, DOUBLE)) as value,
  Geglättet" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 300

Edit:
Es gibt noch eine erweiterte Möglichkeit um die Stärke der Glättung an den gerade gewählten Zeitraum anzupassen.
Das hilft, damit bei einem Anzeigezeitraum von 1 Woche ähnlich viele Datenpunkte angezeigt werden wie wenn man 1 Jahr wählt.
Bei einer Gruppierung mit einem festen Sekunden-Teiler wäre dies nicht der Fall.

Grafana bietet hierzu eine Variable $__interval welche sich beim ändern des Zeitraums anpasst.
Sie nimmt dabei Werte wie z.B. 2s, 5m, 1h an.
Dies kann man wie folgt verwenden:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, DOUBLE)) as value,
  "Geglättet" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV CASE RIGHT($__interval, 1) 
                                          WHEN 's' THEN $__interval
                                          WHEN 'm' THEN $__interval * 60
                                          WHEN 'h' THEN $__interval * 3600
                                          WHEN 'h' THEN $__interval * 86400
                                          ELSE $__interval
                                        END

Wem die Glättung dabei zu gering ausfällt, kann hinter das *60, *3600 usw. auch noch einen weiteren Multiplikator hinzufügen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Jupdidu am 11 Oktober 2017, 09:50:15
Hallo,
das liest sich sehr gut.

Könnte man damit auch Charts als PNG exportieren und dann z.B. per Telegram versenden?

Gruß
Jupp
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Hauswart am 11 Oktober 2017, 09:56:48
Sieht der gut aus, würde es leider im FHEMWEB / TabletUI nutzen können. Denn eine neue Übersicht nur für Charts sehe ich bei mir nicht, wenn dann TabletUI, damit ich auch einzelne Aktoren steuern kann.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 11 Oktober 2017, 11:21:48
Könnte man damit auch Charts als PNG exportieren und dann z.B. per Telegram versenden?

Ja, gibt in der Doku eine Sektion zum Sharen.
Das beinhaltet verschiedene Embed Lösungen, aber auch direkte PNG Erstellung eines Diagramms.

Hier ein Beispiel mit Link auf die Online-Demo von Grafana:
http://play.grafana.org/render/dashboard-solo/db/grafana-play-home?orgId=1&panelId=4&from=1507705926296&to=1507713126297&width=450&height=200&tz=UTC%2B02%3A00&timeout=5000

Sieht der gut aus, würde es leider im FHEMWEB / TabletUI nutzen können. Denn eine neue Übersicht nur für Charts sehe ich bei mir nicht, wenn dann TabletUI, damit ich auch einzelne Aktoren steuern kann.

Für TabletUI könnten die Embed Möglichkeiten hilfreich sein:
http://docs.grafana.org/reference/sharing/
Ich weiß nur nicht wie das dann mit der Wahl des Zeitraums ist, wenn man keine Topbar von Grafana hat.
Müsste man mal testen.

Ich hab mir eher überlegt die gesamte Grafana Seite in einen Pagetab von TabletUI per iframe zu legen. Mal sehen...
Evtl. bekommt man das mit ein paar CSS Anpassungen auch optisch stimmig zum Rest hin.

Edit: der iframe Link beinhaltete die Timerange.
Man könnte mit etwas Javascript sicher den Wert eine Dropdowns in TabletUI verwenden und das iframe neu Laden.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 12 Oktober 2017, 14:15:57
Beispiel: Plottabriss vermeiden

Fast jede Plot-Lösung lädt ja immer nur die Daten für den anzuzeigenden Zeitraum.
Dadurch ergibt sich das Problem, dass die Linie oft nicht zu Beginn des Diagramms anfängt und schon vor dem Ende des Diagramms (oder des aktuellen Zeitstempels) aufhört.

Nun könnte man natürlich FHEM zwingen mehr Werte zu loggen, z.B. in festen Zeitabständen wie jede Minute.
Das erzeugt aber natürlich Unmengen an unnötigen Daten.

Die zweite Lösung ist die, welche normal mit den SVGPlots in FHEM in Verbindung mit Logproxy empfohlen wird:
den Abfragebereich der Werte größer machen als den angezeigten Bereich.
Das wäre mit Grafana und MySQL auch Problemlos möglich.

Das hat aber auch einen Nachteil:
Ändert sich z.B. ein Wert einmal über mehrere Tage nicht, kann es wieder zu einem Abriss kommen obwohl ich ein paar Stunden mehr lade als angezeigt.
Oder ich lade wirklich mehrere Tage vor und nach dem Anzeigebereich.
Wenn die Kurven dann aber doch viele Einträge haben, kann das Laden der Diagramme sehr langsam werden.

Daher hab ich mir überlegt was man eigentlich genau will:
- Den letzte Datenpunkt vor dem angezeigten Zeitraum
- Den ersten Datenpunkt nach dem angezeigten Zeitraum (Bei einem Anzeigezeitraum bis zur aktuellen Zeit, oder bis in die Zukunft wird hier eben kein Datenpunkt gefunden)
- Einen zusätzlichen virtuellen (nicht in MySQL vorhandenen) Datenpunkt, der den letzten Zustand in der Datenbank nimmt und ihn mit der aktuellen Zeit kombiniert.
  Dadurch wird der Plot auch nach dem letzten Wert in der DB noch bis zum aktuellen Zeitpunkt weitergezeichnet.

Das ganze sind dann einzelne Select Statements, deren Ergebnisse mit UNION zu einer Tabelle verbunden werden:
-- Eigentliche Kurve
(
  SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
   "Wohnzimmer" as metric
  FROM history
  WHERE READING = "Heizkreis_Wohnzimmer" AND DEVICE = "Heizung" AND $__timeFilter(TIMESTAMP)
)

UNION

-- Kurve am Anfang um den letzten Wert vor dem aktuellen Zeitraum erweitern
(
  SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    "Wohnzimmer" as metric
  FROM history
  WHERE READING = "Heizkreis_Wohnzimmer" AND DEVICE = "Heizung" AND TIMESTAMP <= $__timeFrom() -- Letzter Wert vor Anfangszeit des aktuellen Zeitraums
  ORDER BY TIMESTAMP DESC
  LIMIT 1   
)

UNION

-- Kurve mit nächstem Wert nach dem aktuellen Zeitraum erweitern
(
SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    "Wohnzimmer" as metric
  FROM history
  WHERE READING = "Heizkreis_Wohnzimmer" AND DEVICE = "Heizung" AND TIMESTAMP >= $__timeTo() -- Letzten Wert im aktuellen Zeitraum holen
  ORDER BY TIMESTAMP ASC
  LIMIT 1 
)

UNION

-- Kurve mit letztem Wert der Kurve (nicht des gewählten Zeitraums) bis zum aktuellen Zeitpunkt erweitern
(
SELECT
    UNIX_TIMESTAMP(NOW()) as time_sec,
    VALUE as value,
    "Wohnzimmer" as metric
  FROM history
  WHERE READING = "Heizkreis_Wohnzimmer" AND DEVICE = "Heizung"
  ORDER BY TIMESTAMP DESC
  LIMIT 1
)

ORDER BY time_sec ASC

Da hier nur 3 weitere Werte zusätzlich zur eigentlichen Kurve selektiert werden, spürt man den Unterschied von der Ladezeit nicht.

Im angehängten Screenshot sieht man dann oben die Originalkurve und unten die korrigierte Kurve ohne Plotabriss.
Da der angezeigte Zeitraum in die Zukunft reicht, wird die Kurve bis zum aktuellen Zeitpukt und nicht bis zum Diagrammende gezeichnet.
(Eingestellter Zeitraum war der aktuelle Tag und der Screenshot wurde 12:15 aufgenommen.)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fischit am 12 Oktober 2017, 15:28:35

Für TabletUI könnten die Embed Möglichkeiten hilfreich sein:
http://docs.grafana.org/reference/sharing/
Ich weiß nur nicht wie das dann mit der Wahl des Zeitraums ist, wenn man keine Topbar von Grafana hat.
Müsste man mal testen.

Ich binde mir die Bilder über
http://192.168.2.111:3000/render/dashboard-solo/db/luftdaten?orgId=2&from=now%2Fd&to=now&panelId=1&width=750&height=300&tz=UTC%2B02%3A00ein.

Den Teil der URL from=now%2Fd&to=now kann man individuell machen.
Standardmäßig sind das fixe Zeitpunkte (wie im Beispiel mit 1507705926296). Mit "Now" etc. kann man das dynamisch gestalten und so einen alternativen, dynamischen Plot im FHEM darstellen.

Beispiel:
- from=now%2Fd&to=now: Today so far
- from=now-30d&to=now: Die letzten 30 Tage
- from=now-395d&to=now-365d: Die letzten 30 Tage vor einem Jahr (Temperaturvergleich zum Vorjahr z.B.)

Grüße
Nils
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 12 Oktober 2017, 15:29:18
Hab jetzt unter Hinweise zu MySQL Selects in Grafana in Post 2 mal ein paar Basics zusammengefasst,
was Grafana eigentlich als Rückgabewerte von dem MySQL Select erwartet um das Diagramm zeichnen zu können.

Außerdem die Erklärung wie man dem Select die anzuzeigende Zeitspanne übergibt um nur wirklich benötigten Daten zu laden.

P.S. Ich hoffe ich störe hier keinen mit meinem Monolog. ;D
Aber ich dachte wenn ich mir das als MySQL Noob schon alles hart ergooglen erarbeiten muss,
kann ich es ja wenigstens für die Nachwelt festhalten...

edit: Danke für die Info fischit. :)
Gerade gesehen, dass man die Parameter dafür in der URL eines Dashboards sieht, wenn man den zeitraum umstellt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 16 Oktober 2017, 15:53:38
Beispiel: Bereich zwischen 2 Kurven füllen statt bis zur Nulllinie

Ein Feature, das mit anderen Charting Lösungen in FHEM meines Wissens nach bisher nicht ging (man korrigiere mich gerne ;)).
Ich habe hier ein Temperaturchart, welches über das ganze Jahr hinweg die Tagesmitteltemperatur anzeigt.

Da diese allein aber noch nicht so wirklich aussagekräftig ist, wird dahinter noch der Bereich zwischen Min/Max Temperatur des Tages angezeigt.
Gerade die letzten Tage haben wir ja eine Hohe Max-Temperatur aber durch die kalten Nächte dennoch keine wirklich hohen Durchschnittstemperaturen.

Dazu habe ich 3 Kurven angelegt.

Tagesmitteltemperatur:
SELECT
  UNIX_TIMESTAMP((TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, double)) as value,
  "Tagesdurchschnitt" as metric
FROM (SELECT TIMESTAMP, VALUE
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H')
ORDER BY TIMESTAMP ) h
GROUP BY UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d'))
Hier werden erst nach Zeit sortiert alle Temperaturwerte eingelesen und nach Stunden gruppiert. Dadurch wird jeweils der erste Wert pro Stunde selektiert.
Diese Werte werden dann nochmal nach Tagen gruppiert, und aus allen Einzelwerten einer Tagesgruppe wird der Durchschnitt gebildet.

Damit versuche ich möglichst nahe an die Definition aus Wikipedia zu kommen, nach der aus allen Stundenwerten von 00 bis 23 Uhr die Tagesmitteltemperatur gebildet wird:
https://de.wikipedia.org/wiki/Tagesmitteltemperatur

Tages-Maxwerte:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  MAX(CONVERT(VALUE, double)) as value,
  "Min/Max" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d'))

Tages-Minwerte:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  MIN(CONVERT(VALUE, double)) as value,
  "Min/Max Baseline" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d'))

Unter Display -> Series Overrides wird nun folgendes eingestellt:
- Kurve Min/Max -> Fill below to : Min/Max BaseLine (Sollte automatisch Lines: False für beide Linien als Override hinzufügen, so dass nur die Füllung und keine Linien zu sehen sind
- Min/Max Baseline -> Legend: false, damit man als Legende nur Tagesmittelwert und Min/Max sieht.

Als festen Anzeigezeitraum für das Diagram habe ich dann noch 1 Jahr eingestellt.

Für den Screenshot hab ich jetzt aber kurz auf 1 Monat umgestellt, da wir erst umgezogen sind und das Diagramm sonst so leer aussieht.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fischit am 16 Oktober 2017, 16:32:53
Hi Thyraz,

ich finds sehr geil was du hier ausarbeitest und als fertige Lösung zur Verfügung stellst.
Ich hab selber sehr wenig Ahnung von SQL aber damit kann ich endlich die Daten in einer schönen Weise grafisch darstellen.

Auch kommen so gerade neue Ideen und Dinge die ich umsetzen will :)

Von daher führ gerne deinen "Monolog" weiter - ich lese fleißig mit.

Grüße
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 30 Oktober 2017, 19:27:40
Hallo

zu diesem Punkt
Beispiel: Kurve ausdünnen bei zu vielen Messwerten (lange Ladezeiten / langsamer Seitenaufbau)

hätte ich eine Idee, welche ich leider nicht umsetzen kann:
Wäre es möglich, nur Messpunkte nach einer Wertänderung anzuzeigen, anstatt einen Durchschnitt zu berechnen?
Hintergrund ist, wenn ich mein Raumklima übers Jahr darstellen will, werden die rechtecke der Ventilöffnungen komplett verfälscht.

Ich möchte DBLog nicht so umstellen, dass nur geänderte Werte geloggt werden.


Grüße
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 02 November 2017, 12:25:55
@ sku, bin wie gesagt auch MySQL Noob. ;)
Hat daher ein wenig Knobeln und (und Googlen :P) gebraucht, hab aber eine Lösung gefunden denke ich.

SELECT
  time_sec,
  value,
  "Kurvenbezeichnung" as metric
  FROM (
    SELECT
      UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
      VALUE as value,
      IF (@OLDVAL <> VALUE AND @OLDVAL := VALUE, 1, 0) as different
    FROM history
    JOIN (SELECT @OLDVAL := '-1') AS var
    WHERE READING="temperature" AND DEVICE="Thermometer" AND $__timeFilter(TIMESTAMP)
    ORDER BY TIMESTAMP
  ) t
WHERE different = 1
ORDER BY time_sec

Versuche das Ganze mal zu erklären.
Fangen wir mir dem inneren Select an:

Hier wird mit dem Join erstmal eine Variable "OldVal" belegt.
Dann werden alle Zeitstempel und zugehörige Werte für unsere Device/Readings Kombination geholt.

Zusätzlich wird in den zurückgelieferten Daten eine weitere Spalte "different" erzeugt.
Zuerst wird verglichen ob sich der aktuelle Wert von dem aus dem letzten Eintrag unterscheidet, dann der aktuelle Wert als Vergleichswert für die nächste Zeile gespeichert.

Die so erstellte Tabelle dient dann als Quelle für einen weiteren SELECT Aufruf,
welcher sich nur die Einträge holt bei denen die Spalte "different" eine 1 beinhaltet.

Evtl bietet sich zur Darstellung dann eine Staircase Linie an.

P.S. um mit sowas rumzuspielen bietet sich SQL Fiddle an.
Damit kann man sehr schön testen wie sich Änderungen am Select Query auswirken.

Habe so zuerst mal das innere SELECT aufgebaut:
http://sqlfiddle.com/#!9/22fb14/25

und dann das Äußere hinzugefügt:
http://sqlfiddle.com/#!9/22fb14/24

So sieht man an der resultierenden Tabelle sehr gut was aus dem Query zurückkommt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 02 November 2017, 21:02:36
Vielen Dank für deine Antwort!
Ich kam mit Mysql noch nie zusammen... Sqlfiddle hatte ich bei meiner stundenlangen Suche gefunden, aber ich konnt einfach nix sinnvolles zusammenbauen.

Dein Code funktioniert! Danke!

Eine Sache wollt ich noch verbessern, bin aber wieder gescheitert:
Ich habe versucht deinen Code auch so zu ergänzen, dass "off" durch "0.0" ersetzt wird. Ersetzen funktioniert, die Zeilen mit 0.0 werden angezeigt, wenn ich die vorletzte auskommentiere. Jedoch wird das aus irgendeinem Grund beim Vergleichen nicht als geänderter Wert markiert...
Die Änderung von off auf 0 hat den kosmetischen Hintergrund, dass den Sommer über die desired-temp nicht als Strich durch die Grafik gezogen wird. Damit ich sehe, wann aufgehört wurde, eine desired-temp zu setzen.
Kannst du mir bitte nochmal helfen?

Hier meine Bastelei:
http://sqlfiddle.com/#!9/a41a9/18 (http://sqlfiddle.com/#!9/a41a9/18)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 02 November 2017, 22:41:20
Mir fiel eben auf, es funktioniert leider nicht bei Ventilpositionen, der Wert 0 wird weg gelassen... Habe auch einen screenshot angehängt.
http://sqlfiddle.com/#!9/0dda55/1 (http://sqlfiddle.com/#!9/0dda55/1)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 03 November 2017, 09:23:42
Ich glaub ich hab den Fehler warum es manchmal nicht geht.
Um die Variable OldVal bei jedem Durchlauf auf den neuen Wert upzudaten, hab ich die Zuweisung ja in das IF-Statement mit reingetrickst.

Bin davon ausgegangen, dass der Rückgabewert der Zuweisung immer als "true" ausgewertet wird.
Bei Nullen oder Strings scheint dies aber nicht der Fall zu sein.
Habe die Zuweisung nun nochmal in ein IF gekapselt, welches immer eine 1 zurückliefert.

Damit scheinen beide Fälle zu funktionieren:
http://sqlfiddle.com/#!9/3df417/5
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 03 November 2017, 10:42:20
Funktioniert, DANKE nochmal!

Hier nochmal zur Dokumentation der Code, mit Verbesserungen:
* Zeile 7 timestamp für Grafana, wie Thyraz bereits mal geschrieben hat
* Zeile 12 um " AND $__timeFilter(TIMESTAMP)" ergänzt, damit nicht die komplette DB durchsucht wird
SELECT
  time_sec,
  CONVERT(VALUE, double) as value,
  "Kurvenbezeichnung" as metric
  FROM (
    SELECT
      UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
      IF (VALUE = "off", 0, VALUE) as value,
      IF (STRCMP(@OLDVAL, VALUE) != 0 AND IF(@OLDVAL := VALUE, 1, 1), 1, 0) as different
    FROM history
    JOIN (SELECT @OLDVAL := '-1') AS var
    WHERE READING="temperature" AND DEVICE="Thermometer" AND $__timeFilter(TIMESTAMP)
    ORDER BY TIMESTAMP
  ) t
WHERE different = 1
ORDER BY time_sec

Und einen Screenshot, wie so ein Plot "Last 1 year" ausschaut, hab ich auch angehängt.

EDIT: ich habe im Code die 3. Zeile angepasst, damit sie mit Grafana ab Version 5.1 funktioniert. Vorher stand
value,jetzt steht
CONVERT(VALUE, double) as value,
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 07 November 2017, 09:52:22
@sku

Dir auch mein Dank an für deine letzte Fragestellung.
Erst dadurch hab ich Variablen in MySQL entdeckt. ;)

Hab dadurch nun hinbekommen Zeitwerte zwischen einzelnen Timestamps berechnen zu lassen und somit z.B. Summen-On und Summen-Off Zeiten pro Tag oder Monat für Geräte direkt im MySQL Select zu berechnen. :)

Mit sowas lässt sich dann z.B. Betriebsstunden pro Monat zählen, oder die summierte Heizzeit eines Fußbodenheizkreises pro Tag.
Bisher hab ich dafür das Statistics Modul in FHEM laufen lassen um mir das als Duration pro Tag und Duration pro Monat zusätzlich zum eigentlichen On/Off Wert in die DB loggen zu lassen.

Das mag nicht jeden stören, es verhindert aber zumindest das grafische Auswerten von Alt-Daten bevor man auf die Idee kam so ein Chart zu benötigen.
(Davor hat man wahrscheinlich eher kein Statistics Modul dafür laufen lassen.)
In Zeiten von Big Data möchte man eben einfach sagen können "Ich hab hier einen Haufen Daten aus den letzten Jahren, lass uns das mal auswerten".

Ein Beispiel dafür folgt bald...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: screetch82 am 08 November 2017, 16:13:02
Hi

das sieht echt super aus. Damit kann ich ja auch nicht FHEM datenbanken visualisieren und als png Bild in FHEM oder als HTML Webseite anzeigen richtig?

(Hintergrund: Ich habe eine Weishaupt solarthermie anlage. Diese logt ca 15 Parameter und Temperaturen im CSV format auf eine Wifi SD Karte. Per Cronjob kopiere
diese von der SD auf den Raspi und dann in ein MariaDB auf der NAS.  Die Werte möchte ich nun auslesen und die Wärmemenge pro Stunde, Tag, Woche, Monat
berechnen und als Verlausdiagramm ausgeben ohne den Umweg zu gehen die Werte in FHEM als Readings zu importieren und nochmal neu mit DBLog zu schreiben)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 09 November 2017, 06:57:43
Klaro,

wo die Daten herkommen ist ja erstmal egal.
Du brauchst in der DB eben Zeitstempel/Werte Paare welche du dir in Grafana ziehen kannst.

Embedding Optionen zum Einbinden in FHEM wurden auf der ersten Seite auch schon angesprochen und glaube auch verlinkt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 09 November 2017, 09:57:36
Ich habe bei der Installation Probleme, kann mir jemand helfen? Ich habe aus svn die Daten geholt und dann bei ci build.sh aufgerufen. Das ergab bei meinem RPi3
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 crossbuild-essential-armhf : Hängt ab von: gcc-arm-linux-gnueabihf (>= 4.9.1-1) soll aber nicht installiert werden
                              Hängt ab von: g++-arm-linux-gnueabihf (>= 4.9.1-1) soll aber nicht installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.
+ CC=arm-linux-gnueabihf-gcc
+ CXX=arm-linux-gnueabihf-g++
+ install_phjs
+ PHJSURL=https://github.com/fg2it/phantomjs-on-raspberry/releases/download/v2.1.1-wheezy-jessie
+ PHJS=/tmp/armv7/phantomjs
+ mkdir -p /tmp/armv7
+ curl -sSL https://github.com/fg2it/phantomjs-on-raspberry/releases/download/v2.1.1-wheezy-jessie/phantomjs -o /tmp/armv7/phantomjs
Wie komme ich da weiter?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 09 November 2017, 12:03:37
Hast du denn die Abhängigkeiten die er dir anzeigt per apt-get zu installieren versucht?

Ansonsten da du einen Pi hast: Gibt es einen Grund es selbst kompilieren zu wollen?
In Post #2 ist ein Link zu fertigen Packages für den Pi.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 09 November 2017, 17:09:24
Ich finde die Seite https://bintray.com/fg2it/deb/grafana-on-raspberry/v4.6.1#files/main%2Fg (https://bintray.com/fg2it/deb/grafana-on-raspberry/v4.6.1#files/main%2Fg) etc total unübersichtlich. Ich "sehe" da keine ausführbaren Dateien...

PS Ich bin mal präziser. Einmal heißt es "No direct downloads selected for this package." Dann steht "Files" als Menüpunkt und da sind eine Menge files, aber anscheinend keine ausführbaren. Und so geht das weiter.

<edit> gelöst. So geht das
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1.linux-x64.tar.gz
tar -zxvf grafana-4.6.1.linux-x64.tar.gz
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 09 November 2017, 18:05:08
Zu früh gefreut
$ sudo ./grafana-server
./grafana-server: 8: ./grafana-server: Syntax error: word unexpected (expecting ")")
$ ./grafana-server
-bash: ./grafana-server: Kann die Binärdatei nicht ausführen: Fehler im Format der Programmdatei
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 09 November 2017, 20:03:49
Auf der Bintray Seite war ich noch nie, wie kamst du denn da hin?

Auf der Github Seite aus Post #2 findet man unter Releases direkt Downloads.
Evtl. hätte ich direkt auf diese Unterseite verlinken sollen.
https://github.com/fg2it/grafana-on-raspberry/releases

Ich habe dort direkt das .deb File genommen und installiert.

Edit: Hab Post #2 entsprechend angepasst.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 10 November 2017, 09:07:28
Danke, läuft bei mir.  Ich habe jetzt die ausführbare Datei installiert. Wie kann ich dafür sorgen, dass sie bei Systemstart ausgeführt wird? Auf http://docs.grafana.org/installation/debian/ (http://docs.grafana.org/installation/debian/) steht das nur für die kompilierten, aber ganz unten finde ich nichts.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 10 November 2017, 10:30:17
Da bei dir auch Jessie läuft laut Signatur,
sollte man das per systemctl aktivieren können.

Einmalig starten sollte denke ich über
sudo systemctl start grafana
gehen.

Dauerhaft bei jedem booten:
sudo systemctl enable grafana

edit:
Auf der von dir verlinkten Seite heißt der service nicht Grafana sondern grafana-server.service
Wäre dann
sudo systemctl enable grafana-server.service
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 10 November 2017, 10:50:38
Kannst Du mir mal Deine grafana-server.service zeigen, ich scheine die nicht zu haben:
sudo systemctl enable grafana-server.service
Failed to execute operation: No such file or directory
pi@FHEM:/etc/phpmyadmin $ sudo systemctl enable grafana.service
Failed to execute operation: No such file or directory
pi@FHEM:/etc/phpmyadmin $ sudo systemctl start grafana
Failed to start grafana.service: Unit grafana.service failed to load: No such file or directory.
pi@FHEM:/etc/phpmyadmin $ sudo systemctl start grafana-server
Failed to start grafana-server.service: Unit grafana-server.service failed to load: No such file or directory.
pi@FHEM:/etc/phpmyadmin $ sudo service grafana-server status
● grafana-server.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

(Grafana selbst lässt sich mit der Hand starten.)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 10 November 2017, 12:03:20
Sehr komische Sache, bei mir wurde die automatisch mit dem .deb File mitinstalliert.
Hab die Datei mal angehängt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: screetch82 am 11 November 2017, 07:40:02
Hi
ich habe 3 tabellen in einer mysql datenbank. current und history für fhem dblog und eine welche von einem externen datenlogger informationen bezieht. Diese haben leider jedoch  keinen timesamp sondern eine spalte für datum und eine für zeit.

Wie bekomme ich diese entweder automatisch in die fhem history gelinkt oder per grafana in ein dashboard geladen? dann koennt ich in Fhem
einfach die Grafik einladen.

Im Anhang ein screenshot wie die Tabelle aussieht. (diese wird über ein ein skript automatisch aus CSV Datein befüllt.)

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SabineT am 14 November 2017, 08:50:24
P.S. Ich hoffe ich störe hier keinen mit meinem Monolog. ;D
Aber ich dachte wenn ich mir das als MySQL Noob schon alles hart ergooglen erarbeiten muss,
kann ich es ja wenigstens für die Nachwelt festhalten...
Vielleicht kannst du dafür ja mal eine eigene Seite im FHEM-Wiki erstellen ;-)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 14 November 2017, 10:29:21
Hi Thyraz,

ich wollte mich nur kurz für den Tipp und die gute Beschreibung bedanken - das ist EXAKT genau das was ich seit nunmehr 2 Jahren gesucht habe und übertrifft meine persönlichen Erwartungen noch um Längen. Installation und Config super simpel und die Optik / UI ein wahrer Traum! Ich habe daher nun angefangen aus FHEMWEB alle Charts rauszuwerfen und in Grafana umzusetzen.

Peter
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 November 2017, 13:46:07
Ich fange jetzt mal mit einem Wiki-text an, brauche aber sicher Hilfe.

Siehe https://wiki.fhem.de/wiki/Grafana
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 November 2017, 15:32:41
Ich binde mir die Bilder über
http://192.168.2.111:3000/render/dashboard-solo/db/luftdaten?orgId=2&from=now%2Fd&to=now&panelId=1&width=750&height=300&tz=UTC%2B02%3A00ein.
Aber wie lädst Du das dann in FHEM?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 14 November 2017, 16:12:38
Für FHEMWEB wäre wahrscheinlich Weblink eine Lösung.
In FTUI gäbe es das Image Widget
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fischit am 14 November 2017, 17:39:36
Aber wie lädst Du das dann in FHEM?

Richtig - guckst du:
defmod PNG_luftdaten2 weblink image http://192.168.2.111:3000/render/dashboard-solo/db/luftdaten?orgId=2&from=now%2Fd&to=now&panelId=1&width=750&height=300&tz=UTC%2B02%3A00
attr PNG_luftdaten2 htmlattr width="750" height="300" frameborder="0" title="Aktueller Verlauf"
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: screetch82 am 14 November 2017, 17:42:45
Hi

ich mache das mit:

define Grafana_temp weblink iframe http://192.168.178.35:3000/dashboard-solo/db/temp?panelId=1&orgId=1&from=now%2Fd&to=now
attr Grafana_temp htmlattr width="100%" height="300" frameborder="0" marginheight="0" marginwidth="0"
attr Grafana_temp room Grafana
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 November 2017, 21:35:08
Danke, alles im Wiki eingetragen. Wenn noch Wünsche bestehen, was ich da schreiben solle - bitte los, ich kann aber nicht sofortige Umsetzung garantieren.

Ich habe eine darstellerische Frage. Das ist ja ein tolles Tool, und schnell. Aber kann ich auch in ein Diagramm DREI Größen eintragen, die jeweils unterschiedliche Werte haben? Hintergrund ist folgender. Ich möchte meinen RPi überwachen und dessen Temperatur (30-60), Load average (0 bis 1) und die Frequenz (600 oder 1250) anzeigen.  Ich kriege zwei verschiedene Achsen hin, aber beides? Ich könnte höchstens die Frequenz "umrechnen" (zB auf Load Average - also 600 entspricht 0 und 1250 entspricht 1) und so zusammen mit diesen Werten anzeigen, ist das der einzige Weg?

PS So was scheint nicht zu gehen
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  (CONVERT(VALUE, DOUBLE)-600)/650 as value,
   "Frequenz" as metric
FROM history
WHERE  READING="cpu_freq" AND DEVICE="sysmon" and $__timeFilter(TIMESTAMP)
ORDER BY timestamp ASC
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 14 November 2017, 22:28:30
andies, so wie ich das sehe, ist das graph-panel tatsächlich auf 2 Achsen limitiert und das der einzige Weg.

Das Potential dieses Tools ist insgesamt dennoch gewaltig. Zumal es per iframe auch super mit FHEMWEB harmoniert. Ich habe grad mal das Carpet-Plot (Panel-Plugin) mit diversen Temperatursensoren ausprobiert 8) ... Ladezeit für so ein äußerst interessantes Plot für ein ganzes Jahr (!!) mit stundenweisem Average liegt bei < 15 Sekunden!! (Intel NUC). Jetzt weiß ich endlich wozu ich über all die Jahre soviele Daten weggeloggt habe ohne sie in FHEM anzuzeigen (weils nicht gescheit ging).

Discrete Plugin geht auch mit kleinem Trick (man muss die String-Werte aus den readings erst wieder per SQL Select case in Zahlen Mappen und im Plugin wieder zurück).

Also dieses Tool verdoppelt schlagartig  den Nutzen von FHEM für mich - ohne zu übertreiben.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sash.sc am 15 November 2017, 07:05:53
Mal ne kurze zwischen Frage.
Ist dblog Voraussetzung? Oder geht es auch mit den Standart logs?

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 15 November 2017, 11:54:57
Ladezeit für so ein äußerst interessantes Plot für ein ganzes Jahr (!!) mit stundenweisem Average liegt bei < 15 Sekunden!! (Intel NUC).

Hast du schon die von mir genutzte (und hauptsächlich von Thyraz entwickelte, danke nochmal!) Methode, welche in #19 beschrieben ist, probiert? Ein Jahr von 4 Räumen läd bei mir in unter 30sec, Screenshot von einem Raum ist in #19 angehängt. Gefällt mir besser als ein Durchschnittswert, vorallem bei Ventilpositionen.
Für Batteriespannungen nutze ich die Methode ebenfalls, 4 Jahre von 8 Geräten ebenfalls in einigen Sekunden erledigt.
Intel i7-4771, MariaDB auf SSD
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 15 November 2017, 20:44:16
Huhu sku,

jo das probier ich gern mal aus, hab aber bislang nirgends Perfomanceprobleme verspürt, im Gegenteil.

Hier mal das besagte Carpet-Plot, Ladezeit 13 Sekunden auf NUC5i5 bei 2 Jahren und Logging alle 3 Minuten. Das Plugin ist echt nützlich für diverse Statistiken. Hier sieht man prima wann die und wie heiß Sommer in diesem und letzten Jahr waren ... und auch wie oft mein FHEM-Server eine Downtime hatte, inkl. Totalausfall von DBLOG über ein paar Wochen Anfang des Jahres ^^.

Verwendeter SQL-Code dazu (wie beim normalen Kurvenplot):

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Außentemperatur" as metric
FROM history
WHERE READING="temperature" AND DEVICE="wohnung.aussenthermometer" AND $__timeFilter(TIMESTAMP)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 15 November 2017, 20:57:17
Hier noch der Trick für das "Discrete"-Plugin (umgeht einen ungefixten Bug bei der Auswertung von Strings, wie sie FHEM in Verbindung mit DBLog aber normalerweise produziert):

SQL:

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  "Anwesenheit" as metric,
      case
        when VALUE = 'Ja' then 3
        when VALUE = 'Möglich' then 2
        when VALUE = 'Unbekannt' then 1
        when VALUE = 'Nein' then 0
        when VALUE is null then 0
    end as value
FROM history
WHERE READING="state" AND DEVICE="bad.oben.anwesenheit" AND $__timeFilter(TIMESTAMP)

Im Plugin dann im Tab "Mappings" entsprechende Mappings zurück anlegen ( 3 auf "Ja", 2 auf "Möglich") usw.

Ergebnis siehe Anhang.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: screetch82 am 16 November 2017, 12:55:46
hier mal zwei Beispiele für ein Dashboard für FHEM und dazu eins für eine Solarthermieanlage von Weishaupt (Daten sind in einer von FHEM separaten DB).
Grafana vereint beide Daten wunderbar, sodass ich mich nicht mit dem Mühsamen import von externen CSV logs kümmern muss.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: f-zappa am 16 November 2017, 23:55:24
Moin,
zuerst mal vielen Dank dafür, dass Du uns auf Grafana aufmerksam gemacht hast und schon so viel FHEM-spezifisches beschrieben hast. Ich habe inzwischen auch schon ein wenig herumgespielt, die Installation und Implementation geht ja wirklich umwerfend fix. Bei deiner Lösung zu "Plottabriss vermeiden" war ich aber etwas unglücklich damit, dass die eigentliche Abfrage vier mal redundant da steht. Sobald man etwas ändert, muss man die Änderung an verschiedenen Stellen vornehmen.

- Den letzte Datenpunkt vor dem angezeigten Zeitraum
- Den ersten Datenpunkt nach dem angezeigten Zeitraum (Bei einem Anzeigezeitraum bis zur aktuellen Zeit, oder bis in die Zukunft wird hier eben kein Datenpunkt gefunden)

Ich mache das so, indem ich in Subqueries zuerst das Zeitintervall erweitere und die Werte dann aus diesem erweiterten Intervall herausselektiere:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Ventil" as metric
FROM history
WHERE READING="actuator" AND DEVICE="o2.rt.spielzimmer_heizung"
AND TIMESTAMP BETWEEN
    IFNULL((SELECT max(TIMESTAMP) from history where reading="actuator" and device="o2.rt.spielzimmer_heizung" and TIMESTAMP <= $__timeFrom()),$__timeFrom())
and IFNULL((SELECT min(TIMESTAMP) from history where reading="actuator" and device="o2.rt.spielzimmer_heizung" and TIMESTAMP >= $__timeTo()),$__timeTo() )

Schön wäre jetzt noch, wenn man auch die Werte für Reading und Device nur noch  an einer Stelle angeben müsste. Allerdings mag Grafana nicht, wenn ich vorab ein "SET @READING=blabla;" setze - man muss sich wohl auf ein Statement beschränken :( Vielleicht hat jemand dafür eine andere Idee? Mein SQL ist dürftig ...

Zitat
- Einen zusätzlichen virtuellen (nicht in MySQL vorhandenen) Datenpunkt, der den letzten Zustand in der Datenbank nimmt und ihn mit der aktuellen Zeit kombiniert.
  Dadurch wird der Plot auch nach dem letzten Wert in der DB noch bis zum aktuellen Zeitpunkt weitergezeichnet.

Den virtuellen Punkt kann meine Lösung leider nicht liefern. Das wäre noch das Zückerchen obendrauf. Allerdings  kann ich darauf noch am ehesten verzichten, weil da ja klar ist, dass der letzte Wert weiter gilt ...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 17 November 2017, 07:58:33
f-zappa, das müsste man recht easy mit den grafana-templates lösen können, die Variablen in den Querys ermöglichen:

http://docs.grafana.org/reference/templating/

Du kannst dann sogar aussuchen, ob man die Variable direkt über ein dropdown in der GUI belegen kann oder nicht. Ist nicht ganz das was du tun willst aber vielleich sogar noch vielseitiger!?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 17 November 2017, 11:15:34
Beispiel: Bar Chart mit summierten, täglichen Betriebsstunden ohne Statistics Modul.

Jetzt mal ein etwas komplexerer Request.  :P

Anstatt Duration Values von dem  Statistics Modul loggen zu lassen,
sollen hier Summen-Zeiten direkt im MySQL Select berechnet werden.

Man erspart sich so zusätzliche Hilfswerte in der Datenbank.
Das Ganze ist natürlich weit rechenintensiver als fertige Werte aus der DB zu laden.

Als Beispiel dient ein Heizkreis meiner Fußbodenheizung, bei welchem ich sehen will wie lange pro Tag das Ventil geöffnet/geschlossen ist.
Das Ventil loggt bei jedem Schaltvorgang die Ventilstellung als 0 oder 1.
Im Bild unten im Anhang kann man sich das Ergebnis schon mal anschauen.

Nähern wir uns dem Problem Stück für Stück:

Hauptproblem ist die Summe der Zeiten zwischen zwei Einträgen direkt im Query berechnen zu lassen.
Wir verwenden hierfür Variablen um uns immer den letzten Wert zu merken und so die Differenz zu berechnen.

Zitat
SELECT
  TIMESTAMP as time_sec,
  VALUE as value,
  IF (IF (@ONTIME := TIMESTAMPDIFF(SECOND, TIMESTAMP, @OLDTIME), 1, 1) AND IF (@OLDTIME := TIMESTAMP, 1, 1), @ONTIME , 0) as on_time
FROM history
JOIN (SELECT @OLDTIME := NOW()) AS var
WHERE READING="Heizkreis_Schlafzimmer" AND DEVICE="Heizung" AND $__timeFilter(TIMESTAMP)
ORDER BY TIMESTAMP DESC
Der Trick hier ist, dass MySQL über jeden gefundenen Eintrag looped um die zurückgelieferte Tabelle mit den angeforderten time_sec, value und on_time Werten zu füllen.
Und zwar erst nachdem das ORDER BY TIMESTAMP DESC ausgeführt wurde.
Dadurch laufen wir rückwarts durch die Zeit.

Das liefert uns eine Tabelle, welche zusätzlich noch eine Spalte on_time hat.
Diese beinhaltet die Zeitspanne wie lang das jeweilige Signal aktiv geblieben ist bis der nächste Zeitstempel / Zustand eintritt.

Nehmen wir dieses Ergebnis nun als Datenquelle für einen weiteren Select um nur die Zeitspannen für den eingeschalteten (1) Zustand pro Tag zu addieren:
Zitat
SELECT
  DATE_FORMAT(time_sec, '%Y-%m-%d 00:00:00')) as time_sec,
  SUM(on_time) / 3600 as value
FROM (
   <hier wird das vorherige SELECT Statement eingefügt>
WHERE VALUE = "1"
GROUP by DATE_FORMAT(time_sec, '%Y-%m-%d')
- Gruppieren der Werte nach dem Tag an dem sie aufgetreten sind
- Nur Zeitspannen selektieren bei denen das Ventil an (1) war
- Summe der Zeitspannen pro Tag bilden.

Damit wäre die Aufgabe an sich erfüllt und wir könnten unser Diagramm so einsetzen. :)

Es sind dann aber doch noch 2 Fehler drin:
- Bisher werden Zeitspannen z.B. von 23:55 bis 0:05 komplett dem alten Tag angerechnet, statt 5min alter Tag / 5min neuer Tag. Wir müssen also vor dem Berechnen der Zeitdifferenzen für jeden Tag noch einen virtuellen Zeitstempel mit dem jeweils aktuellen Value bei 0:00 einfügen.
- Damit erhalten wir am Anfang eines jeden Tages einen sauberen Wert. Was noch fehlt ist ein letzter Eintrag für den letzten Tag des angezeigten Zeitraums. Wenn der Zeitraum am aktuellen Tag endet verlängern wir bis NOW(), sonst bis 0:00Uhr des Folgetages.

Im Netz habe ich ein nettes SELECT Statement gefunden, welches uns für 1970 bis 2200 für jeden Tag einen Datumsstempel liefert.
So sieht dann unsere Lösung für die 2 verbleibenden Probleme aus:
Zitat
(
   SELECT
     gen_date
   FROM
     (SELECT ADDDATE('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date FROM
       (SELECT 0 t0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
       (SELECT 0 t1 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
       (SELECT 0 t2 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
       (SELECT 0 t3 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3,
       (SELECT 0 t4 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4
     ) v
   WHERE $__timeFilter(gen_date)
)
UNION
(
   SELECT IF (DATE($__timeTo()) = CURRENT_DATE(), NOW(), DATE_ADD(DATE($__timeTo(), INTERVAL 1 DAY)) as gen_date
)


Wenn wir das dann alles zusammenfügen, kommt Folgendes heraus:
(Das "geteilt durch 86400" und "mal 100" rechnet die Sekundenwerte dann in Prozent um.)
Zitat
SELECT
  UNIX_TIMESTAMP(DATE_FORMAT(time_sec, '%Y-%m-%d 00:00:00')) as time_sec,
  (SUM(on_time) / 86400) * 100 as value,
  "Schlafzimmer" as metric
FROM (
  # -- Differenz zwischen den Zeitwerten berechnen
  SELECT
    time_sec,
    VALUE,
    IF (IF (@ONTIME := TIMESTAMPDIFF(SECOND, time_sec, @OLDTIME), 1, 1) AND IF (@OLDTIME := time_sec, 1, 1) AND IF (@ONTIME IS NULL, 0,1), @ONTIME , 0) as on_time
  FROM (
    # -- Eigentliche Abfrage der Werte aus der DB --
    SELECT
      TIMESTAMP as time_sec,
      VALUE
    FROM history
    WHERE READING="Heizkreis_Schlafzimmer" AND DEVICE="Heizung" AND $__timeFilter(TIMESTAMP)
 
    UNION
 
    # -- Jeweils aktuell gültiger Wert für alle virtuellen Zeitstempel bestimmen --
    SELECT
      time_sec,
      ( SELECT VALUE
        FROM history
        WHERE READING="Heizkreis_Schlafzimmer" AND DEVICE="Heizung" AND TIMESTAMP <= time_sec
        ORDER BY TIMESTAMP DESC
        LIMIT 1
      ) as VALUE
    FROM (
      # -- Virtuelle Zeitstempel zu Beginn jeden Tages erstellen --
      SELECT
        time_sec
      FROM
        (SELECT ADDDATE('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) time_sec FROM
          (SELECT 0 t0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
          (SELECT 0 t1 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
          (SELECT 0 t2 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
          (SELECT 0 t3 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3,
          (SELECT 0 t4 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4
        ) a
      WHERE $__timeFilter(time_sec)
   
      UNION
   
        # -- Virtuellen Zeitstempel für Endpunkt hinzufügen --
      SELECT IF (DATE($__timeTo()) = CURRENT_DATE(), NOW(), DATE_ADD(DATE($__timeTo()), INTERVAL 1 DAY)) as time_sec
    ) b
    ORDER BY time_sec DESC
  ) c
  JOIN (SELECT @OLDTIME := NOW()) AS var
) d
WHERE VALUE = "1"
GROUP by DATE(time_sec)
ORDER BY time_sec

Fazit: Die Vorlauftemperatur ist bei uns in der Übergangszeit eigentlich viel zu hoch.
Aber das kann man im Mehrfamilienhaus halt nicht immer für sich selbst optimieren. ;)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 17 November 2017, 14:47:53
Moin,
zuerst mal vielen Dank dafür, dass Du uns auf Grafana aufmerksam gemacht hast und schon so viel FHEM-spezifisches beschrieben hast. Ich habe inzwischen auch schon ein wenig herumgespielt, die Installation und Implementation geht ja wirklich umwerfend fix. Bei deiner Lösung zu "Plottabriss vermeiden" war ich aber etwas unglücklich damit, dass die eigentliche Abfrage vier mal redundant da steht. Sobald man etwas ändert, muss man die Änderung an verschiedenen Stellen vornehmen.

...

Schön wäre jetzt noch, wenn man auch die Werte für Reading und Device nur noch  an einer Stelle angeben müsste. Allerdings mag Grafana nicht, wenn ich vorab ein "SET @READING=blabla;" setze - man muss sich wohl auf ein Statement beschränken :( Vielleicht hat jemand dafür eine andere Idee? Mein SQL ist dürftig ...


Ich habe da jetzt die Lösung, wie man Grafana die MySQL-Variablen unterjubeln kann - und man gleichzeitig die Template-Variablen von Grafana verwenden kann ^^ :

(
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  @label as metric
FROM history, ( SELECT @reading:="humidity", @device:=CONCAT([[room]],".wandthermostat_Weather"), @label:="Luftfeuchtigkeit") AS var
WHERE READING=@reading AND DEVICE=@device AND $__timeFilter(TIMESTAMP)
)

UNION

-- Kurve am Anfang um den letzten Wert vor dem aktuellen Zeitraum erweitern
(
  SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    @label as metric
  FROM history
  WHERE READING=@reading AND DEVICE=@device AND TIMESTAMP <= $__timeFrom() -- Letzter Wert vor Anfangszeit des aktuellen Zeitraums
  ORDER BY TIMESTAMP DESC
  LIMIT 1   
)

UNION

-- Kurve mit nächstem Wert nach dem aktuellen Zeitraum erweitern
(
SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    @label as metric
  FROM history
  WHERE READING=@reading AND DEVICE=@device AND TIMESTAMP >= $__timeTo() -- Letzten Wert im aktuellen Zeitraum holen
  ORDER BY TIMESTAMP ASC
  LIMIT 1 
)

UNION

-- Kurve mit letztem Wert der Kurve (nicht des gewählten Zeitraums) bis zum aktuellen Zeitpunkt erweitern
(
SELECT
    UNIX_TIMESTAMP(NOW()) as time_sec,
    VALUE as value,
    @label as metric
  FROM history
  WHERE READING=@reading AND DEVICE=@device
  ORDER BY TIMESTAMP DESC
  LIMIT 1
)

ORDER BY time_sec ASC

Man setzt Device / Reading jetzt nur noch einmal in dieser Zeile (alles andere bleibt immer gleich):

FROM history, ( SELECT @reading:="humidity", @device:=CONCAT([[room]],".wandthermostat_Weather"), @label:="Luftfeuchtigkeit") AS var
Hier verwende ich auch (als einzige Stelle) die Grafana-Template-Variable "room". Die ist vom Typ "Custom" (Definition oben über das Zahnrad --> Templating) und wird mit allen Raumkürzeln aus FHEM als Auswahlmöglichkeit definiert, in meinem Fall:

bad.oben, schlafzimmer, kueche, stube, bad.unten, kinderzimmer, flur.unten, keller, buero
Jetzt baut Grafana daraus - je nach Auswahl im Dropdownmenü oben im Panel, was nach Definition + Verwendung der Variablen automatisch erscheint - Devicenamenen wie bad.unten.wandthermostat_Weather oder schlafzimmer.wandthermostat_Weather usw. zusammen und die Linien werden schön von Anfang bis Ende des Diagramms durchgezogen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 17 November 2017, 15:25:59
So langsam kommt hier ja richtig Schwung in die Sache.  :)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 17 November 2017, 18:26:42
Thyraz na du hast da ja auch ein geniales Tool ausgegraben. Deine letzte Lösung (Berechnung der Zeitdifferenzen) hatte ich gerade angefangen, und da postest du es schon in fertig. Mein ehemaliger Datenbanken-Dozent wäre stolz auf dich ;-)

Die Union-Lösung für den Plottabriss versuche ich ansonsten performancemäßig mal noch zu optimieren, durch das mehrfache Sortieren ist die sehr ineffizient.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 17 November 2017, 22:21:04
Ja, gibt in der Doku eine Sektion zum Sharen.
Das beinhaltet verschiedene Embed Lösungen, aber auch direkte PNG Erstellung eines Diagramms.

Hier ein Beispiel mit Link auf die Online-Demo von Grafana...
Aber mit genau welchem Befehl versendest Du das innerhalb von Telegram? Ich kriege da nur Fehlermeldungen, file not found etc.


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 18 November 2017, 10:24:34
@andies ich nutze Telegram nicht, schätze aber mal du musst das File erst downloaden um es dann verschicken zu können.

Weiß nicht ob es da ein passendes Modul gibt.
Mit wget könnte es evtl. auch funktionieren.

Da das Generieren des Bildes ja etwas dauern könnte sollte es auf alle Fälle async passieren, damit es FHEM nicht blockiert.

@Peter optimiere gerne alles was verbesserungswürdig ist, passe das dann gern in meinen Posts an.
Was in MySQL von der Performance gut oder böse ist, erkenne ich als Laie leider noch nicht so recht.

Bin ja schon froh, dass ich überhaupt eine Lösung für diverse Problemstellungen hinbekommen habe.
Versuche die Probleme halt immer in kleine Häppchen aufzuteilen um diese dann per Google und Stackoverflow gelöst zu bekommen.

Das letzte Beispiel hat mir aber einige Kopfschmerzen bereitet.  :P

Grüße,
Tobias
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 18 November 2017, 10:49:19
@andies ich nutze Telegram nicht, schätze aber mal du musst das File erst downloaden um es dann verschicken zu können.
Hi Tobias, daran hatte ich nicht gedacht. Leider geht
wget http://raspfhem.fritz.box:3000/render/dashboard/db/temperaturen?panelId=2

nicht, das speichert mir eine html-Datei
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width">
    <meta name="theme-color" content="#000">

    <title>Grafana</title>

                <base href="/" />


                  <link rel="stylesheet" href="public/build/grafana.dark.css?v4.6.1">


    <link rel="icon" type="image/png" href="public/img/fav32.png">
    <link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28">
        </head>

        <body ng-cloak>
                <grafana-app class="grafana-app">

                        <aside class="sidemenu-wrapper">
                                <sidemenu ng-if="contextSrv.sidemenu"></sidemenu>
                        </aside>

                        <div class="page-alert-list">
                                <div ng-repeat='alert in dashAlerts.list' class="alert-{{alert.severity}} alert">
                                        <div class="alert-icon"><i class="{{alert.icon}}"></i></div>
                                        <div class="alert-body">
                                                <div class="alert-title">{{alert.title}}</div>
                                                <div class="alert-text" ng-bind='alert.text'></div>
                                        </div>
                                        <button type="button" class="alert-close" ng-click="dashAlerts.clear(alert)">
                                                <i class="fa fa fa-remove"></i>
                                        </button>
                                </div>
                        </div>

                        <div ng-view class="main-view"></div>
                        <footer class="footer">
                                <div class="row text-center">
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 18 November 2017, 11:17:55
Habe es herausgefunden und trage das gerade im Wiki ein.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 19 November 2017, 16:41:21
Ich habe eine Frage. Mein Tiefkühlschrank ist kaputt und wird notgedrungen via Sonoff TH10 betrieben. Nun würde ich mir gern die Temperaturen und die Zeiten, in denen der Kompressor läuft, anzeigen lassen. Und zwar so, dass man die Temperaturkurve während der Kompressorlaufzeit einfach "ausfüllt". Das Ausfüllen schaffe ich nicht.

Das Device sieht so aus:
Internals:
   IODev      Mosquitto
   NAME       Sonoff_TH10a
   NR         107
   STATE      -15.8 °C / 94 %
   TYPE       MQTT_DEVICE
   Helper:
     DBLOG:
       myTemperature:
         DbLog:
           TIME       1511105824.57732
           VALUE      -15.8
       mypower:
         DbLog:
           TIME       1511105824.57732
           VALUE      1
   READINGS:
     2017-11-19 16:37:04   AM2301_Humidity 98.9
     2017-11-19 16:37:04   AM2301_Temperature -15.8
     2017-11-19 12:11:49   LWT             Online
     2017-11-19 16:37:04   POWER           on
     2017-11-19 16:37:04   SENSOR          {"Time":"2017-11-19T16:37:04", "AM2301":{"Temperature":-15.800, "Humidity":98.9}, "TempUnit":"C"}
     2017-11-19 16:37:04   TempUnit        C
     2017-11-19 16:37:04   Time            2017-11-19T16:37:04
     2017-11-19 16:37:04   Uptime          4
     2017-11-19 16:37:04   Vcc             3.124
     2017-11-19 16:37:04   Wifi_AP         1
     2017-11-19 16:37:04   Wifi_RSSI       46
     2017-11-19 16:37:04   myTemperature   -15.8
     2017-11-19 16:37:04   mypower         1
     2017-11-19 16:27:04   state           on
     2017-11-19 16:37:04   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      cmnd/sonoff_th10a/POWER
       values:
         on
         off
   sets:
     off
     on
   subscribe:
     tele/sonoff_th10a/LWT
     tele/sonoff_th10a/SENSOR
     tele/sonoff_th10a/STATE
   subscribeExpr:
     ^tele\/sonoff_th10a\/LWT$
     ^tele\/sonoff_th10a\/SENSOR$
     ^tele\/sonoff_th10a\/STATE$
   subscribeReadings:
     tele/sonoff_th10a/LWT:
       cmd
       name       LWT
     tele/sonoff_th10a/SENSOR:
       cmd
       name       SENSOR
     tele/sonoff_th10a/STATE:
       cmd
       name       STATE
Attributes:
   IODev      Mosquitto
   devStateIcon .*:noIcon:noFhemwebLink
   group      Messung
   publishSet on off  cmnd/sonoff_th10a/POWER
   room       Info
   stateFormat {sprintf ("%.1f °C / %.0f %%", ReadingsNum($name,"myTemperature",0), ReadingsVal($name,"AM2301_Humidity",0)-5)}
   subscribeReading_LWT tele/sonoff_th10a/LWT
   subscribeReading_SENSOR tele/sonoff_th10a/SENSOR
   subscribeReading_STATE tele/sonoff_th10a/STATE
   userReadings myTemperature {ReadingsNum($name, "AM2301_Temperature", 0)}, mypower {if (ReadingsVal($name, "POWER", "") eq "off") {return 0} elsif (ReadingsVal($name, "POWER", "") eq "on") {return 1} }
   verbose    2
   webCmd     on:off

und die wichtigen Daten stehen in mypower und myTemperature. Bisher habe ich nur
SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    AVG(VALUE) as value,
    "Sonoff" as metric
  FROM history
  WHERE READING="myTemperature" AND DEVICE="Sonoff_TH10a" AND $__timeFilter(TIMESTAMP)
  GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 600
und dann fehlt das ausfüllen.

Ich könnte ein weiteres device mit mypower*myTemperature anlegen und das füllen, aber geht es nicht mit mySQL?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SeppiDeluxe am 25 November 2017, 09:56:12
Hallo zusammen,

mit Interesse verfolge ich diesen Thread und habe auch schon meine FHEM Installation erweitert. Standards wie Kurververläufe oder Statisktiken sind kein Thema.
Ich beiße mir an einem Thema die Zähne aus.

Zustände!!

Szenario: Bad Temp, Feucht und so weiter jetzt in Konbination die Lüfterstufe (start/stop Zustände in der LogDB). Auf der DB Seit Abfrage mit

SELECT
      UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    case
      when VALUE = 'start' then 1
      when VALUE = 'stop' then 0
    end as value,
    "Lüfter" as metric
  FROM history
  WHERE READING="getG1" AND DEVICE="KNX_0101030"

alles schick. Gibt ne schöne Tabelle. Jetzt aber der Transfer nd ie Grafana Welt... ich kriegs nicht hin. Also keien schöne Binärkurve (Stufe) mit 1  oder 0.

Hat irgendjemand das Thema bereits im Einsatz oder einen Ansatz für mich danke euch. Ich denke, die HErausforderung liegt ind er Werteinterpolation das die Zustädne nur für einen Zeitstempel exitieren. Dazwischen müsste bis zum Wechsel der Zustand gehalten wwrden und das krieg ich nciht in die Diagramme rüber.

Danke euch Sebastian
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 25 November 2017, 20:46:07
Hi Seppi,

doch genau so geht das, dein Code sieht vollkommen korrekt aus, so mache ich das auch z.B. für meine Bewegungssensoren, die nur "motion" oder "noMotion" liefern. Dass die Werte dann "gehalten" werden machst du über die Option "Staircase line" (Tab Display -> Series Override -> Deine Metric ("Lüfter") hinzufügen -> Staircase Line 1.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 04 Januar 2018, 20:13:32
Moisen,


ich hab mittlerweile ein paar Graphen in Fhem eingebunden - per weblink iframe mit light Theme sieht das bei mir (mit Fhemweb ios7 Theme) echt gut aus.

Wie habt ihr das mit der Auth gelöst? Ich nutze den embedded Link, also mit controls und nicht die gerenderte Grafik.

 Sobald in Grafana ausgeloggt bin, sehe ich in Fhem auch nur den Login Screen
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fischit am 04 Januar 2018, 20:18:15
Du kannst dir, wie hier beschrieben, Gästezugriff bzw. die Rechte für anonymen Zugriff einstellen:
http://docs.grafana.org/installation/configuration/
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 04 Januar 2018, 21:55:42
Du kannst dir, wie hier beschrieben, Gästezugriff bzw. die Rechte für anonymen Zugriff einstellen:
http://docs.grafana.org/installation/configuration/

Ach cool, darauf bin ich gar nicht gekommen - ich hab ja mein Grafana Server dockerized, also hab ich das über Environment Variables gelöst. Läuft...

Jetzt muss ich noch herausfinden, ob ich die Formatierung der Tage ändern kann - scheint nur nach US Standard gehen (?)

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: screetch82 am 08 Januar 2018, 10:38:35
Moisen,


ich hab mittlerweile ein paar Graphen in Fhem eingebunden - per weblink iframe mit light Theme sieht das bei mir (mit Fhemweb ios7 Theme) echt gut aus.

Wie habt ihr das mit der Auth gelöst? Ich nutze den embedded Link, also mit controls und nicht die gerenderte Grafik.

 Sobald in Grafana ausgeloggt bin, sehe ich in Fhem auch nur den Login Screen

habe ich auch so gelösst. link oder grafik benötigen beide den login. Ich werde auch nochmal in der configuration nach dem annony. Login schauen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 08 Januar 2018, 10:43:33
habe ich auch so gelösst. link oder grafik benötigen beide den login. Ich werde auch nochmal in der configuration nach dem annony. Login schauen.

Funzt ganz easy- du musst im Prinzip nur 2 Parameter setzen:

in der .ini

[auth.anonymous]
enabled = true
org_name = $NAMEDEINERGRAFANAORG

oder als Umgebungsvariable (wenn Du wie ich Grafana unter Docker nutzt)

GF_AUTH_ANONYMOUS_ENABLED true
GF_AUTH_ANONYMOUS_ORG_NAME $NAMEDEINERGRAFANAORG

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: TottiToad am 27 Januar 2018, 09:53:52
Hi,

ich versuche mich gerade mit Grafana :)

Erst einmal bin ich völlig begeistert und konnte schon einige Graphen (Temperaturverläufe) umsetzten.

Jetzt bekomme ich es aber nicht hin, für einen Zähler Tageswerte anzuzeigen ?

Die Sache mit Timestamp verstehe ich noch nicht so ganz.

Ich möchte das jeweils der Tageswert angezeigt wird als Balken.

SELECT
  UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d')) as time_sec,
  VALUE as value,
  "HKV_Woche" as metric
FROM history
WHERE READING="Tagesverbrauch" AND DEVICE="HKV_Buro" AND $__timeFilter(TIMESTAMP)

So wird mir zwar der Wert angezeigt, jedoch z.B. der letzte Wert dann gleichzeitig auch an den Zukünftigen Tagen. Es soll aber nur für den einen Tag anzeigt werden, wenn danach kein Wert vorhanden ist, dann halt 0.


Ich hoffe ich konnte so halbwegs beschreiben worum es mir geht und ihr könnt mir weiterhelfen.

Grüße & Danke
Torsten
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 09 Februar 2018, 11:27:54
Moin,

ich habe auch mal eine Grafana oder MYSQL Frage :-)

Wie muss der Select aussehen, das ich Werte, die zum Beispiel 9:59:00 in die DB geschrieben worden sind (Stundenwerte) als Balken dargestellt werden - und der Balken müsste von 9:00 bis 10 Uhr gehen (oder meinetwegen auch 9:59)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: lewej am 09 Februar 2018, 18:19:33
Hi Thyraz,

kannwt du ein Beispiel zeigen wie du deine Monatswerte einmal im Monat ermittelst und die täglichen wären auch Interessant.
Gruss

Beispiel: Bar Chart mit monatlichen Verbräuchen
Ich habe in meiner Datenbank Logeinträge von mehreren Statistic-Modul Instanzen die mir den täglichen / monatlichen / jährlichen Stromverbrauch diverser Geräte aufzeichnen.

Das Problem ist hier, dass zB. bei den monatlichen Verbräuchen der Timestamp 5 Sekunden vor dem Monatswechsel geloggt wird.
Dadurch sitzt der Balken im Diagramm mehr im nächsten Monat als im eigentlich zugehörigen.
Um das zu umgehen wird die DATE_FORMAT Funktion von MySQL genutzt um Uhrzeit und Tag des Monats im Timestamp zu manipulieren:

SELECT
  UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-01')) as time_sec,
  VALUE as value,
  "Trockner" as metric
FROM history
WHERE READING="statEnergyValMonthLast" AND DEVICE="Dummy_PowerSwitch04" AND $__timeFilter(TIMESTAMP)

- Im Reiter Display ist der Draw Mode statt Line auf Bars gesetzt
- Im Reiter Time Range habe ich Override relative time auf 1 Jahr (1y) gesetzt
- Beim Select Statement für das zweite Gerät im Balkendiagramm habe ich den Tag in der DATE_FORMAT Funktion nicht auf 1, sondern auf 4 gesetzt. Dadurch sind die Balken etwas versetzt zu einander.
Das ist optisch von Vorteil falls der hintere Balken mal kleiner ist als vordere.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 13 Februar 2018, 12:53:01
Hi, ich würde gerne auch das Tables Widget nutzen, scheitere aber beim Datum. Ich bekomme die Unix Time, würde gerne aber Datetime nutzen.

Wie müsste das denn beim Select aussehen?

UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%D')) as time_sec, funktioniert irgendwie nicht,.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 13 Februar 2018, 14:50:03
Moin,

ich habe auch mal eine Grafana oder MYSQL Frage :-)

Wie muss der Select aussehen, das ich Werte, die zum Beispiel 9:59:00 in die DB geschrieben worden sind (Stundenwerte) als Balken dargestellt werden - und der Balken müsste von 9:00 bis 10 Uhr gehen (oder meinetwegen auch 9:59)

Dafür musst du an sich nur die Minuten und Sekunden aus dem Datetime String auf 0 setzen und die Anzeigeart des Graphen auf Bars statt Line.
Sollte so gehen denke ich:
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:00:00')) as time_sec
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 13 Februar 2018, 14:55:59
Hi Thyraz,

kannwt du ein Beispiel zeigen wie du deine Monatswerte einmal im Monat ermittelst und die täglichen wären auch Interessant.
Gruss

Hallo lewej,

das ist wie in dem Post beschrieben mit dem Statistics Modul geschehen:
https://wiki.fhem.de/wiki/Statistics

Alternativ kann man diese auch direkt in Mysql aus den Einzelwerten ermitteln lassen.
Das ist hier beschrieben:
https://forum.fhem.de/index.php/topic,77724.msg717020.html#msg717020

Vorteil: Keine zusätzlichen Hilfsdaten in der Datenbank nötig. Daher auch auf bereits vorhandene Altdaten anwendbar.
Nachteil: Aufwändige Berechnungen bei jedem Anzeigen des Charts, daher je nach Hardware des DB-Servers evtl. lange Ladezeiten.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 13 Februar 2018, 14:58:47
Dafür musst du an sich nur die Minuten und Sekunden aus dem Datetime String auf 0 setzen und die Anzeigeart des Graphen auf Bars statt Line.
Sollte so gehen denke ich:
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:00:00')) as time_sec


Das hatte ich auch - schien aber ein Bug in Grafana zu sein, wenn man manuell die Time Range ändert. Jetzt gehts aber :-) Danke
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 13 Februar 2018, 15:18:14
Hi, ich würde gerne auch das Tables Widget nutzen, scheitere aber beim Datum. Ich bekomme die Unix Time, würde gerne aber Datetime nutzen.

Wie müsste das denn beim Select aussehen?

UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%D')) as time_sec, funktioniert irgendwie nicht,.

UNIX_TIMESTAMP macht ja auch aus einem Datetime String einen Timestamp.
Wenn du das nicht willst musst du die Funktion also einfach weglassen. ;)

Oder geht es darum, dass du die Zeit auch brauchst?
Dann so:
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i%s')) as time_sec
Dazu mal die Doku von DATE_FORMAT anschauen:
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format


Wobei das das ehrlich gesagt genau dem entspricht was in der DB in TIMESTAMP drin steht.
Damit kann man sich wahrscheinlich das DATE_FORMAT sparen und einfach den Code verwenden:
TIMESTAMP as time_sec
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 13 Februar 2018, 16:47:03
UNIX_TIMESTAMP macht ja auch aus einem Datetime String einen Timestamp.
Wenn du das nicht willst musst du die Funktion also einfach weglassen. ;)

Oder geht es darum, dass du die Zeit auch brauchst?
Dann so:
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i%s')) as time_sec
Dazu mal die Doku von DATE_FORMAT anschauen:
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format


Wobei das das ehrlich gesagt genau dem entspricht was in der DB in TIMESTAMP drin steht.
Damit kann man sich wahrscheinlich das DATE_FORMAT sparen und einfach den Code verwenden:
TIMESTAMP as time_sec

Achso  8)


Deine Lösung hatte ich auch mal probiert, bekomme aber in der time_sec Spalte statt einen Wert das Zeichen "-" . Das hatte mich verwirrt  :o :o :o

SELECT
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i%s')) as time_sec,
value as value
 FROM history
  WHERE READING="statTotal_consumptionDayLast" AND DEVICE="Stromzaehler" AND $__timeFilter(TIMESTAMP)

Es geht im Prinzip um eine Tabelle, wo ich die Tageswerte ausgeben lassen möchte. '%Y-%m-%d  als Ausgabe würden mir reichen




Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 16 Februar 2018, 07:28:24
@Thyraz

Hast Du noch eine Idee, wo ran es liegen kann? (siehe Screenshot)

Column Style steht auf Date - ändere ich den Style auf String zB dann ist die Spalte sogar leer

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 16 Februar 2018, 08:23:20
Also als erstes fehlt bei DATE_FORMAT ein Doppelpunkt zwischen Minuten und Sekunden. ;)
Den Fehler hast leider von meinem schnell hingepinselten Code übernommen.

Aber ich hatte da noch einen weiteren Denkfehler drin: das äußere UNIX_TIMESTAMP sollte auch weg.
Du willst ja einen lesbaren Datumsstring und nicht irgendeine riesige Nummer im Unix Zeitformat (Sekunden seit 1970).
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 16 Februar 2018, 08:40:52
Also als erstes fehlt bei DATE_FORMAT ein Doppelpunkt zwischen Minuten und Sekunden. ;)
Den Fehler hast leider von meinem schnell hingepinselten Code übernommen.

Aber ich hatte da noch einen weiteren Denkfehler drin: das äußere UNIX_TIMESTAMP sollte auch weg.
Du willst ja einen lesbaren Datumsstring und nicht irgendeine riesige Nummer im Unix Zeitformat (Sekunden seit 1970).

Lol, ist mir auch entgangen :-) Einfach blind mitkopiert  8)  Jetzt hab ich es aber hinbekommen dank deiner Hilfe. Das UNIX_TIMESTAMP musste weg. vielen Dank dafür
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: triagony am 16 Februar 2018, 16:33:22
Hallo!
Erstmal aller besten Dank für diese tolle Anleitung und vor allem auch die Beispiele! Echt klasse. Ich würde gerne sowohl die Helligkeit (Lux) des aktuellen Tages als die Helligkeit des vorangegangenen Tages "übereinander liegend", sozusagen als Overlay, anzeigen lassen.

Der erste Plot für den aktuellen Tag (der auch funktioniert) sieht wie folgt aus:

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Helligkeit" as metric
FROM history
WHERE READING="Helligkeit" AND DEVICE="Lichtsensor" AND $__timeFilter(TIMESTAMP)

Für den zweiten Plot (also für den vom gestrigen Tag) habe ich folgendes versucht:

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Helligkeit gestern" as metric
FROM history
WHERE READING="Helligkeit" AND DEVICE="Lichtsensor" AND TIMESTAMP >= NOW() - INTERVAL 24 HOUR

Leider liefert das 2. Query exakt denselben Plot wie das erste Query. Ich muss dazu sagen, dass ich von SQL absolut keine Ahnung habe (sieht man vielleicht auch an meiner Frage ;) ). Hat jemand einen Tipp für mich?

Danke und beste Grüße!

PS: um es etwas besser zu verdeutlichen, angehängt der Plot, wie ich ihn bisher verwende.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: triagony am 22 Februar 2018, 09:56:10
Hat jemand Erfahrung mit Fhem und Grafana hinter einem Reverse Proxy?

Bei mir werden die Grafana-Plots in Fhem nur angezeigt, wenn ich mit meinem LAN verbunden bin.  Über den Reverse Proxy (Apache - im Wesentlichen wie im Video-Tutorial von Matthias Kleine konfiguriert) leider nicht.

Vielen Dank und Beste Grüße!

Gesendet von meinem SM-G950F mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: cyberthom am 26 Februar 2018, 15:21:38
Ich habe diesen Post bei der Suche nach Grafana Statistiken für Fussbodenheizung gefunden. Ich muß sagen, super Post!!!
Ich bin auch gerade dabei meine Sensordaten sinnvoll in Grafana abzubilden. Eine Sache fehlt mir bzw. weiß ich nicht, wie ich sie realisieren kann, ich denke aber, dass sie zu einen deiner ersten Grafiken sehr gut passen würde.
Ich habe auch die Raumtemperatur und die Zeiten, in denen das Fussbodenventil auf und zu ist abgebildet. Ich habe momentan noch eine Tag/Nacht Steuerung (möchte keine Diskussion über Tag/Nacht Steuerung anfangen). Wie kann ich bei Grafana eine Art "Referenzkurve" hinterlegen, welche die Solltemperatur nach Tageszeit zeigt. Ich habe z.B. für das Schlafzimmer 5 Verschiedene Solltemperaturen über den Tag verteilt.Eine Variante wäre diese auch in einer Datenbank zu loggen, ich möchte hier aber DB-Einträge sparen, die Daten sind ja jeden Wochentag gleich.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 08 März 2018, 08:52:53
Guten Morgen,

Beispiel: Kurve ausdünnen bei zu vielen Messwerten (lange Ladezeiten / langsamer Seitenaufbau)

Meine LaCrosse Thermometer loggen die Temperatur mit 0.1°C Genauigkeit, wodurch man an sich ständig Schwankungen hat und somit massig Messwerte.
Damit die Diagramme auf dem Handy anständig laden, zeige ich weit weniger Punkte in der Kurve an, als Messwerte vorhanden sind.
Um dennoch eine möglichst genaue Darstellung der Kurven zu bekommen, wird dazu jeweils aus den zusammengefassten Punkten der Mittelwert gebildet.

Zuerst das normale Select Statement mit allen Messpunkten:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value,
  "Original" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)

Und hier dann die angepasste Version mit Gruppierung zu 300s / 5min und der Average Berechnung:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, DOUBLE)) as value,
  Geglättet" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 300

Edit:
Es gibt noch eine erweiterte Möglichkeit um die Stärke der Glättung an den gerade gewählten Zeitraum anzupassen.
Das hilft, damit bei einem Anzeigezeitraum von 1 Woche ähnlich viele Datenpunkte angezeigt werden wie wenn man 1 Jahr wählt.
Bei einer Gruppierung mit einem festen Sekunden-Teiler wäre dies nicht der Fall.

Grafana bietet hierzu eine Variable $__interval welche sich beim ändern des Zeitraums anpasst.
Sie nimmt dabei Werte wie z.B. 2s, 5m, 1h an.
Dies kann man wie folgt verwenden:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, DOUBLE)) as value,
  "Geglättet" as metric
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV CASE RIGHT($__interval, 1) 
                                          WHEN 's' THEN $__interval
                                          WHEN 'm' THEN $__interval * 60
                                          WHEN 'h' THEN $__interval * 3600
                                          WHEN 'h' THEN $__interval * 86400
                                          ELSE $__interval
                                        END

Wem die Glättung dabei zu gering ausfällt, kann hinter das *60, *3600 usw. auch noch einen weiteren Multiplikator hinzufügen.

ich habe Grafana gerade mal auf Version 5.0.0 upgedated, aber leider funktioniert das ausdünnen dann nicht mehr, sondern der Plot wirft einen Fehler - hat jemand eine Idee, wie man das löst?

Danke
Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 16 März 2018, 08:36:50
Guten Morgen,

Ich habe noch eine andere Frage: Ich habe eine Idee, die ich gern mit der Heatmap umsetzen möchte, aber leider reichen meine SQL-Kenntnisse hierfür nicht  :(: Ich logge in meiner Datenbank die Zustände der Bewegungsmelder (Reading motion mit Wert on/off). Nun hätte ich gern folgende Heatmap:

x-Achse: Tage (also Zeitpunkt)
y-Achse: Stunde des Tages (0..23)
"Heat-Wert" soll pro Stunde eines Tages per Farbe die Gesamtdauer des Zustandes on für das Reading motion anzeigen (z.B. 0min = schwarz, 60min = tiefrot).

Wäre dies irgendwie möglich?

Vielen Dank
Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Tuxi70 am 26 März 2018, 16:45:48
Bei mir sieht es so stufig aus. Geht es auch ein weniger Stufiger?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: alook90 am 26 März 2018, 16:54:03
Versuch mal in den Einstellungen deines Graphen unter dem Reiter "Display" den Punkt "Staircase" (unter "Mode Options") zu deaktivieren. Durch diese Einstellung wird bei mir die Kurve "stufiger" (siehe Anhang).



Gruß,
Alex
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Tuxi70 am 29 März 2018, 17:13:01
Mir ist da was aufgefallen, was mir bei der "Legend-Anzeige" ersichtlich wurde. Denn ein Wohnzimmer total mit gut 4000 °C zu beheizen (siehe Screenshot), ist doch irgendwie unglaubwürdig, oder?  8)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SabineT am 29 März 2018, 19:12:09
Mir ist da was aufgefallen, was mir bei der "Legend-Anzeige" ersichtlich wurde. Denn ein Wohnzimmer total mit gut 4000 °C zu beheizen (siehe Screenshot), ist doch irgendwie unglaubwürdig, oder?  8)
Total wird da auch keinen Sinn machen, da werden vermutlich alle Messwerte des angezeigen Bereiches addiert...

lg, Sabine
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Tuxi70 am 29 März 2018, 21:55:41
Für Steckdosen ist es eher Brauchbar, da auch dort die Readings zusammen gerechnet werden und die Maßeinheit passend umgestellt werden.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 03 April 2018, 12:07:23
Hat jemand Erfahrung mit Fhem und Grafana hinter einem Reverse Proxy?

Bei mir werden die Grafana-Plots in Fhem nur angezeigt, wenn ich mit meinem LAN verbunden bin.  Über den Reverse Proxy (Apache - im Wesentlichen wie im Video-Tutorial von Matthias Kleine konfiguriert) leider nicht.

Vielen Dank und Beste Grüße!

Gesendet von meinem SM-G950F mit Tapatalk

Ich betreibe Grafana hinter einem Apache reverse Proxy.

/etc/apache2/sites-available/seite.conf :
        <Location /grafana-fhem-pc/>
                RequestHeader unset Authorization
                ProxyPass http://192.168.123.4:3000/
                ProxyPassReverse http://192.168.123.4:3000/
                # auth
                Satisfy All
                AuthType Basic
                AuthName "private"
                AuthUserFile /etc/apache2/users.htpasswd
                Require user username1 username2
        </Location>

/etc/grafana/grafana.ini :
domain = example.com
root_url = %(protocol)s://%(domain)s:/grafana-fhem-pc

Location aus der Apache config und root_url aus Grafana muss ident sein! in meinem Fall "/grafana-fhem-pc"

Hier noch das DIV meiner tabletui:
<div style="float:right"
                        data-type="iframe"
                        data-src="https://example.com/grafana-fhem-pc/dashboard/db/dashboardname?orgId=1&from=now%2Fd&to=now%2Fd"
                        data-fill="yes"
                        data-scrolling="yes">
                </div>

Gruß
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: triagony am 03 April 2018, 16:12:34
Ich betreibe Grafana hinter einem Apache reverse Proxy.

/etc/apache2/sites-available/seite.conf :
        <Location /grafana-fhem-pc/>
                RequestHeader unset Authorization
                ProxyPass http://192.168.123.4:3000/
                ProxyPassReverse http://192.168.123.4:3000/
                # auth
                Satisfy All
                AuthType Basic
                AuthName "private"
                AuthUserFile /etc/apache2/users.htpasswd
                Require user username1 username2
        </Location>

/etc/grafana/grafana.ini :
domain = example.com
root_url = %(protocol)s://%(domain)s:/grafana-fhem-pc

Location aus der Apache config und root_url aus Grafana muss ident sein! in meinem Fall "/grafana-fhem-pc"

Hier noch das DIV meiner tabletui:
<div style="float:right"
                        data-type="iframe"
                        data-src="https://example.com/grafana-fhem-pc/dashboard/db/dashboardname?orgId=1&from=now%2Fd&to=now%2Fd"
                        data-fill="yes"
                        data-scrolling="yes">
                </div>

Gruß
Hallo, vielen Dank für deine Antwort. Sehe ich das richtig, dass du den grafana-server selbst über den reverse Proxy von außen erreichbar machst?
 
Ich hatte eigentlich "nur" vor, von außen auf Fhem zugreifen zu können (das funktioniert) und dann dort (d.h. innerhalb von Fhem) auch grafana-Grafiken anzeigen zu lassen. Ist es dafür zwingend notwendig, grafana selbst von außen erreichbar zu machen?

Beste Grüße.

Gesendet von meinem SM-G950F mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 04 April 2018, 09:49:43
Hallo, vielen Dank für deine Antwort. Sehe ich das richtig, dass du den grafana-server selbst über den reverse Proxy von außen erreichbar machst?
 
Ich hatte eigentlich "nur" vor, von außen auf Fhem zugreifen zu können (das funktioniert) und dann dort (d.h. innerhalb von Fhem) auch grafana-Grafiken anzeigen zu lassen. Ist es dafür zwingend notwendig, grafana selbst von außen erreichbar zu machen?

Was meinst du mit "innerhalb von FHEM?" Als eingebettete Seite wie in meinem Tabletui Beispiel?

Ich kenne nur die Möglichkeit, Seiten miteinzubinden wie in meinem Beispiel, welche aber auch vom jeweiligen Gerät aus erreichbar sein müssen. D.h. einbinden bietet keine Proxy Funktionalität.
Zusatzinfo: In der Apache config sind bei mir bei jedem Basic Auth die AuthName ident. Wenn der AuthName bei /fhem und /grafahan-fhem unterschiedlich ist, wird das Passwort 2x abgefragt (zumindest bei mir, als ich unterschiedliche AuthName verwendet hatte^^). Die Domain muss auch gleich sein denke ich, zumindest hab ichs anders noch nicht getestet.

Gruß
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: triagony am 04 April 2018, 10:40:36
Guten Morgen. Noch einmal danke für deine Antwort.

Vorweg zur Info: Grafana und Fhem laufen bei mir auf dem gleichen Host, nur auf unterschiedlichen Ports (fhem: 8083 / grafana: 3001). Für Fhem selbst habe ich einen reverse Proxy eingerichtet, mit dem ich von außen, d.h. aus dem Internet über https://DOMAIN auf Fhem zugreifen kann. Der reverse Proxy liegt auf einem anderen Host (jeweils virtuelle Maschinen). Meine Apache-Config hierfür sieht so aus:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName DOMAIN

    ServerAdmin EMAIL
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/DOMAIN.error.log
    CustomLog ${APACHE_LOG_DIR}/DOMAIN.access.log combined

    SSLCertificateFile /etc/letsencrypt/live/DOMAIN/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Location /fhem>
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /fhem(.*)           ws://FHEM-IP:8083/fhem$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    RewriteRule /fhem(.*)           http://FHEM-IP:8083/fhem$1 [P,L]


        ProxyPass  http://FHEM-IP:8083/fhem
        ProxyPassReverse  http://FHEM-IP:8083/fhem
# ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
  ProxyHTMLURLMap /        /fhem/
  ProxyHTMLURLMap /fhem/     /fhem/

        AuthType Basic
        AuthName "Password Required"
        AuthUserFile /etc/fhem-htpasswd
        Require valid-user
        Order deny,allow
        Allow from all
</Location>
<Directory />
   RedirectPermanent / /fhem
</Directory>
</VirtualHost>
</IfModule>

Für Grafana (läuft auf dem gleichen Host wie FHEM nur auf einem anderen Port, s.o.) habe ich - wie gesagt - bisher keine eigene von außen über den reverse Proxy erreichbare Adresse eingerichtet.

Mit "in Fhem einbinden" meine ich das Einbinden eines Graphen mittels Weblink in folgender Form (Beispiel):

define NAME weblink image http://[GRAFANA-IP]:3001/render/dashboard-solo/db/dashboard?orgId=1&from=now-2d&to=now&panelId=2&width=780&height=480&tz=UTC%2B02%3A00&theme=light
Das funktioniert auch, solange ich mich im gleichen LAN befinde. Es funktioniert nicht, wenn ich mich über den rProxy auf die Fhem-Oberfläche verbinde und dort den Grafana-Graphen anzeigen lassen möchte. Dort erscheint dann nur ein Platzhalter für den Graphen.

Wenn ich nun - weil es anders nicht geht(?) - auch grafana von außen erreichbar mache (mittels reverse proxy), müsste ich dann in meinem weblink-Beispiel die von außen erreichbare Domain im Link eintragen, richtig? Oder gibt es doch einen Weg, die LAN-IP zu nutzen? Ich fänd es ziemlich umständlich, die Grafana-Graphiken, über das Internet einzubinden / abzurufen, wenn doch die Graphiken an sich auf dem gleichen Host wie Fhem liegen.

Vielleicht habe ich aber auch nur einen (oder mehrere) Denkfehler?

Danke und beste Grüße
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 04 April 2018, 11:18:47
Hallo,

ich kenne mich zwar mit dem ReverseProxy nicht aus, aber eine möglich Alternative wäre es vielleicht, die Bilder von Grafana mittels cronjob und wget zyklisch auf dem Server ablegen zu lassen (z.B. im FHEM-WWW-Verzeichnis) und von dort aus anzuzeigen - könnte unter Umständen sogar schneller laden  ;)

Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 05 April 2018, 15:11:21
Hallo,

ich kenne mich zwar mit dem ReverseProxy nicht aus, aber eine möglich Alternative wäre es vielleicht, die Bilder von Grafana mittels cronjob und wget zyklisch auf dem Server ablegen zu lassen (z.B. im FHEM-WWW-Verzeichnis) und von dort aus anzuzeigen - könnte unter Umständen sogar schneller laden  ;)

Ronny
Dann wäre doch der Vorteil von Grafana dahin, dass man in der Grafik zB. rumzoomen kann.

Mit "in Fhem einbinden" meine ich das Einbinden eines Graphen mittels Weblink in folgender Form (Beispiel):

define NAME weblink image http://[GRAFANA-IP]:3001/render/dashboard-solo/db/dashboard?orgId=1&from=now-2d&to=now&panelId=2&width=780&height=480&tz=UTC%2B02%3A00&theme=light
Das funktioniert auch, solange ich mich im gleichen LAN befinde. Es funktioniert nicht, wenn ich mich über den rProxy auf die Fhem-Oberfläche verbinde und dort den Grafana-Graphen anzeigen lassen möchte. Dort erscheint dann nur ein Platzhalter für den Graphen.

Wenn ich nun - weil es anders nicht geht(?) - auch grafana von außen erreichbar mache (mittels reverse proxy), müsste ich dann in meinem weblink-Beispiel die von außen erreichbare Domain im Link eintragen, richtig? Oder gibt es doch einen Weg, die LAN-IP zu nutzen? Ich fänd es ziemlich umständlich, die Grafana-Graphiken, über das Internet einzubinden / abzurufen, wenn doch die Graphiken an sich auf dem gleichen Host wie Fhem liegen.

Ich meine, es muss Grafana auch von außen erreichbar sein. Den Weblink ruft ja der Browser auf, daher muss das ebenfalls über den Apache Proxy laufen.
Wenn du im internen LAN bist und die von außen erreichbare Domain aufrufst, sollte der Router das direkt umleiten und nicht über das Internet schicken.


Gruß
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: triagony am 05 April 2018, 15:14:18
Dann wäre doch der Vorteil von Grafana dahin, dass man in der Grafik zB. rumzoomen kann.

Ich meine, es muss Grafana auch von außen erreichbar sein. Den Weblink ruft ja der Browser auf, daher muss das ebenfalls über den Apache Proxy laufen.
Wenn du im internen LAN bist und die von außen erreichbare Domain aufrufst, sollte der Router das direkt umleiten und nicht über das Internet schicken.


Gruß
Na dann werde ich wohl diesen Weg gehen (müssen). Vielen Dank nochmal.

Beste Grüße

Gesendet von meinem SM-G950F mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 05 April 2018, 15:16:38
Dann wäre doch der Vorteil von Grafana dahin, dass man in der Grafik zB. rumzoomen kann.

Ja, ich selbst habe es auch als iFrame direkt eingebunden, aber dem Code von @triagony hatte ich entnommen, dass er es sowieso schon als image einbindet...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 05 April 2018, 16:35:55
Ja, ich selbst habe es auch als iFrame direkt eingebunden, aber dem Code von @triagony hatte ich entnommen, dass er es sowieso schon als image einbindet...
Tatsache, so genau hatte ich vorhin gar nicht geschaut...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 08 Mai 2018, 08:32:30
Guten Morgen,

ich habe Grafana im Docker Containter laufen, welches sich dann hin und wieder mit Watchtower automatisch updated.

Naja, es scheint das Grafana irgendwas geändert hat - in meinen Graphen (die vorher gingen), bekomme ich folgende Fehlermeldung:

Zitat
"Value column must have numeric datatype, column: value type: string value

Der Select dazu sieht folgendermaßen aus:

SELECT
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H')) as time_sec,
    VALUE as value,
    "Wasserverbrauch Stunde" as metric
  FROM history
  WHERE READING="LitreHourLast" AND DEVICE="Wasserzaehler" AND $__timeFilter(TIMESTAMP)

Jemand eine Idee?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 08 Mai 2018, 08:51:45
Hab bei mir Grafana länger nicht aktualisiert.
Evtl. sind die etwas strikter bei den Datentypen geworden statt automatisch zu konvertieren.

Hier war mal ein manuellen konvertieren drin, da man mit Strings nicht as "+2" hätte rechnen können:
https://forum.fhem.de/index.php/topic,77724.msg697780.html#msg697780

Falls du was mit Komma statt nur Ganzzahlen brauchst, müsstest du mal suchen wie SQL das statt Integer nennt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 08 Mai 2018, 09:05:12
Hab bei mir Grafana länger nicht aktualisiert.
Evtl. sind die etwas strikter bei den Datentypen geworden statt automatisch zu konvertieren.

Hier war mal ein manuellen konvertieren drin, da man mit Strings nicht as "+2" hätte rechnen können:
https://forum.fhem.de/index.php/topic,77724.msg697780.html#msg697780

Falls du was mit Komma statt nur Ganzzahlen brauchst, müsstest du mal suchen wie SQL das statt Integer nennt.

Hey danke - ich hab es jetzt dank deines Hinweises so hinbekommen (keine Ahnung, ob es auch anders geht)

Aus

VALUE as value
wurde

CONVERT(VALUE, INTEGER) as value,
Damit werden die Graphen wieder dargestellt ;D ;D
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sku am 08 Mai 2018, 16:37:54
CONVERT(VALUE, INTEGER) as value,
Damit werden die Graphen wieder dargestellt ;D ;D

Mir half
CONVERT(VALUE, double) as value,da mit deiner Lösung die Nachkommastellen von Temperaturen gerundet werden.


Habe meinen Code in Antwort #19 ebenfalls angepasst.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fhemfreund am 06 August 2018, 00:08:45
Habe auch mal Grafana installiert und in Fhem eingebunden. Bin soweit sehr zufrieden :-)

Bei der Darstellung eines Stromverbrauch-Plots komme ich aber nicht weiter.
Mein SQL Statement selektiert nach den in letzter Stunde verbrauchen KWh, die immer um **.59:55 der jeweiligen Stunde geschrieben werden:

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT (VALUE,DECIMAL(7,3)) as value,
  "Stromverbrauch" as metric
FROM history
WHERE READING="statKWhHourLast" AND DEVICE="ESPEasy_HmWifiEng2_Energy_Total" AND $__timeFilter(TIMESTAMP)

Allerdings stellt Grafana diese für die darauf folgende Stunde dar (siehe angehängte Grafik), obwohl es ja eine Aufsummierung der vergangenen Stunde ist (und auch der Datensatz noch innerhalb dieser in die DB geschrieben wird).

Gibt es eine Möglichkeit, die Bar-Charts daher an den Anfang der entsprechenden Stunde zu plotten?
Habe es schon mit 'Timeshift' im Tab 'Time-Range' versucht - allerdings verschiebt dieser nur die X-Achse um eine Stunde, aber nicht die Darstellung der Bar-Charts ...

Andreas
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SabineT am 06 August 2018, 07:55:32
Du könntest mit:

SELECT
  (UNIX_TIMESTAMP(TIMESTAMP) DIV 3600)* 3600  as time_sec,
  CONVERT (VALUE,DECIMAL(7,3)) as value,
  "Stromverbrauch" as metric
FROM history
WHERE READING="statKWhHourLast" AND DEVICE="ESPEasy_HmWifiEng2_Energy_Total" AND $__timeFilter(TIMESTAMP)

die Minuten und Sekunden auf 0 setzen.

Sabine
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 06 August 2018, 09:58:24
Genau. Grafana weiß ja nicht, dass es sich um einen Tageswert handelt.
Das Ereignis in der Datenbank beginnt bei 59 Minuten und 55 Sekunden.

Da zeichnet es Grafana dann eben in den Grafen, was für dich aussieht als ob es bei der Folgestunde losgeht.

Den Zeitstempel beim Laden so zu manipulieren, dass er auf den Anfang der Stunde statt das Ende zeigt, sollte das Problem also lösen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fhemfreund am 08 August 2018, 00:47:00
Du könntest mit:

SELECT
  (UNIX_TIMESTAMP(TIMESTAMP) DIV 3600)* 3600  as time_sec,
  CONVERT (VALUE,DECIMAL(7,3)) as value,
  "Stromverbrauch" as metric
FROM history
WHERE READING="statKWhHourLast" AND DEVICE="ESPEasy_HmWifiEng2_Energy_Total" AND $__timeFilter(TIMESTAMP)

die Minuten und Sekunden auf 0 setzen.

Sabine

Klasse Tip - hat einwandfrei funktioniert. Danke dafür. Da ich allerdings kein SQL-Jünger bin: was ist denn der Trick hinter dem Teilen und Multiplizieren der Sekunden einer Std.?

Andreas
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SabineT am 08 August 2018, 06:43:06
Klasse Tip - hat einwandfrei funktioniert. Danke dafür. Da ich allerdings kein SQL-Jünger bin: was ist denn der Trick hinter dem Teilen und Multiplizieren der Sekunden einer Std.?

Andreas
Das ist eigentlich nichts SQL Spezifisches.

DIV ist eine Division, bei der beim Ergebnis der Teil hinter dem Komma weg gelassen wird. Wenn du also z.B. einen Timestamp "01:59:59" hast (also 1 Stunde, 59 Minuten, 59 Sekunden), dann wird das erst mal auf 7199 Sekunden umgerechnet (den Datumsanteil hab ich der Einfach heit halber hier mal weg gelassen), nach dem DIV 3600 bleibt dann 1 als Ergebnis über.

Grafana will aber den Wert in Sekunden haben, daher wird das dann einfach wieder mit 3600 Multipliziert.
Dadurch wird aus "01:59:59" eben dann "01:00:00".

Sabine
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: JoeALLb am 08 August 2018, 07:43:27
Ginge aber auch mit

SELECT DATE_FORMAT(timestamp, "%H:00:00"); Wäre für komplexere Sachen minimal effektiver, da Indexe noch benutzt werden könne. Natürlich müsste man das Datum zur Zeit auch noch ergänzen.

SG Joe

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 August 2018, 18:47:45
hat jemand ein paar Screenshots wie Grafana in FHEMWEB aussieht? Ist es möglich die Plot per iFrame einzubinden und die Zoom-Buttons zu behalten? Ggf. mit der Definition?

Danke!
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 25 August 2018, 20:04:00
Ich mache das so wie im Anhang, durch
Internals:
   DEF        iframe http://192.168.2.7:3000/dashboard/db/temperaturen
   LINK       http://192.168.2.7:3000/dashboard/db/temperaturen
   NAME       TempView
   NR         99
   STATE      initialized
   TYPE       weblink
   WLTYPE     iframe
Attributes:
   htmlattr   width="100%" height="400" frameborder="0" marginheight="0" marginwidth="0"
   room       Grafiken
   sortby     5
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 August 2018, 20:31:44
Ich mache das so wie im Anhang, durch


danke dir!

Vielleicht weißt du das ... wenn ich mir Post https://forum.fhem.de/index.php/topic,77724.msg696839.html#msg696839   ansehe ist das nur ein Plot ohne die Grafana-Spalte links. Ist das "nackte" Plot ein PNG? Geht ja in Grafana auch.

Habe Grafana auf einem Testsystem laufen. Muss ich mich näher befassen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 25 August 2018, 20:41:35
Nein, das sind keine png's. Ich hatte mal das Problem, das ich png brauchte, um sie mit Telegram zu verschicken (an mich, als Kontrolle). Das ist nicht so simpel.

Ich habe in dem raspberry, auf dem grafana läuft, eine batch-Datei geschrieben, die ich zweimal pro Tag aufrufe und die aus grafana png holt. Die sieht so aus:
#!/bin/bash
curl  -H   "Authorization: Bearer XXXXXXXXXX=" "http://localhost:3000/render/dashboard-solo/db/temperaturen?orgId=1&panelId=1&from=now-1d&to=now&width=1000&height=500&tz=UTC%2B01%3A00" > /home/pi/GrafanaTemperaturen.png
curl  -H   "Authorization: Bearer XXXXXXXXXX=" "http://localhost:3000/render/dashboard-solo/db/temperaturen?orgId=1&panelId=2&from=now-1d&to=now&width=1000&height=500&tz=UTC%2B01%3A00" > /home/pi/GrafanaTemperaturen1.png
curl -s -H "Authorization: Bearer XXXXXXXXXX=" "http://localhost:3000/render/dashboard-solo/db/energie?orgId=1&panelId=1&from=now-1d&to=now&width=1000&height=500&tz=UTC%2B01%3A00" > /home/pi/GrafanaEnergie.png
curl -s -H "Authorization: Bearer XXXXXXXXXX=" "http://localhost:3000/render/dashboard-solo/db/wasser-und-entkalkung?orgId=1&panelId=1&from=now-1d&to=now&width=1000&height=500&tz=UTC%2B01%3A00" > /home/pi/GrafanaWasser.png
curl -s -H "Authorization: Bearer XXXXXXXXXX=" "http://localhost:3000/render/dashboard-solo/db/raspberry?orgId=1&panelId=1&from=now-1d&to=now&width=1000&height=500&tz=UTC%2B01%3A00" > /home/pi/GrafanaRaspberry.png
## notwendig fuer FHEM, grafiken werden gerendert und dann in fhem abgelegt
## Datei wird ueber crontab aufgerufen, derzeit zweimal taeglich (21 Uhr und 6 Uhr)
 
Die Sachen, die ich mit XXXXXXXXXX gekennzeichnet habe, sind Codes aus grafana zum autorisieren. Sie erhältst Du, wenn Du in grafana unter Configuration->API keys Angaben eingibst, dann wird Dir der Code angezeigt. Mehr hier
http://docs.grafana.org/reference/sharing/ (http://docs.grafana.org/reference/sharing/)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: fischit am 25 August 2018, 23:53:50
Sind das denn keine brauchbaren PNGs die ich beim Sharing unter dem Punkt "Direct link rendered image" erzeuge?
Wenn ich die Bilder wegspeichere sind das PNGs.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 26 August 2018, 08:29:31
Kann ich nicht sagen - ich wollte ja automatisiert speichern, das habe ich nur so geschafft. Vielleicht geht es anders?


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 30 August 2018, 13:35:00
Gibt es eigentlich schon eine Sammlung, was man alles tolles mit FHEM + Grafana bauen kann, insb. wo die normalen Plots absolut nicht mehr mitmachen?

Ich werfe mal einen Vergleich "Sommer 2018 vs. 2017" in den Raum. Nachbauen kann man das mit dem Carpetplot (standardmäßig bei Grafana dabei):

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE+0 as value,
  "Außentemperatur" as metric
FROM history
WHERE READING="temperature" AND DEVICE="aussenthermometer" AND $__timeFilter(TIMESTAMP)
ORDER BY time_sec

Dazu noch Min und Max im Reiter "Display" feststellen (hier 10 und 30°C) und im Reiter "Time Range" ggf. einen Override (hier: now-90d) einbauen.

Dann das Ding einmal "duplizieren" und im Reiter "Time Range" noch "Add Time Shift" auf "365d" stellen für den Vorjahresvergleich setzen. Voila!

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 30 August 2018, 14:42:25
Hallo,

Gibt es eigentlich schon eine Sammlung, was man alles tolles mit FHEM + Grafana bauen kann

nein, im Wiki ist nur ein Link auf diesen Thread.

Ich werfe mal einen Vergleich "Sommer 2018 vs. 2017" in den Raum.

Das nehme ich doch mal zum Anlass, meinen Plot zum Bewegungsmelder vorzustellen: Ich logge den Status meiner Bewegungsmelder und habe mir eine Auswertung über die Tageszeit gebastelt: Als plot kommt die Heatmap zum Einsatz (sollte bei Grafana dabei sein).

SQL:

SELECT
  SELECT UNIX_TIMESTAMP(date(TIMESTAMP)) as time_sec,
    count(VALUE) as value,
    CONCAT((hour(TIMESTAMP)*60*60)+floor(minute(TIMESTAMP)/15)*15*60) as metric
  FROM history
  WHERE (READING="motion" or READING="state") and device="OG.ez.BM.Whg_Tuer" AND $__timeFilter(TIMESTAMP) and VALUE not like '%off%'
  group by floor(minute(TIMESTAMP)/15), hour(TIMESTAMP), day(TIMESTAMP), month(TIMESTAMP), year(TIMESTAMP)

(READING="motion" or READING="state" kommt daher, dass sich das Reading mal geändert hat)

Bei Axis folgende Einstellungen:
  Data format -> Format -> Time series buckets
  Y-Axis -> Unit -> duration (hh:mm:ss)

Bei Display folgende Einstellungen:
  Colors -> Mode -> Spectrum
  Colors -> Scheme -> YlOrRd
  Color scale -> Min -> 0
  Color scale -> Max -> 30 (entspricht maximal 30 Auslösungen pro viertel Stunde - auto wäre auch möglich)
  Legend -> Show legend -> ja
  Buckets -> Space -> 0

Im Ergebnis sieht man dann, zu welcher Tageszeit der Raum benutzt wurde. Im Anhang sieht man einen Plot eines Bewegungsmelders im allgemein zugänglichen Hausflur - spannender sind hier aber die Plots der Bewegungsmelder in der Wohnung, da man hier auch die Wochentage sehr gut erkennen kann, aber die will ich hier nicht zeigen, da ja nicht jeder wissen muss, wann bei uns niemand zu Hause ist ;-)

Ronny

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 31 August 2018, 09:29:04
Hey super :-) Die Heatmap habe ich noch gar nicht ausprobiert, aber das ist ein schöner Use Case dafür!

Dann zeige ich gleich einmal noch meine "Anwesenheitsauswertung", die ich vor allem für die Optimierung der Heizzeiten einsetze:

Für jeden Raum habe ich in FHEM einen Dummy (hier z.B. kueche.anwesenheit), in dem ich verschiedene Sensoren über ein DOIF zu einem "Rating" kombiniere, ob dort jemand ist:

defmod di_kueche.anwesenheit DOIF (0) (set kueche.anwesenheit Ja) (set kueche.anwesenheit Unbekannt) (set kueche.anwesenheit Unwahrscheinlich) (set kueche.anwesenheit Nein)\
\
DOELSEIF  ( ( [kueche.wandtaster.praesenz:"motion.*on"] \
              or [kueche.fenster:"^(offen|geschlossen)$"]\
              or [kueche.fenster2:"^(offen|geschlossen)$"]              \
            ) and [?kueche.tuer] eq "geschlossen"\
          ) \
          (set kueche.anwesenheit Ja) \
\
DOELSEIF ([kueche.wandtaster.praesenz:"motion.*on"] \
          or [kueche.tuer:"offen"] \
          or [kueche.tuer:"geschlossen"]\
          or [kueche.fenster:"^(offen|geschlossen)$"]\
          or [kueche.fenster2:"^(offen|geschlossen)$"]  \
          ) \
         (set $SELF cmd_1)

attr di_kueche.anwesenheit do resetwait
attr di_kueche.anwesenheit wait 0,60,300,900:0:0

Das DOIF wäre ein Thema für sich und verwendet einige Kniffe - jedenfalls bekomme ich so relativ "sauber" mit, ob dort gerade jemand ist (Ja) bzw. abgestuft nach der Dauer der Inaktivität eine Wahrscheinlichkeit (Unbekannt / Unwahrscheinlich / Nein) - auch unter Berücksichtigung der Tatsache, dass der Raum bei geschlossener Tür normalerweise nicht verlassen werden kann, selbst wenn der Bewegungsmelder nichts erkennt ;-)

In Grafana visualisiere ich das dann für jeden Raum über das "Discrete"-Plugin. Damit das sauber aussieht, habe ich den Hack für das Erweitern des Plots über den Anzeigezeitraum ("Plotabriss vermeiden") hinaus noch etwas verbessert. Die Metric für die Küche sieht z.B. so aus (bei allen anderen wird nur der Name der Metric und das device einmal geändert):

SELECT
  data.time_sec as time_sec,
  "Küche" as metric,
      case
        when data.rawValue = 'Ja' then 3
        when data.rawValue = 'Unbekannt' then 2
        when data.rawValue = 'Unwahrscheinlich' then 1
        when data.rawValue = 'Nein' then 0
        when data.rawValue is null then 0
    end as value
FROM
(
   SELECT @reading:="state", @device:="kueche.anwesenheit"
) AS var,
(
   (
   SELECT
      $__unixEpochFrom() as time_sec,
      VALUE as rawValue
   FROM history
   WHERE READING=@reading AND DEVICE=@device AND UNIX_TIMESTAMP(TIMESTAMP) <= $__unixEpochFrom()
   ORDER BY TIMESTAMP DESC
   LIMIT 1
   )
UNION
   (
   SELECT
      UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
      VALUE as rawValue
   FROM history
   WHERE READING=@reading AND DEVICE=@device AND $__timeFilter(TIMESTAMP)
   )
UNION
   (
   SELECT
      $__unixEpochTo() as time_sec,
      VALUE as rawValue
   FROM history
   WHERE READING=@reading AND DEVICE=@device AND UNIX_TIMESTAMP(TIMESTAMP) <= $__unixEpochTo()
   ORDER BY TIMESTAMP DESC
   LIMIT 1
   )
) as data
ORDER BY time_sec ASC

Jetzt macht man in dem Tab "Mappings" noch folgendes ...

0 -> Nein
1 -> Unbekannt
2 -> Unwahrscheinlich
3 -> Ja

... und legt die Farben nach Wunsch fest. Fertig ist eine schicke "Raumbenutzungsansicht" :-) Im Screenshot sieht man sehr schön, dass an dem ersten der beiden dargestellten Tage (10-16 Uhr) im Schlafzimmer ein Bewegungsmelder "Amok" läuft. Ist also auch gut zum Debuggen :-)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 08 Oktober 2018, 13:36:12
Hallo,
versuche mich auch gerade mit grafana und komme nicht weiter.
Bei einigen Geräten lasse ich "state" loggen mit folgendem Inhalt
T: 18.9 desired: 5.0 valve: 0In Fhem habe ich per regex mit
T:\s([-\.\d]+).* den Wert für die Temperatur bekommen.
Jetzt wollte ich das gleiche bei grafana probieren und komme aber absolut nicht weiter wo und wie ich das ganze dort hinterlegen muss.
Hat jemand evtl. ein Beispiel wie ich das ganze bei gafana zum laufen bekommen?
Danke im Voraus und
Grüße Sten
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 08 Oktober 2018, 18:13:25
Mache mal ein list des log-devices


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 08 Oktober 2018, 18:53:03
Welches meinst Du speziell? Das Gerät was die log Einträge (sprich Thermostat) erzeugt oder mein dblog Device?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 08 Oktober 2018, 20:21:28
Ich nehme an, das ist ein Homematic? Ich mache das so:
defmod DbLog DbLog ./db.conf (DECT1:power.*|.*thermostat_Clima:measured-temp.*|.*rssi_at_WLAN_HmUART.*|Blitzwolf(1|2):.*)
und damit werden die Temperaturen erfasst. Valve kannst du dann hinzufügen. In Grafana wird das so angezeigt
SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    AVG(VALUE) as value,
    "Deine Beschreibung" as metric
  FROM history
  WHERE READING="measured-temp" AND DEVICE="Badezimmerthermostat_Clima" AND $__timeFilter(TIMESTAMP)
  GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 1200
wobei "Badezimmerthermostat_Clima" das device (genauer der channel) des HM ist. 1200 ist die Anzahl der Sekunden, über die gemittelt wird.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 09 Oktober 2018, 07:46:59
Richtig, ist Homemtaic ABER ich loge nicht jeden Wert einzeln bei meinen Stellventilen sondern nur state.
Was dann so aussieht.
state T: 21.2 desired: 19.5 valve: 0
Meine gplot files in FHEM sind im Datenteil wie folgt definiert
#myLogDB <SPEC1>:state:::$val=~s/T:\s([-\.\d]+).*/$1/eg
#myLogDB <SPEC1>:state:::$val=~s/.*valve:\s([-\.\d]+).*/$1/eg

Damit suche ich mir aus dem state den Teil für die Temperatur und den Teil für die Ventilstellung.
In dem Beispiel oben für state zeigt er dann im Plot folgende Werte für Temperatur und Ventilstellung
21.2
0

Und mein Problem ist das Grafana aus der dblog Datenbank für state ja das gleiche bekommt und ich
nicht weiß wie ich in Grafana mit regex oder ähnliches mir den nummerischen Wert "heraus ziehen" kann.
Ich hoffe ich konnte das Problem jetzt rüberbringen?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 09 Oktober 2018, 07:59:38
Guten Morgen,

was du suchst mache ich beim SysMon, da hier mehrere Werte in einem Reading gespeichert werden - das "Zauberwort" heißt substring_index. Hier meine Auswertung als Beispiel, bei dir musst du statt der 4 vermutlich eine 2 nehmen und das "100-" kann bei dir auch weg:

SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    100-substring_index(substring_index(value, ' ', 4),' ',-1) as value,
    "CPU gesamt" as metric
  FROM history
  WHERE READING="stat_cpu_percent" and device="SysMon" AND $__timeFilter(TIMESTAMP)

Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 09 Oktober 2018, 08:13:44
TOP!!! Das war es. Um die Werte in Grafana zu bekommen sieht es jetzt so bei mir aus
Temperatur
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT((substring_index(substring_index(value, ' ', 2),' ',-1)), double) as value,
  "Temperatur" as metric
FROM history
WHERE READING="state" AND DEVICE="BA_o_Hz_Stellantrieb_Clima" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 300

und Ventilstellung
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT((substring_index(substring_index(value, ' ', 3),' ',-1)), double) as value,
  "Ventil" as metric
FROM history
WHERE READING="state" AND DEVICE="BA_o_Hz_Stellantrieb_Clima" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 300
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 09 Oktober 2018, 08:50:09
Wobei du theoretisch das Problem bekommen könntest, dass sich der Index von Ventilstellung ändert.
Theoretisch deshalb, weil die Temperatur in einem Innenraum wahrscheinlich nie einstellig oder negativ werden sollte. ;)

Eine Lösung falls man in so ein Problem rennen sollte, könnte eine Kombination aus REGEXP_SUBSTR (Mit deiner Regex valve:\s([-\.\d]+)) und REPLACE (um das valve: aus dem Treffer zu entfernen) sein.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: RoBra81 am 09 Oktober 2018, 10:38:10
Wobei du theoretisch das Problem bekommen könntest, dass sich der Index von Ventilstellung ändert.
Theoretisch deshalb, weil die Temperatur in einem Innenraum wahrscheinlich nie einstellig oder negativ werden sollte. ;)

Das verstehe ich nicht ganz? Ich dachte, substring_index trennt den Wert an definierten Trennzeichen (hier das Leerzeichen ' ') - da ist doch egal, wie viele Stellen die Temperatur hat und ob da noch ein '-' davor ist, oder?

Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 10 Oktober 2018, 09:03:17
Hätt ich mal nicht nur den Namen der Funktion, sondern auch die Doku dazu gelesen.  ;D

Dann stimmt es natürlich.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: MCh76 am 06 November 2018, 20:01:31
hallo zusammen,
falls ihr auch das problem haben solltet, dass im Tablet UI ein iframe aufruf von grafana nichts anzeigt.
prüft mal ob FHEM unter https läuft und falls ja, solltet ihr grafana auch auf https umstellen.
dazu muss man im Verzeichnis /etc/grafana die datei grafana.ini an drei Stellen leicht modifizieren:
#################################### Server ####################################
[server]
# Protocol (http, https, socket)
protocol = https

# https certs & key file
cert_file = /opt/fhem/certs/server-cert.pem
cert_key = /opt/fhem/certs/server-key.pem


/opt/fhem/certs ist hierbei das Verzeichnis in dem die HTTPS zertifikate des servers hinterlegt sind.

danach datei speichern und einmal den grafana service neu starten bzw. sudo reboot...
ich hoffe es hilft dem einen oder anderen.

vg,
chris
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: slawekking am 07 November 2018, 10:49:08
Hallo,

ich habe aktuell das Problem, dass um 23:00 Uhr das ploten in Fhem aufhört. Am darauf folgendem Tag  sehe ich den Plot vom vorherigen Tag bis 23:00 Uhr.

Nach dem anlegen im Fhem läuft es anfangs problemlos:

define WEB_GrafanaTemp_EG weblink iframe http://192.168.1.64:3500/d-solo/MaImxb-ik/power-consumption?orgId=1&panelId=4&from=1541458800000&to=1541545199999

 Unter Grafana wird das Ploten nicht gestoppt. Es ändert sich ohne Grund die Panel ID habe ich festgestellt.

Hat einer von euch eine Idee? Liegt es vielleicht am .ini Eintrag session_life_time?

Gruß

Christoph

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: LordVoodoo am 07 November 2018, 19:26:43
Hallo,

habe mich die letzten Tage ebenfalls mit Grafana beschäftigt. Ziel war es, die Wetterdaten aus Proplanta auszulesen und auch die Prognose der nächsten Tage darzustellen.

Voraussetzungen:


Im Screenshot sind drei Graphen integriert (historische Luftfeuchtigkeit, historische Temperatur und Prognosetemperatur.

Chart Luftfeuchtigkeit:
SELECT
  UNIX_TIMESTAMP(timestamp) as time_sec,
  Cast(value as decimal(10,0)) as value,
  'Feuchtigkeit' as metric
FROM history
Where device = 'Dienst_Wetter_Siegelsbach'
And reading = 'humidity'
And $__timeFilter(timestamp)
ORDER BY timestamp ASC

Chart Temperatur:
SELECT
  UNIX_TIMESTAMP(timestamp) as time_sec,
  Cast(value as decimal(10,1)) as value,
  'Temperatur' as metric
FROM history
Where device = 'Dienst_Wetter_Siegelsbach'
And reading = 'temperature'
And $__timeFilter(timestamp)
ORDER BY timestamp ASC

Chart Temperaturprognose
Select time_sec,
value,
metric
From (
SELECT
  UNIX_TIMESTAMP(timestamp) as time_sec,
  Cast(value as decimal(10,1)) as value,
  'Temperaturprognose' as metric
FROM current
Where device = 'Dienst_Wetter_Siegelsbach'
And reading = 'temperature'
Union
SELECT
  UNIX_TIMESTAMP(STR_TO_DATE(Concat(DATE_FORMAT(timestamp, '%Y%m%d')+(SubString(reading, 3,1)), SubString(reading, 9,2)), '%Y%m%d %H')) as time_sec,
  Cast(value as decimal(10,1)) as value,
  'Temperaturprognose' as metric
FROM current
Where device = 'Dienst_Wetter_Siegelsbach'
And STR_TO_DATE(Concat(DATE_FORMAT(timestamp, '%Y%m%d')+(SubString(reading, 3,1)), SubString(reading, 9,2)), '%Y%m%d %H') > now()
And reading Like 'fc_\_temp__'
) Wetterprognose
Where $__timeFilter(FROM_UNIXTIME(time_sec))
ORDER BY time_sec ASC

Der Chart der Temperaturprognose beginnt am letzten gemeldeten Ist-Wert der Temperatur (erster Teil des Union) und anschließend werden die fc*_temp**-Einträge zerlegt.

Damit die Anzeige auch stattfindet, den Zeitfilter von Grafana (oben rechts) korrekt einstellen, z.B. auf "now-2d to now+9d".
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 12 November 2018, 11:33:57
Hallo, irgendwie habe ich Probleme bei grafana mit der Zeiteinstellung oder Zeitumstellung.
Meine Plots hören alle 1 Stunde vor der aktuellen Zeit auf, s. Screenshot.
FHEM loggt aber richtig und zeigt mir die Einträge auch bis "jetzt" richtig an.
Ich habe keine Ahnung warum aber grafana diese Werte nicht darstellt.
Wenn ich bei metrics auf Generated SQL gehen dann hört das immer eine Stunde vorher auf.

Kann mir jemand evtl. einen Tip geben woran das liegen kann?

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 12 November 2018, 12:00:21
Hast du dich mal direkt per MYSQL Konsole oder phpMyAdmin eingeloggt und geschaut ob aktuellere Daten da sind?

Kann theroretisch auch am Async-Betrieb deiner DBLog Instanz liegen.
Ich hab hier die Zeitabstände bzw. die Anzahl der nötigen Logeinträge bevor der Cache in die DB übertragen wird auch entsprechend angepasst,
damit die Daten schneller in der DB und somit auch in Grafana landen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: LordVoodoo am 12 November 2018, 12:05:30
Hatte den Zeitversatz anfangs auch. In den Grafana-Einstellungen kann man auf „Browser“-Zeit (oder ähnlich) einstellen. Danach stimmten Darstellung und Zeitpunkt gem. Datenbank bei mir.

Einstellung ist unter:
Preferences > Local Browser Time


Gesendet von iPhone mit Tapatalk
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 12 November 2018, 12:11:14
Wenn ich mir die Plots von FHEM anschaue dann gibt es aktuelle Daten.
Auch bringt ein umstellen auf local Browser time keine Veränderung.
Was mich halt wundert ist das er bei Generated SQL eine Stunde vorher aufhört.

Jetzt gerade erzeugt
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT(VALUE, double) as value,
  "Verbrauch" as metric
FROM history
WHERE READING="power" AND DEVICE="KE_u_Sd_Waschmaschine_Pwr" AND TIMESTAMP BETWEEN '2018-11-12T05:10:08Z' AND '2018-11-12T11:10:08Z'

Er hört mit dem timestamp um 11:10 Uhr auf obwohl es 12:10 Uhr ist.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: jostereo am 13 November 2018, 09:21:55
Schau dir vielleicht mal die Zeiteinstellung des Grafana Servers an.

Also der Maschine, auf der Grafana läuft.

Die Stunde zurück deutet sehr stark auf GMT Zeit hin.

Wir (Deutschland) sind ja GMT + 1 Stunde.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: devil77 am 13 November 2018, 09:32:09
Dachte ich auch aber überall (Docker / Synology) ist UTC gleich eingestellt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SabineT am 13 November 2018, 12:02:22
Die Endzeit '2018-11-12T11:10:08Z' ist auch 11:10 GMT (das Z am Ende steht da für Zero bzw. Zulu).
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: saschae am 19 November 2018, 04:49:04
Also das problem das die kurven erst mit einer Stunde Verzögerung anfangen habe ich auch.
In der Datenbank stehen Definitiv Aktuellere Daten

Wenn man in Grafana die Ansicht auf Today stellt zeigt es auch die letzten Daten an aber bei allen anderen Zeiteinheiten ist die Stunde Versatz vorhanden .....
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 07 Dezember 2018, 07:48:44
Moin,

ich bekomme in der DB um 00:00:00 immer Stromwerte vom Vortag.

Der Select dazu sieht so aus

SELECT
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d')) as time,
CONVERT(VALUE, INTEGER) as value,
    "Stromverbrauch Tag" as metric
  FROM history
  WHERE READING="Energy_DayLast" AND DEVICE="Stromzaehler" AND $__timeFilter(TIMESTAMP)

Logischerweise ist der Zeitstempel aber immer für den nächsten Tag, so das die Balken nicht stimmen. Wie kann ich den Select so anpassen, das er  den Timestamp manipuliert, so das er auf den vorherigen Tag zeigt?

Beispiel eines Datensatzes

2018-12-07 00:00:01 Stromzaehler OBIS Energy_DayLast: 11.465 Energy_DayLast 11.465
Der DB Eintrag ist vom 07.12, die Werte aber logischerweise vom 06.12.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: LordVoodoo am 07 Dezember 2018, 08:13:59
Du könntest auf den Zeitstempel eine Sekunde aufaddieren, das ist genau genug, sollte aber das Datum richtig setzen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Kai-Alfonso am 07 Dezember 2018, 08:16:35
Du könntest auf den Zeitstempel eine Sekunde aufaddieren, das ist genau genug, sollte aber das Datum richtig setzen.

müsste ich nicht 2 Sekunden subtrahieren?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: oliverr am 15 Dezember 2018, 22:21:39
Hallo Thyraz,

bin gerade über diesen Graphen gestolpert und wollte ihn Nachbauen.

Ich bekomme diese Fehlermeldung:
Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM (SELECT TIMESTAMP, VALUE
         FROM history
         WHERE READING="temperature" AND' at line 5

Da passt wohl was nicht zusammen, aber dafür bin ich in sql einfach zu schlecht um es heraus zu finden und zu beheben.

Grüße,
Oliver

Beispiel: Bereich zwischen 2 Kurven füllen statt bis zur Nulllinie

Ein Feature, das mit anderen Charting Lösungen in FHEM meines Wissens nach bisher nicht ging (man korrigiere mich gerne ;)).
Ich habe hier ein Temperaturchart, welches über das ganze Jahr hinweg die Tagesmitteltemperatur anzeigt.

Da diese allein aber noch nicht so wirklich aussagekräftig ist, wird dahinter noch der Bereich zwischen Min/Max Temperatur des Tages angezeigt.
Gerade die letzten Tage haben wir ja eine Hohe Max-Temperatur aber durch die kalten Nächte dennoch keine wirklich hohen Durchschnittstemperaturen.

Dazu habe ich 3 Kurven angelegt.

Tagesmitteltemperatur:
SELECT
  UNIX_TIMESTAMP((TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, double)) as value,
  "Tagesdurchschnitt" as metric
FROM (SELECT TIMESTAMP, VALUE
FROM history
WHERE READING="temperatureVal" AND DEVICE="Thermometer02" AND $__timeFilter(TIMESTAMP)
GROUP BY DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H')
ORDER BY TIMESTAMP ) h
GROUP BY UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d'))

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: dirkbalzer am 21 Dezember 2018, 18:35:11
Guten Morgen,

was du suchst mache ich beim SysMon, da hier mehrere Werte in einem Reading gespeichert werden - das "Zauberwort" heißt substring_index. Hier meine Auswertung als Beispiel, bei dir musst du statt der 4 vermutlich eine 2 nehmen und das "100-" kann bei dir auch weg:
...

Ronny


Das passt ja. Ich habe heute Sysmon installiert und bin gerade auf der Suche nach entsprechenden Codeschnipseln für Grafana.
Kannst du mal zeigen was du alles von Sysmon loggst und wie die Graphen dann aussehen? Das würde mir eine menge Arbeit sparen.
Weil ich sags mal so .. der Teil mit CPU Gesamt und dem Substring ... da währ ich nie drauf gekommen  ;D
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: chriss1006 am 27 Dezember 2018, 15:19:35
Ich habe nun auch Grafana nach der Anleitung im Wiki installiert und es hat auch alles super geklappt. Vielen Dank erst mal dafür.

Nun habe ich aber ebenfalls ein unschönes Darstellungsproblem. Meine Plots fangen alle erst um 1 Uhr nachts an. Es gibt definitiv Logeinträge auch vor 1 Uhr, allerdings werden diese in keinem Graphen angezeigt.

Hat jemand eine Idee was man da machen kann?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: oliverr am 02 Januar 2019, 21:32:03
Hallo,

habe auch mal DBlog eingerichtet und mir einige Grafana Plots erstellt. Ist wirklich schön.
Habe hier einen Feinstaubsensor, der schon lange in eine influxDB schreibt und erst seid kurzen in die Datenbank für FHEM.
Da ich gerade mit Durchschnittswerten und Anzeigen am basteln bin, würde ich gerne auch ältere Daten die in der influxDB sind in die mysql DB einfügen um so meine historischen Daten auch auswerten zu können (mit den Abfragen die ich schon habe).

Wie bekommt man die Daten von influxDB in die mysql DB?

Umgekehrt habe ich schon viel gelesen.

Grüße,
Oliver
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: chriss1006 am 14 Januar 2019, 17:57:22
Ich habe das Problem auch, dass die Plots erst um 1 Uhr beginnen. Geholfen habe ich mir damit, dass ich die Zeitzone von Grafana auf UTC umgestellt habe und in jedem Plot einen Offset von 1 Stunde eingefügt habe.
Somit stimmen nun die Plots, aber irgendwie kann ich mir nicht vorstellen das das im Sinne des Erfinders ist.

Wundert mich, dass das Problem nur bei einigen wenigen Usern zu sein scheint.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 21 Januar 2019, 10:13:22
kurze frage wie schaut es mit Grafana und einem ext. mysql server aus ? Würde gerne mein FHEM auch in mysql loggen aber ext. Docker auf ner Synology NAS.
Was verbraucht Grafana ? Sollte ich dafür ein extra Docker laufen lassen ?
Mein Pi3 hat aktuell Fhem und iobroker drauf ich denke da wäre Grafana dann etwas zu viel?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 21 Januar 2019, 10:27:23
ich habe fhem, mysql und grafana auf RPi3 mit load 0,05, CPU 5% usw
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Januar 2019, 12:58:16
kurze frage wie schaut es mit Grafana und einem ext. mysql server aus ? Würde gerne mein FHEM auch in mysql loggen aber ext. Docker auf ner Synology NAS.
Was verbraucht Grafana ? Sollte ich dafür ein extra Docker laufen lassen ?
Mein Pi3 hat aktuell Fhem und iobroker drauf ich denke da wäre Grafana dann etwas zu viel?

CPU reicht für Grafana problemlos. Was du aber prüfen und beachten solltest ... Grafana läuft auf dem Raspberry, Daten kommen über das Netzwerk. Je nachdem wie oft und wie lange die Verbindung über das Netzwerk geht kann es Wartezeiten geben. Wenn Grafana zusammen mit der DB auf der Synology läuft werden nur die fertigen Grafiken über das Netz übertragen.

Muss man halt mal testen, denke die Reaktionszeit mit beiden Docker auf der Synology ist schneller.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 21 Januar 2019, 16:44:49
hm also irgendwie klappen bei mir die Muster nicht. Kann es sein das ich in der db.conf "utf8 => 1" aktiv habe ?? Oder mysql8 benutze ?
Value column must have numeric datatype, column: value type: string value: 18.7

So schaut es in phpmyadmin aus:
2019-01-21 16:18:54
temp_keller
LACROSSE
temperature2: 18.6
temperature2
18.6
°C
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Januar 2019, 16:55:16
hm also irgendwie klappen bei mir die Muster nicht. Kann es sein das ich in der db.conf "utf8 => 1" aktiv habe ?? Oder mysql8 benutze ?
Value column must have numeric datatype, column: value type: string value: 18.7

Wo genau bekommst du die Meldung? Welche Anleitung bzw. welche Query hast du wo eingebaut? Ich nutze zwar InfluxDB für Grafana, aber bin selber grad am rumtesten dann kann ich es ggf. später mal einklopfen ...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag 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
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Januar 2019, 17:46:06
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.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Januar 2019, 17:50:39
https://github.com/grafana/grafana/issues/12463
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 21 Januar 2019, 20:34:41
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 ...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Januar 2019, 21:02:03
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
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 21 Januar 2019, 21:13:10
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
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Januar 2019, 21:41:28
decimals ... https://stackoverflow.com/questions/40049980/how-to-display-values-with-decimal-places-in-grafana-with-elasticsearch-datasour

color .... http://docs.grafana.org/features/panels/graph/ ... auf die Legende klicken und anpassen
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag 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 ??

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 ?

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 22 Januar 2019, 15:31:51
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.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag 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.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag 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?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 22 Januar 2019, 18:47:10
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.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 22 Januar 2019, 21:09:04
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
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 23 Januar 2019, 05:52:06
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?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 23 Januar 2019, 08:00:27
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
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 23 Januar 2019, 09:13:19
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   
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 23 Januar 2019, 10:47:00
fehlermeldung ... ich hab das nur aus dem bugreport übernommen. hab aktuell keinen zugriff auf ein mysql zum testen.

aktuelles setup: dashboard ist utc und es geht 1 stunde "nach"? und im dashboard ist aktuell utc eingestellt (wegen roter warnung)? wenn du das dashboard auf local browser time stellst sollte das doch passen, oder?

mir fehlt etwas die übersicht, welches tool welche zeitzone hat. die eine stunde differenz ist CET <--> UTC. wenn du um 9.21 im dashboward 8.21 UTC angezeigt bekommst ist das ja richtig.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 23 Januar 2019, 10:57:55
Hmmm also ich weiss auch nicht mehr weiter also
FHEM Filelog und mysql sagen 2019-01-23 08:09:58 22
In grafana mit Einstellung UTC und Dashboatd Browser Time ist das 22c bei : 2019-01-23 09:09:58 22.00 c

Die anzeige in der Grafik simmt es geht durch bis zur richtigen Uhrzeit also 10:49 Uhr
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 23 Januar 2019, 20:47:49
Hallo

Versuche mein Glück jetzt mal mit dem Problem was ich habe hier im Forum.
Das sieht so aus. Habe einen S0 Stromzähler, der schreibt die Daten in meine MariaDB und speichert die so ab.

Zitat
id | channel_id   | timestamp | value
1188122 | 16 | 1509134552863 | 1
1188117 | 16 | 1509134355607 | 1
1188116 | 16 | 1509134306097 | 1
1188115 | 16 | 1509134258030 | 1
1188113 | 16 | 1509134217868 | 1
1188106 | 16 | 1509134177735 | 1
1188104 |   16 | 1509134137744 | 1
1188101 |   16 | 1509134098104 | 1
1188097 | 16 | 1509134058869 | 1
1188095 | 16 | 1509134020423 | 1
1188091 | 16 | 1509133982958 | 1
1188088 |   16 | 1509133945493 | 1
1188085 | 16 | 1509133908074 | 1
1188079 | 16 | 1509133870714 | 1
1188078 | 16 | 1509133815953 | 1

Der Zähler wird vom „Volkszähler“ eingelesen Dieser kann die zwar als Graph darstellen, mir gefällt das aber nicht so gut. Möchte das daher in Grafana darstellen.
Jeder Impuls vom Stromzähler wird als Value 1 mit Timestap abgespeichert.

Diese Werte möchte ich nun mit Grafana darstellen.
Mit Diesem Code bekomme ich über die Ganze Zeitlinie nur 1 angezeigt

Zitat
SELECT
  timestamp/1000 as time_sec,
  data.value as value,
  properties.value as metric
FROM data
  LEFT JOIN properties ON (properties.entity_id = data.channel_id)
  LEFT JOIN entities ON (entities.id = data.channel_id)
WHERE
  (channel_id = 1 || channel_id = 2 || channel_id = 3)  AND
  (timestamp/1000) >= $__unixEpochFrom() AND
  (timestamp/1000) <= $__unixEpochTo() AND
  properties.pkey = 'title'
ORDER BY timestamp ASC

Mit diesem hier habe ich zwar einen Graphen, aber die Werte stimmen nicht.

Zitat
SELECT
  cast((timestamp/1000)/300 as signed integer)*300 as time_sec,
  sum(value) as value,
  "Stromverbrauch" as metric
FROM data
WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1
GROUP BY 1
ORDER BY 1

Hoffe mir kann hier jemand helfen


Gruß
Happyuser20
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 00:46:55
Definiere "stimmen nicht" was willst du darstellen? Ein Impuls ist ein kWh und du willst auf Minuten aggregieren? Oder was ist die Anforderung?
 Schau dir mal Eintrag 4 auf Seite 1 an. Ist das was du willst?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 24 Januar 2019, 05:29:28
Ich möchte das so darstellen wie im Anhang.

Mein Zähler liefert 150 Impulse pro kWh. So ähnlich wie in Beitrag vier.

Definiere „stimmen nicht“

Wenn ich das letzte Beispiel verwende (timestap/1000)/300 usw.) habe zwar einen Graphen wie im Anhang, aber ganz andere Werte zu unterschiedlichen Zeiten, wenn ich die beiden Kurven vergleiche.

Gruß
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 06:54:50
definiere "stimmt nicht". aktuell weiß ich dass du ewas darstellen willst das aussieht wie etwas anderes. was ist die einheit? aggregation watt pro minuten?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 24 Januar 2019, 08:28:40
Ich möchte den Watt oder Kilowatt verbrauch, völlig egal, über die Zeit darstellen. So wie auf dem Foto vorher.

Momentan läuft das ganze auf dem Volkszähler der auch das Frontend stellt.
Wenn ich die gleichen Daten aus der Datenbank verwende und mit diesem Code

Zitat
SELECT
  cast((timestamp/1000)/300 as signed integer)*300 as time_sec,
  sum(value) as value,
  "Stromverbrauch" as metric
FROM data
WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1
GROUP BY 1
ORDER BY 1


in Grafana auslese

Bekomme ich z.B am 1.1.2019 um 18:00
bei Grafana 800 Watt verbrauch
beim Volkszähler 2500.

Ich hoffe ich habe es jetzt verständlich rübergebracht.

Gruß.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 24 Januar 2019, 08:32:08
booooor also nach langennn hin und her aktuell scheint das zu stimmen:
/org dort Browser Time
im Dashboard UTC

Jetzt stimmen die Angaben auch.

Ich nutze Current und History was wohl nun dafür sorgt das die letzten ( Neusten Werte ) nicht angezeigt werden. Welche vorteil soll dieses Current überhaupt haben ? Nur das Aktuelle Werte schneller ausgegeben werde und nicht in der großen Histrory geschaut wird ? Weil dann stelle ich komplett nur auf History um
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 10:07:49
Welche vorteil soll dieses Current überhaupt haben ? Nur das Aktuelle Werte schneller ausgegeben werde und nicht in der großen Histrory geschaut wird ? Weil dann stelle ich komplett nur auf History um

Current brauchst nicht mehr wenn ein Attribut entsprechend gesetzt ist ... s. Commandref. Im history-mode bleibt current-Tabelle leer. Ist auch mitlerweile default.

DbLogType
attr <device> DbLogType [Current|History|Current/History|SampleFill/History]
Dieses Attribut legt fest, welche Tabelle oder Tabellen in der Datenbank genutzt werden sollen. Ist dieses Attribut nicht gesetzt, wird per default die Einstellung history verwendet.

Bedeutung der Einstellungen sind:

Current Events werden nur in die current-Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet.
History Events werden nur in die history-Tabelle geloggt. Es wird keine DropDown-Liste mit Vorschlägen bei der SVG-Erstellung erzeugt.
Current/History Events werden sowohl in die current- also auch in die hitory Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet.
SampleFill/History Events werden nur in die history-Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet und kann zur Erzeugung einer DropDown-Liste mittels einem DbRep-Device
"set <DbRep-Name> tableCurrentFillup" mit einem einstellbaren Extract der history-Tabelle gefüllt werden (advanced Feature).


Hinweis:
Die Current-Tabelle muß genutzt werden um eine Device:Reading-DropDownliste zur Erstellung eines SVG-Plots zu erhalten.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 10:20:49
Ich möchte den Watt oder Kilowatt verbrauch, völlig egal, über die Zeit darstellen. So wie auf dem Foto vorher.

Momentan läuft das ganze auf dem Volkszähler der auch das Frontend stellt.
Wenn ich die gleichen Daten aus der Datenbank verwende und mit diesem Code

Solange du nicht weißt was die Einheit ist, bzw. auf welche Zeiteinheit aggregiert werden soll mögen beide Plots korrekt sein. Sie zeigen nur eine andere Sicht. Bevor wir hier weiterraten rechne doch mal nach, ob deine geloggten Werte ggf. Watt/min darstellen sollen. Wenn ja schaun wir weiter.

Lösung könnte dann das Macro für MySQL ... $__timeGroup(dateColumn, '1m') .... sein, wenn Watt/min gewollt ist. http://docs.grafana.org/features/datasources/mysql/

ChrisW hatte ein Problem mit Zeitzonen, kann es bei dir sein, dass der Plot nur um eine oder n-Stunden verschoben ist.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 24 Januar 2019, 11:13:59
Okay dann kann ich ja nun langsam mal etwas rumspielen :)

Da du ja der Profi hier bist vielleicht hast du eine Idee / Lösung.
Ich würde mir gerne ein iagramm / Balken anzeigen lassen

Ich habe einen dummy dHeizung das loggt on / off und die Zeiten dazu

 Internals:
   CHANGED   
   FUUID      5c4746ac-f33f-678b-6af5-2a67bf9cbff77ea4
   NAME       dHeizung
   NR         979
   STATE      on
   TYPE       dummy
   .attraggr:
   .attreocr:
     .*
   .attrminint:
   Helper:
     DBLOG:
       statStateDayLast:
         myDbLog:
           TIME       1548284395.57082
           VALUE      off: 16:46:17 off_Count: 32 on: 07:13:43 on_Count: 31
       state:
         myDbLog:
           TIME       1548323881.81365
           VALUE      on
   READINGS:
     2019-01-24 10:59:55   statStateDay    off: 07:43:44 off_Count: 12 on: 03:16:16 on_Count: 12
     2019-01-23 23:59:55   statStateDayLast off: 16:46:17 off_Count: 32 on: 07:13:43 on_Count: 31
     2019-01-24 10:59:55   statStateMonth  off: 1d 05:21:02 off_Count: 50 on: 11:56:26 on_Count: 50 (since: 2019-01-22_17:42:27)
     2019-01-24 10:59:55   statStateYear   off: 1d 05:21:02 off_Count: 50 on: 11:56:26 on_Count: 50 (since: 2019-01-22_17:42:27)
     2019-01-24 10:58:01   state           on
   helper:
     _98_statistics myStatDevice
Attributes:
   DbLogExclude .*
   DbLogInclude state,statStateYear,statStateDayLast,statStateMonth,statStateYear
   event-on-change-reading .*
   room       Heizung
Ich zähle hier wie lange Heizung AN / AUS war.
Ich würde das gerne als Monatsansicht haben also die ON Zeit.
Bekomme Täglich 23:59 folgendes im Log:
statStateDay    off: 07:43:44 off_Count: 12 on: 03:16:16 on_Count: 12
Schön wäre also eine Bar die die on Zeit ausgibt als Monatsansicht.
Sehr geil wäre es wenn die Anzeite wie oft ON geschaltet wurde. Also Wieviele Brenner Starts.
(Und Sehr Sehr geil wäre eine Liene mit der Außentemperatur. << ABER ich denke das Kombinieren wird hier schwer.)

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 24 Januar 2019, 11:43:44
Zitat
Solange du nicht weißt was die Einheit ist, bzw. auf welche Zeiteinheit aggregiert werden soll mögen beide Plots korrekt sein. Sie zeigen nur eine andere Sicht. Bevor wir hier weiterraten rechne doch mal nach, ob deine geloggten Werte ggf. Watt/min darstellen sollen. Wenn ja schaun wir weiter.

Lösung könnte dann das Macro für MySQL ... $__timeGroup(dateColumn, '1m') .... sein, wenn Watt/min gewollt ist. http://docs.grafana.org/features/datasources/mysql/

ChrisW hatte ein Problem mit Zeitzonen, kann es bei dir sein, dass der Plot nur um eine oder n-Stunden verschoben ist.
Tut mir leid, ich kann dir leider nicht so richtig folgen.
Ich verstehe gerade nicht wieso ich eine Zeiteinheit angeben muss. Das ist doch variabel, je nach dem wie weit ich reinzoome oder rauszoome.

Ich stelle mir das so vor: links die Achse mit Watt, unten die Zeit von Beginn der Aufzeichnung bis jetzt.
Wenn ich jetzt auf z.B. 18:31 am 24.12.18 gehe, möchte ich sehen wieviel Watt ich zu dem Zeitpunkt verbraucht habe. Der Gesamtverbrauch soll natürlich kw/h sein.
Der Zähler selbst bringt 150 Impulse pro kWh, jeder Impuls vom Zähler wird mit der Unixtime abgespeichert und daraus muss man das doch ausrechnen können, wieviel Watt zwischen den Impulsen verbraucht wurde?

Oder liege ich da komplett falsch??

Zitat
ChrisW hatte ein Problem mit Zeitzonen, kann es bei dir sein, dass der Plot nur um eine oder n-Stunden verschoben ist.

Werde mir das die tage nochmal anschauen in Grafana und zum Vergleich im Volkszähler.

Gruß
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 12:47:00
Wenn ich jetzt auf z.B. 18:31 am 24.12.18 gehe, möchte ich sehen wieviel Watt ich zu dem Zeitpunkt verbraucht habe.

Und genau darum geht es ... du verbrauchst eben nicht zu einem "Zeitpunkt", die Watt sind nicht einfach - flopp - weg. Watt ist Leistung. Du "verbrauchst" über einen Zeitraum, das ist aber dann Arbeit (Arbeit = Leistung durch Zeit). WAs bedeutet ein Wert 20 ... was soll der aussagen? 20 Watt/min? Arithmetisches Mittel über irgend was in der Stunde, Normalverteilung .. was auch immer. Ist die Kurve irgendwie geglättet ...

Solange du nicht definierst was du willst kann man nicht sagen wie du da hinkommst. Da musst du erstmal in deinem anderen Tool nachschaun oder aus deinen Zahlenreihen rausrechnen. Oder im Forum des Tools das  es "richtig" macht nachfragen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 13:06:00
Da du ja der Profi hier bist vielleicht hast du eine Idee / Lösung.
Ich würde mir gerne ein iagramm / Balken anzeigen lassen

Ich habe einen dummy dHeizung das loggt on / off und die Zeiten dazu

Ich zähle hier wie lange Heizung AN / AUS war.
Ich würde das gerne als Monatsansicht haben also die ON Zeit.
Bekomme Täglich 23:59 folgendes im Log:

Schön wäre also eine Bar die die on Zeit ausgibt als Monatsansicht.
Sehr geil wäre es wenn die Anzeite wie oft ON geschaltet wurde. Also Wieviele Brenner Starts.
(Und Sehr Sehr geil wäre eine Liene mit der Außentemperatur. << ABER ich denke das Kombinieren wird hier schwer.)

Profi ist vielleicht etwas übertrieben. Ich nutze nichtmal Mysql für Grafana, ich schreibe aktuell alles von MySQL in InfluxDB (zyklisch) und werde irgendwann vollständig auf InfluxDB umsteigen sobald ich mal meine Dashboards gebaut habe. Influx ist m. E. einfach besser geeignet und schneller. Aktuell habe ich nur die Doku gelesen und etwas in Docker auf einer VM rumgespielt.

Gehen tut vieles. Wenn es dir nur um die Starts geht würde ich dem Dummy den Wert 1 geben für ein und 0 für aus (statt on/off). Schon als zu speichernden Wert. Du musst dann aber auch even-on-change readings machen damit du nicht zu zählst.

Dann einfach über die Zeit aggregieren. Wenn du als Einheit 1 Stunde nimmst musst du nur die Value-Tabelle aufaddieren. Auch das mit Linien kombinieren sollte gehen, du kannst mehrere Reihen in ein Diagramm geben und denen dann Linie oder andere Darstellung zuweisen. Den Link hab ich oben schon mal gepostet .. da wurde das auch gemacht ... https://community.hiveeyes.org/t/abweichungen-pro-tag-als-balken-in-gewichtsgrafik-anzeigen/748/3

Ich stelle mir nur die Frage, wie aussagekräftig ist ein Start eines Brenners zu zählen. Wäre die Laufzeit nicht viel besser? Auch dass ist möglich, einfach ein Dummy füllen wenn von on-->off geschaltet wird. Zeit aus Readings age ... irgendwie. Müsste man sich etwas Gedanken machen. ... Ansatz ähnlich wie hier ... https://forum.fhem.de/index.php?topic=48059.0

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 24 Januar 2019, 15:53:39
hi,
ja ich will ja auch die Lautzeit haben ;) Also Laufzeit soll in den Balken als Diagramm Monatsansicht.  Das simple würde mich schon reichen ;) Ich weiss nur noch nicht wie ich den wert als value bekomme da dort ja noch viel mehr drin steht.
Kann ich den Code einfach von der Temperatur nehmen ? Dort dann per regex ? Geht das wie bei den fhem Plots mit stellen ??
Und da gibt es doch nocht Probleme hab ein Beispiel vorne gesehe  da es ja um 23:59 gepostet wird ...

Wie kann ich das den mal testen mit InfluxDB ? Aber ob das so viel einfacher für mich sein wird ? (könnte ja per iobroker in so eine DB loggen )
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 19:37:08
ja ich will ja auch die Lautzeit haben ;) Also Laufzeit soll in den Balken als Diagramm Monatsansicht.  Das simple würde mich schon reichen ;) Ich weiss nur noch nicht wie ich den wert als value bekomme da dort ja noch viel mehr drin steht.

z. B. so ... s. u.
- Reading on_off hat 0 oder 1 ... diese kannst du über Zeitaggregation auf Stunde, Tag ... verarbeiten
- Reading timecnt hat beim Wechsel von on-->off die Zeit die das Reading state auf "on" war. Auch das kannst du über Aggregation aufaddieren. Kein Hexenwerk

defmod dy_dummy dummy
attr dy_dummy event-on-change-reading on_off,timecnt
attr dy_dummy userReadings timecnt {((ReadingsVal($name,"state",0) eq 'off' ) ? ReadingsAge($name,"timecnt",121) : 0)},on_off {((ReadingsVal($name,"state",0) eq 'off' ) ? 0 : 1)}

Kann ich den Code einfach von der Temperatur nehmen ? Dort dann per regex ? Geht das wie bei den fhem Plots mit stellen ??
Ist das eine Frage? Verstehe ich nicht, bzw. weiß nicht worauf du referenzierst.


Und da gibt es doch nocht Probleme hab ein Beispiel vorne gesehe  da es ja um 23:59 gepostet wird ...
Möglich, müsste man sich ansehen


Wie kann ich das den mal testen mit InfluxDB ? Aber ob das so viel einfacher für mich sein wird ? (könnte ja per iobroker in so eine DB loggen )

Loggen kann auch Fhem, muss nicht IOBroker sein. Gibt ein Modul für InfluxDB, siehe ... https://forum.fhem.de/index.php/topic,71551.0.html

InfluxDB ist halt sehr gut in Grafana integriert. Brauchst dann in Grafana keine SQL-Statements bearbeiten, geht viel über Menü und Dropdown. Du kannst dir mal das in Youtube ansehen, dauert nicht all zu lange aber dann kannst dir selbst ein Bild davon machen. https://www.youtube.com/playlist?list=PL5cpKC5uartgYqiwGNlJ94eqSonl2dk7e

Ich habe aktuell DBLog und InfluxDB in Fhem parallel laufen. Das funktioniert. Du hast von Docker auf Synology gesprochen. Kannst ja zum Test den InfluxDB Container einbinden.

Einfacher? Kann ich nicht sagen. Du musst in Fhem sauber loggen, wenn die Hürde überwunden ist geht es in Grafana dafür einfacher, zumindest mein Empfinden. Nachteil ist aktuell der Beta-Status von Influx da es noch nicht von vielen genutzt wird. Ich mache es weil ich es einfacher empfinde und mich das Thema auch beruflich reizt. Müsste Influx schneller sein.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 24 Januar 2019, 22:02:48
Und genau darum geht es ... du verbrauchst eben nicht zu einem "Zeitpunkt", die Watt sind nicht einfach - flopp - weg. Watt ist Leistung. Du "verbrauchst" über einen Zeitraum, das ist aber dann Arbeit (Arbeit = Leistung durch Zeit). WAs bedeutet ein Wert 20 ... was soll der aussagen? 20 Watt/min? Arithmetisches Mittel über irgend was in der Stunde, Normalverteilung .. was auch immer. Ist die Kurve irgendwie geglättet ...

Solange du nicht definierst was du willst kann man nicht sagen wie du da hinkommst. Da musst du erstmal in deinem anderen Tool nachschaun oder aus deinen Zahlenreihen rausrechnen. Oder im Forum des Tools das  es "richtig" macht nachfragen.

weil meine Glaskugel mal Zeit hatte und ich zum Test mal mit mySql testen wollte ... select unten sollte watt/min ausgeben. Wenns das nicht ist bin ich raus bis brauchbarer input kommt.

channel_id = 16
tabellenname = data
name = Stromverbrauch
SELECT
  ((timestamp DIV 60000) * 60 ) + 60 as time_sec,
  sum(value) as value,
  "Stromverbrauch" as metric
FROM data
WHERE timestamp >= $__unixEpochFrom()*1000 AND timestamp <= $__unixEpochTo()*1000 AND channel_id = 16
GROUP BY time_sec
ORDER BY $__unixEpochGroup(time_sec,$__interval)

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 07:39:08
Okayy also ich werde mich auch mit der influxdb mal beschäftigen. Leider im Docker nicht ganz so einfach .. Brauche ja auch chronograph zur Verwaltung. Das Interne Admin von influxdb gibt es wohl nicht mehr in der neusten Docker .. bekomme nurnoch 404 ... Habs gefrickelt nun am laufen. Schauen das sich Testwese mal Daten rein bekomme...

Zu den Heizungszeiten okay passt nicht mehr so ganz hier hin aber ich habe dHeizung nun bei on ein 1 verpasst und bei off eine 0. Hat es per set dHeizung 1 / set dHeizung 0 ausprobiert aber es zählt nichts. Also auch nicht wenn ich 1-2 Minuten 1 lasse .. Hier das list:
Internals:
   CHANGED   
   FUUID      5c4746ac-f33f-678b-6af5-2a67bf9cbff77ea4
   NAME       dHeizung
   NR         979
   STATE      0
   TYPE       dummy
   .attraggr:
   .attreocr:
     on_off
     timecnt
   .attrminint:
   .userReadings:
     HASH(0x5456970)
     HASH(0x62c4fa8)
   Helper:
     DBLOG:
       on_off:
         myDbLog:
           TIME       1548397890.0526
           VALUE      1
       statStateDayLast:
         myDbLog:
           TIME       1548370795.52726
           VALUE      off: 16:31:47 off_Count: 32 on: 07:28:13 on_Count: 31
       state:
         myDbLog:
           TIME       1548397046.32765
           VALUE      off
       timecnt:
         myDbLog:
           TIME       1548397890.0526
           VALUE      0
   READINGS:
     2019-01-25 07:35:13   on_off          1
     2019-01-25 07:31:30   statStateDay    2_Count: 1 off: 05:44:23 off_Count: 4 on: 01:47:12 on_Count: 3
     2019-01-24 23:59:55   statStateDayLast off: 16:31:47 off_Count: 32 on: 07:28:13 on_Count: 31
     2019-01-25 07:31:30   statStateMonth  2_Count: 1 off: 1d 19:53:28 off_Count: 73 on: 17:55:35 on_Count: 72 (since: 2019-01-22_17:42:27)
     2019-01-25 07:31:30   statStateYear   2_Count: 1 off: 1d 19:53:28 off_Count: 73 on: 17:55:35 on_Count: 72 (since: 2019-01-22_17:42:27)
     2019-01-25 07:35:13   state           0
     2019-01-25 07:35:13   timecnt         0
   helper:
     _98_statistics myStatDevice
Attributes:
   DbLogInclude .*
   event-on-change-reading on_off,timecnt
   room       Heizung
   userReadings timecnt {((ReadingsVal($name,"state",0) eq 'off' ) ? ReadingsAge($name,"timecnt",121) : 0)},on_off {((ReadingsVal($name,"state",0) eq 'off' ) ? 0 : 1)}
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 Januar 2019, 08:31:34
Chronograf brauchst nicht, geht auch über console oder 3rd party tools. darum auch die Referenz auf die cli im anderen Thread.

Heizzeiten ... du hast state 0 oder 1, mein Beispiel fragt auf on/off (default bei dummy) ab. Ersetze bei den userReadings     "eq 'off'"   durch " = 0".  Das Reading on_off bräuchtest dann eigentlich nicht mehr, wäre dann identisch zu deinem aktuellen state. Würde es aber dennoch erstmal lassen damit du mit event-on-change-** experimentieren kannst.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 09:14:29
Okay Danke
Hab nun influxdb laufen. Per Chronograf kann ich auf die FHEM Tabelle gehen AC.Power und recht value und da sehe ich sogar DIREKT eine Grafik mit den Zeiten ..

So Grafana Source hinzugefügt. Neues Dashboard ( wegen dem UTC Problemen ) Wähle die Source aus dann sehe ich auch unten Add Query da tauchen auch die ganzen Geräte aus. Wähle AC.Power nichts ..
Oben steht nur
Could not find query part column

Laut google liegt es am Dashboard ich muss das Trennen .. habe ich ja .. ganz neues Dashboard auch andere Zeit

Ich habe ein Youtube VIdeo gesehen da ist dann auch sofort eine Grafik gekommen ... frage mich wieso es bei mir wieder nicht klappt


EDIT: Es lag daran das die mysql Source Default gesetzt war. Das hat den Grafen dann direkt kaputt gemacht. Also influxdb als default und klappt
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 Januar 2019, 09:25:22
ich empfehle dir, direkt in der datasource das flag "default" in der influx zu setzen. dann ist bei jedem neuen dashboard vorausgewählt. du siehts jetzt was ich meinte ... kurz datenquelle, zeitreihe auswählen und du siehts den plot ohne ewig mit irgend welchen mysql aggregationen oder besonderheiten rumspielen zu müssen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 09:35:22
ja gefällt mir wirklich sehr gut ;) Leider Bremst das influxdb Modul mein FHem .. OKAY ich packe gerade ALLES da rein pro Sekkunfe 2-3 Werte...
Ich denke ich werde mit dem Script arbeiten was mir alle X Minuten das sql in influxdb umwandelt..

Bezüglich der Heizungszeiten.
Ich habe es wieder so geändert das on / off gesetzt werden. Somit geht dein reading wunderbar. Das timecnt aber nicht das bleibt immer bei 0.
Aber grafana kann doch das schon errechnen oder ?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 Januar 2019, 10:09:54
Bezüglich der Heizungszeiten.
Ich habe es wieder so geändert das on / off gesetzt werden. Somit geht dein reading wunderbar. Das timecnt aber nicht das bleibt immer bei 0.
Aber grafana kann doch das schon errechnen oder ?

ich weiß nicht was du mit errechnen meinst. on-off zähler sollte gehen. timecnt ist die zeit, die deine heizung on war in sec. wie grafana das aus den on-off status errechnen soll weiß ich nicht. teste das mit dem dummy-beispiel das ich dir gepostet hab (unverändert anlegen). das hat funktioniert. dann baust um und schaust warum es mit 0/1 nicht mehr geht.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 11:31:56
Ja das habe ich gemacht damit klappt es auch das er das hochzählt. Also erst on dann off und dann Zeigt er die Zeit da an.
Bei dem aktuellen Dummy aber nicht. Hab es ganz genau so gemacht mit attr hier ein List

 Internals:
   FUUID      5c4746ac-f33f-678b-6af5-2a67bf9cbff77ea4
   NAME       dHeizung
   NR         977
   STATE      off
   TYPE       dummy
   .attraggr:
   .attreocr:
     on_off
     timecnt
   .attrminint:
   .userReadings:
     HASH(0x51801b8)
     HASH(0x510a558)
   Helper:
     DBLOG:
       on_off:
         myDbLog:
           TIME       1548412188.04514
           VALUE      0
       timecnt:
         myDbLog:
           TIME       1548412188.04514
           VALUE      0
   READINGS:
     2019-01-25 11:29:48   on_off          0
     2019-01-25 11:29:48   statStateDay    off: 01:12:48 off_Count: 5 on: 00:47:13 on_Count: 4 (since: 2019-01-25_09:29:47)
     2019-01-24 23:59:55   statStateDayLast off: 16:31:47 off_Count: 32 on: 07:28:13 on_Count: 31
     2019-01-25 11:29:48   statStateMonth  off: 01:12:48 off_Count: 5 on: 00:47:13 on_Count: 4 (since: 2019-01-25_09:29:47)
     2019-01-25 11:29:48   statStateYear   off: 01:12:48 off_Count: 5 on: 00:47:13 on_Count: 4 (since: 2019-01-25_09:29:47)
     2019-01-25 11:29:48   state           off
     2019-01-25 11:29:48   timecnt         0
   helper:
     _98_statistics myStatDevice
Attributes:
   DbLogInclude .*
   event-on-change-reading on_off,timecnt
   room       Heizung
   userReadings timecnt {((ReadingsVal($name,"state",0) eq 'off' ) ? ReadingsAge($name,"timecnt",121) : 0)},on_off {((ReadingsVal($name,"state",0) eq 'off' ) ? 0 : 1)}
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 Januar 2019, 12:22:10
mach mal zum Test das event-on-change-reading raus.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 12:38:10
tzz es geht einfach nicht .. Dann muss es ja am myStatDevice liegen würde ich sagen..
Ist es nicht möglich diesen langen wert in die Datenbank zu bekommen und daraus die Zeiten zu nehmen ?
Oder man müsste es so umbauen das die on Zeit als eigenes Reading um 23:59 gesetzt wird...

Es schaut s aus das sich das timecnt mit 0 füllt da es Orange wird und wieder ne 0 steht ..


Aber aktuell hab ich ja noch ein ganz anderes Problem mit dem script was mysql zu influxdb wandelt .. steht ja im anderen Post .. Irgendwie geht nun nichts mehr :(
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 16:13:39
Also ich hab einen neuen Dummy angelegt ohne das Statistik Zeugs.
Ist das gewollt das das timecnt jedesmal wieder auf 0 zurück geht ?
Ich hab da natürlich dann so 30-40 verschiedene timecnt werte pro Tag.
Aber kein day wert.

Hintergrund ich will eine Statistik mit Balken
vom 1.1.2019 bis zum 31.1.2019. Dort will ich dann per Balken den kompletten Tageswert wie lange ( Minuten ) die Heizung an war.

Mit diesem Statistik Modul habe ich halt das Problem da sist ein Gesamtes Reading .. das ist nun auch nicht in der influxdb drin weil es ja nicht nur Zahlen sind ;/
Kann man mit grafana nicht dieses lange Reading also:  off: 03:58:52 off_Count: 13 on: 02:36:41 on_Count: 13 (since: 2019-01-25_09:29:47) auswerten = Da habe ich ja den Tageswert für die Bar:  02:36:41

Notfalls das per fhem irgendwie in eizelne Readigs zu Splitten ?

Per Influxdb kann man jetzt wirklich sucher schön die sachen bauen ohne zu suchen. Danke :)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 Januar 2019, 17:15:23
Zurücksetzen ist gewollt da du dann aggregieren kannst wie du willst. Stunde. Täglich. Ist dein System du kannst loggen was du willst. War nur ein Vorschlag wie ich es machen würde.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 25 Januar 2019, 20:06:56
Okay nur wie bekomme ich das nun schön dargestellt als Monatsansicht mit der Täglichen Laufzeit ?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 25 Januar 2019, 21:54:25
Okay nur wie bekomme ich das nun schön dargestellt als Monatsansicht mit der Täglichen Laufzeit ?

du legst es als plot an und wählst bei metrics rechts in options "min time intervall 1d" aus
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 26 Januar 2019, 21:42:55
Danke klappt glaube ich aber ich skaliere das auf 1M also 1 Monat. Da sind die Markierungen unten nicht für jeden Tag.
Also mal steht da 1/23 das nächste ist dann 1/25. Da kann mann dann bisschen raten wo der 24. ist. Also die Striche nach unten sind nicht Pro Tag

Ich nutze den Wert Energie der zählt immer bis um 23:59 hoch und ist dann wieder 0
Hier mal ein List von dem Gerät vielleicht ist da ein anderer Wert besser ? Also der Power wert vielleicht ?? Schaut aber genauso komisch aus

LIst von dem Gerät
Internals:
   CODE       1
   CUL_0_MSGCNT 4
   CUL_0_RAWMSG E01015CB0D608005101
   CUL_0_RSSI -52
   CUL_0_TIME 2019-01-26 21:38:44
   DEF        1 75
   FUUID      5c45bfc8-f33f-678b-d4b9-e6754d143a6976c9
   IODev      CUL_1
   LASTInputDev CUL_0
   MSGCNT     4
   NAME       Hausstrom
   NR         669
   STATE      W: 32.31 kWh P:  1.28 kW Pmax: 0.224 kW
   TYPE       EMX
   .attraggr:
   .attreocr:
     .*
   .attrminint:
   Helper:
     DBLOG:
       count:
         myDbLog:
           TIME       1548535124.48091
           VALUE      54960
       count_prev:
         myDbLog:
           TIME       1548535124.48091
           VALUE      54952
       energy:
         myDbLog:
           TIME       1548535124.48091
           VALUE      32.31
       peak:
         myDbLog:
           TIME       1548535124.48091
           VALUE      0.224
       pmeter:
         myDbLog:
           TIME       1548535124.48091
           VALUE      56714.3
       power:
         myDbLog:
           TIME       1548535124.48091
           VALUE      1.28
       seqnr:
         myDbLog:
           TIME       1548535124.48091
           VALUE      92
       seqnr_prev:
         myDbLog:
           TIME       1548535124.48091
           VALUE      91
       statCount:
         myDbLog:
           TIME       1548535124.48091
           VALUE      Hour: 177.0000000000 Day: 2423.2833333333 Month: 9502.1600000000 Year: 9502.1600000000 (since: 2019-01-23 )
       statEnergy:
         myDbLog:
           TIME       1548535124.48091
           VALUE      Hour: 2.360 Day: -1.887 Month: -3.016 Year: -3.016 (since: 2019-01-23 )
       state:
         myDbLog:
           TIME       1548535124.48091
           VALUE      W: 32.31 kWh P:  1.28 kW Pmax: 0.224 kW
   READINGS:
     2019-01-26 21:38:44   cost            0
     2019-01-26 21:38:44   count           54960
     2019-01-26 21:38:44   count_prev      54952
     2019-01-25 23:59:05   day             D25 Wd: 34.20 kWh Wm:  34.20 kWh C:  0.00 €
     2019-01-26 21:38:44   energy          32.31
     2019-01-26 21:38:44   error           0
     2019-01-25 23:59:05   first_day       0
     2018-12-31 23:56:25   month           M12 Wm:  32.47 kWh
     2019-01-26 21:38:44   peak            0.224
     2019-01-26 21:38:44   pmeter          56714.3
     2019-01-26 21:38:44   power           1.28
     2019-01-26 21:38:44   seqnr           92
     2019-01-26 21:38:44   seqnr_prev      91
     2019-01-26 21:38:44   statCount       Hour: 177.0000000000 Day: 2423.2833333333 Month: 9502.1600000000 Year: 9502.1600000000 (since: 2019-01-23 )
     2019-01-26 20:59:55   statCountLast   Hour: 285.0000000000 Day: 2564.8000000000 Month: - Year: -
     2019-01-26 21:38:44   statEnergy      Hour: 2.360 Day: -1.887 Month: -3.016 Year: -3.016 (since: 2019-01-23 )
     2019-01-26 20:59:55   statEnergyLast  Hour: 3.800 Day: 3.062 Month: - Year: -
     2019-01-26 21:38:44   statPowerDay    Min: 0.48 Avg: 1.50 Max: 16.00
     2019-01-25 23:59:55   statPowerDayLast Min: 0.48 Avg: 1.44 Max: 22.56
     2019-01-26 21:38:44   statPowerMonth  Min: 0.48 Avg: 1.38 Max: 22.56 (since: 2019-01-22_17:42:26 )
     2019-01-26 21:38:44   statPowerYear   Min: 0.48 Avg: 1.38 Max: 22.56 (since: 2019-01-22_17:42:26 )
     2019-01-26 21:38:44   state           W: 32.31 kWh P:  1.28 kW Pmax: 0.224 kW
   helper:
     _98_statistics myStatDevice
Attributes:
   CostM      28.60
   CostN      0.24
   IODev      CUL_1
   LogM       EnergyM
   LogY       EnergyY
   event-on-change-reading .*
   model      EMWZ
   room       STROM
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 27 Januar 2019, 12:15:18
Danke klappt glaube ich aber ich skaliere das auf 1M also 1 Monat. Da sind die Markierungen unten nicht für jeden Tag.
Also mal steht da 1/23 das nächste ist dann 1/25. Da kann mann dann bisschen raten wo der 24. ist. Also die Striche nach unten sind nicht Pro Tag

du willst unter jedem Balken den Tag / Datum als Beschriftung? Das ist ein feature-Request bei Grafana, jedoch funktioniert das noch nicht. Mein letzter Stand.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 27 Januar 2019, 12:32:57
achso ich hab gedacht man könnte das schon bestimmen.

Zurück zu der Heizung und dem timecnt.
Der balken sagt gestern ca. 5 stunden ( Okay DB Loggin war erst irgendwann Mittags. )
Heute 12 Uhr sagt er schon 10 Stunden .. das kann gar nicht da die Heizung erst seit 6 Uhr läuft und so durchgehend gelaufen ist.
Ich denke er rechnet den vortag ein ? Habe ja unter Einstellungen 1d eingestellt.. kann es sein das die Werte dann erst morgen stimmen ? Da er ja quasi von Jetzt 24 stunden zurückguckt ?? Oder zählt er das nun jeden tag hoch ?? Heute 20 morgen dann 30 usw,.. ?

Edit: Auch hier bei select mal auf "sum" geändert. Einheiten auf Sekunde hatte da Minuten aus versehen. Behalte es im Auge. Kann ich da sin fhem irgendwie testen das er da auch mal timecnt auf einen Tag hochzählt ? Nur zur Prüfung jetzt?


Beim Hausstrom oben ist es auch komisch steht heute: 4,42KW wenn ich aber beim Gerät in Fhem gucke steht da für heute schon 12KW ..
Edit: Habe nun bei Hausstrom mal bei Select ein last eingebaut. Nun scheint es da auch zu stimmen

Anonsten sehr geil ds Grafana auch mit den Alerts. Aber leider kann man bei den Alerts nicht sagen Alert Ausblenden also den roten Balken :D Wie lange gibt es Grafana den schon ? Wird da viel dran gemacht ?


Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 27 Januar 2019, 12:49:55
Sorry für den Doppelpost aber wegen der Übersicht und für andere die das Problem haben vielleicht besser
Ich habe einheit Sekunden die ich im timecnt ja logge.
Als Einheit habe ich Sekunden ausgewählt.

Bekomme nun im Graf am Rand aber so angaben wie 1.67 Hour .. bekommt man das noch irgendwie besser Formatiert ?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 27 Januar 2019, 13:27:23
ich verzichte die ganzen fragen als zitat einzufügen.

aggregierung ... daten prüfen, macht dir am besten einen plot in fhem der das ganz stupide ausgibt. im plot - in der defitionsansicht wo du spalten auswählen kannst ... - da kannst du dann "show processed input" klicken, da siehst du dann alles was von der db kommt. diese werten dann in excel aufaddieren ... alternativ musst du im forum suchen, habe sowas in fhem noch nicht benötigt.

wahrscheinlich nimmt er bei 1d genau 24h.

alterts ... was willst du damit sehen? wenn es dir nur um die horizontale linie geht schau dir mal threshold im tab display an

dezimalstellen an der y-achse --> setze decimals 0 dann siehst du nur ganze zahlen.

seit wann gibt es grafana, 2016? noch länger ... `?

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 27 Januar 2019, 15:45:40
okay dann werd ich da mal weiter basteln Danke.

Wollte meine ersten ergebnisse direkt mal einbauen in tabletui .. per iframe. Das Problem FHEM ist https ( Eigenes selbst erstelltes Zertifikat ) Grafana ist http.

So nun habe ich gesucht und in der grafana.ini rumgespielt hat da das ;http auf ;https geändert nichts ..
Hab ich das ; davor weg gemacht = Docker Kaputt...
Quasi alles von neu :(

Hast du noch einen Tipp für Grafana in https zufällig ? Ohne ein Zertifikat
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 27 Januar 2019, 16:47:44
Hab jetzt nochmal von vorne begonnen.

Die Zeitschiene passt schon mal, die Spitzen sind in der Zeit identisch ( siehe Screenshots)

Was aber nicht passt, ist links die Y-Achse. Da sind wir vermutlich wieder bei der Sache mit "Wert/Zeit"

Zitat
SELECT
  cast((timestamp/1000)/150 as signed integer)*150 as time_sec,
  sum(value) as value,
  "Stromverbrauch" as metric
FROM data
WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1
GROUP BY 1
ORDER BY 1

Kann mir bitte jemand erläutern was hier genau gemacht wird, vor allem das /150 und *150. timestamp/1000 = ist unix_time in MS ?
"cast((timestamp/1000)/150 as signed integer)*150 as time_sec"

und hier
"WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1"


Habe versucht Details über den Volkszähler zu finden, im Bezug auf Wert/Zeit, leider erfolglos.
Das einzige ist der Code des Interpreters der das alles ausrechnet und darstellt.

Zitat
namespace Volkszaehler\Interpreter;
24 
25 /**
26  * Meter interpreter
27  *
28  * @author Steffen Vogel <info@steffenvogel.de>
29  * @author Andreas Götz <cpuidle@gmx.de>
30  */
31 
32 class ImpulseInterpreter extends Interpreter {
33 
34    protected $pulseCount;
35    protected $ts_last; // previous tuple timestamp
36 
37    /**
38     * Generate database tuples
39     *
40     * @return \Generator
41     */
42    public function getIterator() {
43       $this->rows = $this->getData();
44       $this->pulseCount = 0;
45       $this->ts_last = $this->getFrom();
46 
47       foreach ($this->rows as $row) {
48          if ($this->raw) {
49             // raw database values
50             yield array_slice($row, 0, 3);
51          }
52          else {
53             $tuple = $this->convertRawTuple($row);
54             $this->pulseCount += $row[1];
55 
56             $this->updateMinMax($tuple);
57 
58             yield $tuple;
59          }
60       }
61    }
62 
63    /**
64     * Convert raw meter readings
65     */
66    public function convertRawTuple($row) {
67       $delta = $row[0] - $this->ts_last;
68 
69       // (1 imp * 60 min/h * 60 s/min * 1000 ms/s * scale) / (1 imp/kWh * 1ms) = 3.6e6 kW
70       $tuple = array(
71          (float) ($this->ts_last = $row[0]), // timestamp of interval end
72          (float) ($row[1] * 3.6e6 * $this->scale) / ($this->resolution * $delta), // doing df/dt
73          (int) $row[2] // num of rows
74       );
75 
76       return $tuple;
77    }
78 
79    /**
80     * Calculates the consumption
81     *
82     * @return float total consumption in Wh
83     */
84    public function getConsumption() {
85       return $this->channel->getDefinition()->hasConsumption ? $this->scale * $this->pulseCount / $this->resolution : NULL;
86    }
87 
88    /**
89     * Get Average
90     *
91     * @return float average in W
92     */
93    public function getAverage() {
94       if ($this->pulseCount) {
95          $delta = $this->getTo() - $this->getFrom();
96          // 60 s/min * 60 min/h * 1.000 ms/s * 1.000 W/kW = 3.6e9 (Units: s/h*ms/s*W/KW = s/3.600s*.001s/s*W/1.000W = 1)
97          return (3.6e6 * $this->scale * $this->pulseCount) / ($this->resolution * $delta);
98       }
99       else { // prevents division by zero
100          return 0;
101       }
102    }
103 
104    /**
105     * Return sql grouping expression
106     *
107     * Override Interpreter->groupExpr
108     *
109     * For precision when bundling tuples into packages
110     * AccumulatorInterpreter needs MAX instead of SUM.
111     *
112     * @author Andreas Götz <cpuidle@gmx.de>
113     * @param string $expression sql parameter
114     * @return string grouped sql expression
115     */
116    public static function groupExprSQL($expression) {
117       return 'SUM(' . $expression . ')';
118    }
119 }
120 
121 ?>

Einmal angenommen ich möchte Kilowatt pro Stunde darstellen, wie würde das aussehen.

Herzlichen Dank

Gruß
HappyUser20
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 27 Januar 2019, 17:10:11
okay dann werd ich da mal weiter basteln Danke.

Wollte meine ersten ergebnisse direkt mal einbauen in tabletui .. per iframe. Das Problem FHEM ist https ( Eigenes selbst erstelltes Zertifikat ) Grafana ist http.

So nun habe ich gesucht und in der grafana.ini rumgespielt hat da das ;http auf ;https geändert nichts ..
Hab ich das ; davor weg gemacht = Docker Kaputt...
Quasi alles von neu :(

Hast du noch einen Tipp für Grafana in https zufällig ? Ohne ein Zertifikat

ohne Zertifikat, http/https umbiegen ... alles halbfertiges gebastle ... sorry, my 2cents.

wenn du das vernünftig machen willst --> reverse proxy über nginx oder apache wobei nginx wahrscheinlich öfter im einsatz ist. anleitung zu reverse proxy in nginx gibts bei grafana.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 27 Januar 2019, 17:22:05
Hab jetzt nochmal von vorne begonnen.

Die Zeitschiene passt schon mal, die Spitzen sind in der Zeit identisch ( siehe Screenshots)

Was aber nicht passt, ist links die Y-Achse. Da sind wir vermutlich wieder bei der Sache mit "Wert/Zeit"

Kann mir bitte jemand erläutern was hier genau gemacht wird, vor allem das /150 und *150. timestamp/1000 = ist unix_time in MS ?
"cast((timestamp/1000)/150 as signed integer)*150 as time_sec"

und hier
"WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1"




.... div 1000 weil die timestamps mit ms gespeichert sind, 3 nachkommastellen zur sekunde. grafana braucht aber nur sekunden. durch die gnazzahlige division werden die 3 stellen abgetrennt. warum div 150 weiß ich nicht. wäre aggregation pro 2.5 minuten. alles nur raten.

stelle mal die rohdaten für die grafik aus mysql bereit, für den tag den du im volkszähler plot anzeigst. vielleicht kann ich dir daraus die aggregation rausziehen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 27 Januar 2019, 18:52:42
Hallo

Hab eine Datei angehängt von den Impulsen heute 6:00 - 16:00. ist jede Menge, hoffe das passt so.

"124619,"       "1"","                "1548602173018"","               "1"""
  unwichtig      ChannelID           Timstamp                              Value

Habe die 150 gewählt, weil mein Stromzähler 150 Impulse pro kWh liefert, war nur so ein Noobversuch  :D

Gruß
HappyUser20
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 27 Januar 2019, 18:54:31
und wieder die nächste Baustelle  "reverse proxy" ;) Das habe ich für fhem schon irgendwie hinbekommen :D

So langsam weiss ich die es funktioniert Lines & Bars.
Was ich aber nicht schaffe ist zu sagen WAS im Vorne und was im Hintergrund ist.

Auch würde ich gerne die Durchschnittstemperatur anzeigen lassen. Habe MeinWetter und davon Temperatur. Um die Tagestemperatur anzuzeigen brauch ich ja am besten die durchschnittstemperatur ? Ob die jetzt so aussagekräftig ist lassen wir mal dahingestellt.

edit: Okay ich kann die Bars ein wenig Transparent machen. Aber kann es aktuell nicht testen da ich aktuell für heute keine Liene hinter der Bar habe :D Daher klappen auch die ganzen Versuche wohl nicht
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 27 Januar 2019, 20:02:40



Was ich aber nicht schaffe ist zu sagen WAS im Vorne und was im Hintergrund ist.
Die Option gibt es glaub ich nicht. Was du testen kannst die SQL abfragen in der Reihenfolge tauschen. Vielleicht funktioniert es. Nach unten kopieren gehtbüber duplicate.

Durchschnittlich vielleicht mit math-funktionen in der Metrik. Verstehe die Anforderung aber nicht.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 28 Januar 2019, 17:25:29
Ja irgendwie hat es nun geklappt :)

Sag mal mit dem reverse proxy... ist zwar jetzt nicht ganz passens aber vielleicht kannst du mir ein paar Infos geben...
http://docs.grafana.org/installation/behind_proxy/

Brauch ich da nur die 2 Optionen zu machen ? Oder muss man im Docker Image von Grafana noch den proxy erst einrichten ? Wenn ich die anleitung von FHEM nehme gibt das doch irgendwie mit dem lets encrypt Probleme oder ??
Ich müsste das Zertifikat ja dann irgendwie auf das Grafana System Kopieren. ?!

Mein FHEM läuft auf einem PI da konnte ich das wunderbar alles machen mit lets encrypt .. meinedeomain.de/fhem

ODER
Kann ich im Proxy auf dem fhem system eine Verlinkung in der config zu meiner DOCKERIP:3000 machen ??
Somit brauche ich ja gar keine 2. Löst trotzdem nicht das Provlem das ich im TabletUI welches https ist ( Lokal auch ) nicht das nicht https Grafana einbinden kann

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 28 Januar 2019, 18:46:15
Sag mal mit dem reverse proxy... ist zwar jetzt nicht ganz passens aber vielleicht kannst du mir ein paar Infos geben...

ich habe grafana unter path /grafana

änderungen in grafana.ini

root_url = http://localhost:3000/grafana/

<<<< wenn ohne login in display-mode gearbeitet wird
[auth.anonymous]
enabled = true
org_role = Viewer

in nginx-config. hier ist keine authentifizierung drin. musst dir selber überlegen wie du zugang absichern willst ... ich arbeite mit client certificate, damit hab ich das problem nicht

  location /grafana/ {
     proxy_pass http://localhost:3000/;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-Server $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

mit o.g. config macht nginx die http-https umsetzung. ide set_header-parameter habe ich irgendwo übernommen, ob die so passen weiß ich nicht. aber so wie ich es beurteilen kann läuft es im test. zumindest kommst du dann über https drauf.

zertifikate brauchst du für den server part, deckt dann fhem und grafana ab wenn beides durch einen webserver abgedeckt werden. auf den grafana-server musst du keine certs kopieren da dieser auf http antwortet. welche probleme meinst du? letsencrypt läuft bei mir problemlos.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 28 Januar 2019, 21:05:20
okay habs nun auf dem fhem proxy eingerichtet komme nun auch extern per https://meinedomain.de/grafana/ drauf :) War gar nicht so einfach.
Löst aber mein Lokales Problem nicht.

Muss ich nun nurnoch 2 tabletui versionen bauen eine interne und eine externe ..
will ja nicht immer intern alles über meine domain draußen laden ...
Müsste sonst vorher prüfen wenn es lokal ist dann interne URL im Iframe ;)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 28 Januar 2019, 21:13:47
Hallo

Hab eine Datei angehängt von den Impulsen heute 6:00 - 16:00. ist jede Menge, hoffe das passt so.

"124619,"       "1"","                "1548602173018"","               "1"""
  unwichtig      ChannelID           Timstamp                              Value

Habe die 150 gewählt, weil mein Stromzähler 150 Impulse pro kWh liefert, war nur so ein Noobversuch  :D

Gruß
HappyUser20

hab mich etwas mit deinen daten gespielt ... aggregation 150 sekunden bring ein ähnliches bild wie im volkszähler. musst halt mal prüfen welcher zeitraum zum aggregieren verwendet wird. du kannst im plot oben auf export klicken und in der exportierten datei prüfen wie viel zeit zwischen den einzelnen punkten ist. datenbank heißt bei mir fhem_mysql. musst anpassen, rest sollte bei dir importierbar sein. channel_id = 1 ...

zur erklärung:

SELECT
  cast((timestamp/1000)/150 as signed integer)*150 as time_sec,
  sum(value)/150*3600/150 as value,
  "150sec" as metric
FROM data
WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1
GROUP BY 1
ORDER BY 1

 cast((timestamp/1000)/150 as signed integer)*150 as time_sec,
==> 150 ist in diesem fall die aggregation 2,5 minuten.

  sum(value)/150*3600/150 as value,
==> sum(value) = anzahl der ticks / signale vom reader in den 2,5 minuten
==> sum(value)/150*3600/150 as value .... anzahl der ticks/<zeit in sekunden> * <sekunden pro stunde>/<ticks pro kw/h>

kw/h ist leistung = arbeit durch zeit, anzahl der ticks ist hier die arbeit



{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "gnetId": null,
  "graphTooltip": 0,
  "id": 15,
  "links": [],
  "panels": [
    {
      "aliasColors": {
        "150sec": "#3f6833",
        "1h": "#0a50a1",
        "Stromverbrauch_150sec": "#0a50a1",
        "Total": "#cffaff"
      },
      "bars": false,
      "dashLength": 10,
      "dashes": false,
      "datasource": "FHEM MySQL",
      "fill": 1,
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 0,
        "y": 0
      },
      "id": 2,
      "interval": "1m",
      "legend": {
        "alignAsTable": false,
        "avg": true,
        "current": false,
        "max": true,
        "min": true,
        "rightSide": true,
        "show": true,
        "total": false,
        "values": true
      },
      "lines": true,
      "linewidth": 1,
      "links": [],
      "nullPointMode": "connected",
      "percentage": false,
      "pointradius": 5,
      "points": false,
      "renderer": "flot",
      "seriesOverrides": [
        {
          "alias": "1h",
          "bars": true,
          "lines": false
        },
        {
          "alias": "Total",
          "color": "#ffffff",
          "hideTooltip": true
        }
      ],
      "spaceLength": 10,
      "stack": false,
      "steppedLine": false,
      "targets": [
        {
          "format": "time_series",
          "group": [],
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "metricColumn": "none",
          "orderByTime": "ASC",
          "policy": "default",
          "rawQuery": true,
          "rawSql": "SELECT\r\n  cast((timestamp/1000)/3600 as signed integer)*3600 as time_sec,\r\n  sum(value)/3600*3600/150 as value,\r\n  \"1h\" as metric\r\nFROM data\r\nWHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and\r\nchannel_id = 1\r\nGROUP BY 1\r\nORDER BY 1\r\n",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "ChannelID"
                ],
                "type": "column"
              }
            ]
          ],
          "table": "volkszaehler",
          "tags": [],
          "timeColumn": "Value",
          "timeColumnType": "int",
          "where": [
            {
              "name": "$__unixEpochFilter",
              "params": [],
              "type": "macro"
            }
          ]
        },
        {
          "format": "time_series",
          "group": [],
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "metricColumn": "none",
          "orderByTime": "ASC",
          "policy": "default",
          "rawQuery": true,
          "rawSql": "SELECT\r\n  cast((timestamp/1000)/150 as signed integer)*150 as time_sec,\r\n  sum(value)/150*3600/150 as value,\r\n  \"150sec\" as metric\r\nFROM data\r\nWHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and\r\nchannel_id = 1\r\nGROUP BY 1\r\nORDER BY 1\r\n",
          "refId": "B",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "ChannelID"
                ],
                "type": "column"
              }
            ]
          ],
          "table": "volkszaehler",
          "tags": [],
          "timeColumn": "Value",
          "timeColumnType": "int",
          "where": [
            {
              "name": "$__unixEpochFilter",
              "params": [],
              "type": "macro"
            }
          ]
        },
        {
          "format": "time_series",
          "group": [],
          "hide": false,
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\r\n  max(cast((timestamp/1000)/150 as signed integer)*150 + 150) as time_sec,\r\n  sum(value)/150 as value,\r\n  \"Total\" as metric\r\nFROM data\r\nWHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and\r\nchannel_id = 1\r\n\r\nORDER BY 1",
          "refId": "C",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": [],
      "timeFrom": null,
      "timeRegions": [],
      "timeShift": null,
      "title": "Volkszähler",
      "tooltip": {
        "shared": true,
        "sort": 0,
        "value_type": "individual"
      },
      "type": "graph",
      "xaxis": {
        "buckets": null,
        "mode": "time",
        "name": null,
        "show": true,
        "values": []
      },
      "yaxes": [
        {
          "format": "short",
          "label": null,
          "logBase": 1,
          "max": null,
          "min": null,
          "show": true
        },
        {
          "format": "short",
          "label": null,
          "logBase": 1,
          "max": null,
          "min": null,
          "show": true
        }
      ],
      "yaxis": {
        "align": false,
        "alignLevel": null
      }
    }
  ],
  "refresh": false,
  "schemaVersion": 16,
  "style": "dark",
  "tags": [],
  "templating": {
    "list": []
  },
  "time": {
    "from": "2019-01-26T23:02:46.005Z",
    "to": "2019-01-27T23:01:52.459Z"
  },
  "timepicker": {
    "refresh_intervals": [
      "5s",
      "10s",
      "30s",
      "1m",
      "5m",
      "15m",
      "30m",
      "1h",
      "2h",
      "1d"
    ],
    "time_options": [
      "5m",
      "15m",
      "1h",
      "6h",
      "12h",
      "24h",
      "2d",
      "7d",
      "30d"
    ]
  },
  "timezone": "",
  "title": "volkszaehler",
  "uid": "pDbNvKmgz",
  "version": 13
}

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 29 Januar 2019, 10:21:40
Ich habe da noch ein komisches Problem. Ich habe immer wieder diese Streifen im Bild. grün = OK gelb = nodata
Das kommt vom Alert das habe ich in einem anderen Dashboard für Luftfeuchte .. ABER wieso taucht es bei meinem Hausstrom auf ?
Siehe screen da ist kein Alert
Das verschandelt die sachen total
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 29 Januar 2019, 10:50:00
Ich habe da noch ein komisches Problem. Ich habe immer wieder diese Streifen im Bild. grün = OK gelb = nodata
Das kommt vom Alert das habe ich in einem anderen Dashboard für Luftfeuchte .. ABER wieso taucht es bei meinem Hausstrom auf ?
Siehe screen da ist kein Alert
Das verschandelt die sachen total

was du siehst ist eine annotation und kein alert. ist bei einstellungen - annotation ... vielleicht hast du hier rumgeklickt. ansosnten weiß ich auch nicht.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 29 Januar 2019, 11:25:04
hehe ja wie auch immer .. denke ich hab das wohl aus versehen Aktiviert :) Danke.

Komisch ist das ich seit 7:30 Uhr keine Daten mehr in Grafana habe .. habe ja diesen Cronjob angelegt.. kann man sich da irgendwie benachrichtigen lassen wenn da ein Fehler passiert ist ?
Habe die vermutung das da irgendwas nicht läuft ...
Edit:
Im chronograf steht nun hinter der Datenbank .autogen ??!! Ich bekomme dort auch wieder nichts angezeigt ( Das ist immer wenn das script noch läuft ) Aber ich habe es ja auch alle 5 Minuten und Maximal 15 minuten zurück eingestellt..
Als ob sich das "aufgehangen hätte"

Das mysql2influx.log ist nun schon 56 Mb gross letzte änderung 6:41 ... ich versuche mal ob dort was drin steht aber ob ich das geöffnet bekomme

Edit:
Der letzte eintrag ist nich vollständig scheint abgestürzt zu sein ..
2019.01.29 06:41:11 --- Error: Bad Request, Code: 400, 2019-01-29 05:53:21, hm.tur.hof, contact, closed (to VCCU)
2019.01.29 06:41:11 --- Error: Bad Request, Code: 400, 2019-01-29 05:53:21, hm.tur.hof, state, closed
2019.01.29 06:41:13 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:03, handy_tanja_fritz, state, absent
2019.01.29 06:41:16 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:44, Hausstrom, state, W:  4.58 kWh P:  1.12 kW Pmax: 0.254 kW
2019.01.29 06:41:16 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:44, Hausstrom, statEnergy, Hour: 1.480 Day: -20.422 Month: -30.747 Year: -30.747 (since: 2019-01-23 )
2019.01.29 06:41:16 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:44, Hausstrom, statCount, Hour: 111.0000000000 Day: 343.4266666667 Month: 14039.1600000000 Year: 14039.1600000000 (since: 2019
2019.01.29 06:41:16 --- Error: Bad Request,

Die frage ist nun ich muss nun sicher das script mit 12 Stunden abändert das ich da alles wieder in die DB bekomme. ABER was ist mit dem chronjob der hat ja alle 5 Minuten rein . Gibt es da eine elegante lösung ohne chrojob ändern ?
Und wie kann ich mich vor den abstürzen Schnützen ?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 29 Januar 2019, 11:34:43
Danke erstmal für die mühen.

Wo dieser Code hingehört ist mir klar
Zitat

SELECT
  cast((timestamp/1000)/150 as signed integer)*150 as time_sec,
  sum(value)/150*3600/150 as value,
  "150sec" as metric
FROM data
WHERE cast(timestamp/1000 as signed integer) > $__unixEpochFrom() and cast(timestamp/1000 as signed integer) < $__unixEpochTo() and
channel_id = 1
GROUP BY 1
ORDER BY 1


Wohin muss der andere, längere?
Zitat
du kannst im plot oben auf export klicken und in der exportierten datei prüfen wie viel zeit zwischen den einzelnen punkten ist. datenbank heißt bei mir fhem_mysql. musst anpassen, rest sollte bei dir importierbar sein. channel_id = 1 ...

Da stehe ich momentan etwas auf dem Schlauch.  :-[ :-[ :-[

Gruß
HappyUser20
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 29 Januar 2019, 11:59:19

Wohin muss der andere, längere?
Da stehe ich momentan etwas auf dem Schlauch.  :-[ :-[ :-[

Gruß
HappyUser20
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 29 Januar 2019, 12:30:56
hehe ja wie auch immer .. denke ich hab das wohl aus versehen Aktiviert :) Danke.

Komisch ist das ich seit 7:30 Uhr keine Daten mehr in Grafana habe .. habe ja diesen Cronjob angelegt.. kann man sich da irgendwie benachrichtigen lassen wenn da ein Fehler passiert ist ?
Habe die vermutung das da irgendwas nicht läuft ...
Edit:
Im chronograf steht nun hinter der Datenbank .autogen ??!! Ich bekomme dort auch wieder nichts angezeigt ( Das ist immer wenn das script noch läuft ) Aber ich habe es ja auch alle 5 Minuten und Maximal 15 minuten zurück eingestellt..
Als ob sich das "aufgehangen hätte"

Das mysql2influx.log ist nun schon 56 Mb gross letzte änderung 6:41 ... ich versuche mal ob dort was drin steht aber ob ich das geöffnet bekomme

Edit:
Der letzte eintrag ist nich vollständig scheint abgestürzt zu sein ..
2019.01.29 06:41:11 --- Error: Bad Request, Code: 400, 2019-01-29 05:53:21, hm.tur.hof, contact, closed (to VCCU)
2019.01.29 06:41:11 --- Error: Bad Request, Code: 400, 2019-01-29 05:53:21, hm.tur.hof, state, closed
2019.01.29 06:41:13 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:03, handy_tanja_fritz, state, absent
2019.01.29 06:41:16 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:44, Hausstrom, state, W:  4.58 kWh P:  1.12 kW Pmax: 0.254 kW
2019.01.29 06:41:16 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:44, Hausstrom, statEnergy, Hour: 1.480 Day: -20.422 Month: -30.747 Year: -30.747 (since: 2019-01-23 )
2019.01.29 06:41:16 --- Error: Bad Request, Code: 400, 2019-01-29 05:55:44, Hausstrom, statCount, Hour: 111.0000000000 Day: 343.4266666667 Month: 14039.1600000000 Year: 14039.1600000000 (since: 2019
2019.01.29 06:41:16 --- Error: Bad Request,

Die frage ist nun ich muss nun sicher das script mit 12 Stunden abändert das ich da alles wieder in die DB bekomme. ABER was ist mit dem chronjob der hat ja alle 5 Minuten rein . Gibt es da eine elegante lösung ohne chrojob ändern ?
Und wie kann ich mich vor den abstürzen Schnützen ?

ich habe nur numerische werte in der mysql, kann sein, dass zu viele errormeldungen etwas überlaufen lassen.

du kannst das script kopieren, die zeit auf 60m oder was auch immer ändern und separat laufen lassen. cron kann dann weiterlaufen. du kannst das originale script auch umbennenen, dann findet der cronjob das script nicht und erzeugt einen fehler. wenn alles erledigt ist, bennenst das originalscript wieder zurück.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 29 Januar 2019, 13:02:51
super Dankke .. kann man das Log auch ausmachen # vor einer Zeile ? Dann beobachte ich das mal ..
Aktuell ist mein PI abgestürzt  per sudo auf crontab hatte ich nur lesezurgriff .. hab ich sudo reboot gemacht. Kommt nicht mehr wieder :/

EDIT: Na super das wars wohl mit dem PI auch nach Stromlos machen komme ich per ssh nicht mehr drauf
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 29 Januar 2019, 17:16:26
super Dankke .. kann man das Log auch ausmachen # vor einer Zeile ? Dann beobachte ich das mal ..
Aktuell ist mein PI abgestürzt  per sudo auf crontab hatte ich nur lesezurgriff .. hab ich sudo reboot gemacht. Kommt nicht mehr wieder :/

EDIT: Na super das wars wohl mit dem PI auch nach Stromlos machen komme ich per ssh nicht mehr drauf

ja, log kannst du ausmachen. zusätzlich am besten auch syslog / daemon.log ausschalten sonst werden die files groß

https://community.influxdata.com/t/disable-influxd-logging/429
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Happyuser20 am 03 Februar 2019, 14:30:02
Dank dir „kadettkilac89“ für die Unterstützung, funktioniert soweit.

Gruß
Happyuser20
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 03 Februar 2019, 19:48:04
Dank dir „kadettkilac89“ für die Unterstützung, funktioniert soweit.

Gruß
Happyuser20
Passt, konnte damit für mich selber was testen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 05 Februar 2019, 20:30:25
so langsam komme ich wieder zu grafana.
Mein reserve Proxy läuft..

In der grafana.ini habe ich bei root_url die url eingetragen. https://grafana.meinedomain.de
Das klappt auch. Aber wie bekomme ich das hin das es auch lokal geht http(s)://192.168.2.1:3000 ???
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 06 Februar 2019, 09:38:07
so langsam komme ich wieder zu grafana.
Mein reserve Proxy läuft..

In der grafana.ini habe ich bei root_url die url eingetragen. https://grafana.meinedomain.de
Das klappt auch. Aber wie bekomme ich das hin das es auch lokal geht http(s)://192.168.2.1:3000 ???

ich route alles über extern ... du kannst mal hier durchlesen vielleicht funktioneirt eine der diskutierten settings

https://github.com/grafana/grafana/issues/2066

du kannst mal als root_url "http://localhost" testen. Sollte funktionieren dann musst du aber auch intern über reverse Proxy gehen
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 09 Februar 2019, 14:43:29
Grafana intern + extern .... location ist bei mir grafana (http(s)://<intern>|<esterne ip>/grafana/)

Nginx reverse für intern über Port 80. .... bei mir läuft alles in Docker, darum "grafana" stattt localhost.
server {
    listen 80;
location /grafana/ {
   proxy_pass http://grafana:3000/;
}
}

für den externen Zugang hast du ja schon eine Location.

Als Root_url ... hab ich "http://localhost/grafana/" ...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 Februar 2019, 18:28:06
Ich lasse mir in grafana drei Zeitreihen anschauen, in etwa so
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT(VALUE, DECIMAL(7,3)) as value,
  "Wasser" as metric
FROM history
WHERE READING="Warmwassertemperatur" AND DEVICE="Viessmann" AND $__timeFilter(TIMESTAMP)

(dabei sind zwei verschiedene devices involviert). Ich möchte zusätzlich den Durchschnitt der drei Temperaturwerte angezeigt bekommen. Natürlich könnte ich das so machen, dass ich in FHEM den Durchschnitt errechne (in einem dummy) und den dann anzeigen lasse. Aber geht das auch mit den SQL-Aufrufen und wenn ja, wie?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 16 Februar 2019, 14:34:26


Ich lasse mir in grafana drei Zeitreihen anschauen, in etwa so
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT(VALUE, DECIMAL(7,3)) as value,
  "Wasser" as metric
FROM history
WHERE READING="Warmwassertemperatur" AND DEVICE="Viessmann" AND $__timeFilter(TIMESTAMP)

(dabei sind zwei verschiedene devices involviert). Ich möchte zusätzlich den Durchschnitt der drei Temperaturwerte angezeigt bekommen. Natürlich könnte ich das so machen, dass ich in FHEM den Durchschnitt errechne (in einem dummy) und den dann anzeigen lasse. Aber geht das auch mit den SQL-Aufrufen und wenn ja, wie?

Grafana hat average Funktion ... lese mal die Doku ob dir das was hilft. Möglich dass es damit geht. Wenn du gute sql Kenntnisse hast geht es sicher auch per Union und subquery. Wird dann aber sicher langsam da die DB viel lesen muss.

Ansonsten halt in fhem ... weniger Aufwand wenn man nicht so tief in der Materie drinn ist.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Aerics am 25 März 2019, 21:03:38
Gibt es eine Möglichkeit Grafana auch unter 32bit zum Laufen zu bekommen?
Bin leider nicht so der Linux Mann und habe es nicht geschafft selbst zu builden. Und überall finde ich nur die 64bit Version.
Wenn man auf MySQL umgestellt hat wird dann weiterhin auch noch in Textdateien geloggt? Könnte man dann ja ausschalten, oder?

Unter Windows habe ich es zum Laufen bekommen und die DB angezapft. Nette Sache :)

Ich nutze nur HM-CC-RT-DN. Lässt sich außer nette Temperatur-Grafen vielleicht auch mit dem Actor Wert etwas ausgeben um seine Heizzeiten vielleicht zu optimieren? Also ob es vielleicht bessere wäre Nachts nicht soweit abzusenken etc. Hab gerade keine Idee wie man das statistisch darstelllen könnte um vielleicht irgend ein "Nutzen" aus den Daten zu haben.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: saschae am 24 Mai 2019, 05:04:22
Gibt es irgendeinen weg allow_embedding in der 6.2 wieder zu aktivieren ?????

So ist sind die tollen Grafana kurven nämlich nicht mehr schön in Fehm zu verwenden ......

Wenn ich mein Rechner nur local laufen haben sollten angriffe auf Grafana eigentlich nicht so Rolle Spielen oder ?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 24 Mai 2019, 08:58:01
also Fazit nach längerer Zeit das script zum umwandeln musste ich abschalten. Diskstation ( Fhem im Doker ) hat VOlume 100% ausgelastet ..
Nun übergebe ich es in iobroker per fhem adapter und dort per influx Adapter wird dgeloggt. Funktioniert aktuell besser. Da ich iobroker auch nutze Optimal.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: JoeALLb am 24 Mai 2019, 09:09:08
Gibt es irgendeinen weg allow_embedding in der 6.2 wieder zu aktivieren ?????

So ist sind die tollen Grafana kurven nämlich nicht mehr schön in Fehm zu verwenden ......

Wenn ich mein Rechner nur local laufen haben sollten angriffe auf Grafana eigentlich nicht so Rolle Spielen oder ?

Ich habe den Header davon einfach im Apache oder nginx-proxy ausgefiltert. Klappt. Aber an einer internen Lösung wäre ich auch interessiert.
Joe
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 24 Mai 2019, 09:29:04
Laut Doku (https://github.com/grafana/grafana/blob/master/docs/sources/installation/configuration.md#allow_embedding) kann man in /etc/grafana/grafana.ini allow_embedding auf true setzen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: saschae am 24 Mai 2019, 11:30:51
Genau das kannst du nicht .....
es gibt den Eintrag zwar auf der pref Seite in Grafana aber nicht in der .ini
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 24 Mai 2019, 13:36:21
Bedeutet, der Eintrag ist nicht in der Beispiel-/Standardconfig die mit der Grafana Installation ausgeliefert wird, oder greift der Eintrag tatsächlich nicht wenn man ihn in der Config hat?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: saschae am 24 Mai 2019, 19:03:56
Er greift nicht wenn man ihn einträgt
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: dirkbalzer am 26 Mai 2019, 08:01:37
Bei mir hat es mit dem Eintrag in der .ini Datei funktioniert.
In der /etc/grafana/grafana.ini
[security]
allow_embedding = true

danach natürlich Grafana einmal neustarten:sudo service grafana-server restart
Danach wurde bei mir wieder alles im iframe Angeigt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: saschae am 26 Mai 2019, 11:30:01
Jetzt hab ich es so in den security block eingetragen und es geht wohl scheinbar  ;D
ich hatte vorher allow_embedding = trueimmer nur ans ende geschrieben und da wollte es nicht funktionieren ....wenn ich auch nicht versteh warum  :-[
Titel: Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 26 Mai 2019, 11:44:02
genau das klappt bei mir nicht, ich habe inzwischen grafana deinstalliert und wieder installiert - ohne Ergebnis. Im Browser lässt sich die Seite anzeigen, in iframe nicht (obwohl allow_embedding=true in [security] und nochmaliger neustart).

Hat noch jemand eine Idee oder einen link?

<edit> Jetzt geht es, nachdem ich http:// davor geschrieben habe und den RPi neu startete.

<edit2> Wiki angepasst.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ChrisW am 26 Juni 2019, 14:05:32
Gibt es in der neuen Version mitlerweile eine Möglichkeit bei einer Monatsansicht den Wochentag als Zahl unter jeden Balken zu haben ? Aktuell habe ich noch immer nur alle 3-5 Tage ein Datum drunter stehen.
Will gerne den Stromverbrauch pro Tag in einer Monatsansicht hmmmmmm
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 Juli 2019, 16:34:19
Kann mir mal jemand auf die Sprünge helfen? Ich musste das neu installieren und hänge schon bei der einfachsten Darstellung
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  VALUE as value
FROM history
WHERE READING="Abgastemperatur" AND DEVICE="Viessmann" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 300
ergibt "no data points", obwohl die in der Datenbank sind, siehe Screenshot.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: netsrac4th am 14 Juli 2019, 17:13:07
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  MAX(CONVERT(VALUE, double)) as value,
  "Carsten Steps" as metric
FROM history
WHERE READING="leaderboard_summary_steps" AND DEVICE="fitbit_U2ZCPJ7" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%M:%s'))
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 Juli 2019, 17:15:00
Nee, passt auch nicht:
Zitat
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 'double)) as value
FROM history
WHERE READING="Abgastemperatur" AND DEVICE="Viess' at line 3
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: netsrac4th am 14 Juli 2019, 17:23:04
Zeige uns doch mal Dein gesamten Code.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 Juli 2019, 17:24:23
Das war der schon, aber inzwischen glaube ich den Fehler gefunden zu haben. Ich habe die Datenbank nicht ausgewählt (database) und da sind natürlich keine Datenpunkte da. Ergänze ich gleich mal im Wiki.

Komischerweise habe ich noch ein Problem. Grafana habe ich gestoppt und trotzdem sehe ich was auf dem Webbrowser. Das ist noch ärgerlicher...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: netsrac4th am 14 Juli 2019, 17:30:47
Versuch mal nach value das Komma zu setzen
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 Juli 2019, 17:31:25
Gelöst, endlich. Danke:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  AVG(VALUE) as value
FROM history
WHERE READING="Abgastemperatur" AND DEVICE="Viessmann" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 300
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 29 September 2019, 16:01:05
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  MAX(CONVERT(VALUE, double)) as value,
  "Carsten Steps" as metric
FROM history
WHERE READING="leaderboard_summary_steps" AND DEVICE="fitbit_U2ZCPJ7" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%M:%s'))
Ich habe schon wieder ein nicht nachvollziehbares Problem. Meine Syntax lautet
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  MAX(CONVERT(VALUE, double)) as value,
  "Regen" as metric
FROM history
WHERE READING="rain_today" AND DEVICE="Regenmesser" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV 3600
und ich kriege als Fehlermeldung
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 'double)) as value,
  "Regen" as metric
FROM history
WHERE READING="rain_today" A' at line 3
Sieht jemand mehr als ich?!

AVG(Value) nimmt er, VALUE selbst nicht und auch Min/Max etc lehnt er ab.
Titel: Frage zur Umwandlung von Werten
Beitrag von: Gunther am 17 November 2019, 17:36:58
Ich brauche mal Eure Hilfe. Komme mit den diversen mySQL-Tutorials nicht zurecht.

Ich möchte gerne verschiedene Devices loggen, habe aber Probleme bei der Umwandlung der Daten.

Soe sehen meine SQL-Daten aus:
2019-11-17 13:21:43   VBUSDEV_7321   VBUSDEV   speed_R07: 100 %   speed_R07   100 %   
2019-11-17 17:26:14   VBUSDEV_7321   VBUSDEV   temperature_T03: 72 °C   temperature_T03   72 °C   Â°C

1.) wie bekomme ich
100 %in 100 (Dezimal) umgewandelt - muss natürlich auch von 0-99 passen
Oder macht es hier Sinn in % umzuwandeln?

Das muss ja im Folgenden bei value mit convert laufen, richtig? Nur wie?

SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    "Pumpe Vorlauf" as metric
  FROM history
  WHERE READING="speed_R07" AND DEVICE="VBUSDEV_7321" AND $__timeFilter(TIMESTAMP)

2.) wie bekomme ich
72 °Cin 72 (Dezimal) umgewandelt - die Werte können ebenfalls von 0-100 gehen

Das muss ja im Folgenden bei value mit convert laufen, richtig? Nur wie?

SELECT
    UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
    VALUE as value,
    "Temperatur Kamin" as metric
  FROM history
  WHERE READING="temperature_T03" AND DEVICE="VBUSDEV_7321" AND $__timeFilter(TIMESTAMP)

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Gunther am 17 November 2019, 18:05:10
zu 1:
so scheint es zu laufen:
SELECT
  UNIX_TIMESTAMP(`TIMESTAMP`) as time_sec,
  CAST(`VALUE` AS DECIMAL(10, 6)) as value,
  'Leistung Pumpe Vorlauf Kamin' as metric
FROM `history`
WHERE $__timeFilter(`TIMESTAMP`) AND `DEVICE` = 'VBUSDEV_7321' AND `READING` = 'speed_R03'
ORDER BY `TIMESTAMP` ASC

Was genau macht das?
CAST(`VALUE` AS DECIMAL(10, 6)) as value10 Stellen und 6 hinter dem Komma?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Gunther am 17 November 2019, 19:57:31
Ich habe nun 2 Readings in einem Graphen. Einmal % und einmal °C.

Den 2. habe ich so aufgebaut:
SELECT
  UNIX_TIMESTAMP(`TIMESTAMP`) as time_sec,
  CAST(`VALUE` AS DECIMAL(10, 6)) as value,
  'Temperstur Vorlauf Kamin' as metric
FROM `history`
WHERE $__timeFilter(`TIMESTAMP`) AND `DEVICE` = 'VBUSDEV_7321' AND `READING` = 'temperature_T03'
ORDER BY `TIMESTAMP` ASC

Sieht so aus wie im Anhang

Wie bekomme ich rechts auf der y-Achse und in der Legende °C abgebildet?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 17 November 2019, 20:51:24
ich glaube, du meinst Series Overrides?
 
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Gunther am 17 November 2019, 22:30:20
super, danke!
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 18 November 2019, 07:24:03
Hallo,
habe 2 Fragen an Euch...

Danke und Gruß
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 18 November 2019, 08:02:10
Kann man die X-Achse irgendwie formatieren (dd mm yyyy) auf z.B. 18. Nov statt 11/18 usw?

https://github.com/grafana/grafana/issues/1459#issuecomment-542942752
 (https://github.com/grafana/grafana/issues/1459#issuecomment-542942752)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 18 November 2019, 08:40:15
Hallo,
habe 2 Fragen an Euch...
  • das letzte passende Release für Grafana ist das 5.1.4 aus dem fg2it End of Life Repository ?


fg2it war / ist für Raspberry ... es gibt nun auch eine Version für ARM / ARMHF auf der Grafan-Seite für das aktuelle Release. Darum wird das Github-Projekt nicht mehr gepflegt.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 18 November 2019, 13:27:18
fg2it war / ist für Raspberry ... es gibt nun auch eine Version für ARM / ARMHF auf der Grafan-Seite für das aktuelle Release. Darum wird das Github-Projekt nicht mehr gepflegt.

Bei mir ist das Grafana auf dem Raspberry Pi installiert, bei euch nicht(mehr) ?

FHEM Wiki:
Installation des Grafana Servers
Es gibt einen offiziellen Download. Der ist nicht ganz unproblematisch, und will man auf einem Raspberry Pi installieren, sollten eher vorkompilierte Pakete genutzt werden. Sie sind unter diesem Link zu finden.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 18 November 2019, 13:35:26

https://github.com/grafana/grafana/issues/1459#issuecomment-542942752
 (https://github.com/grafana/grafana/issues/1459#issuecomment-542942752)
Hallo Andie(s)

- Wenn ich es richtig verstehe wurde eine Änderung in der Hinsicht gemacht und mit dem Commit #20361 in das offizielle Master gepusht oder?
- Was ich nicht verstehe ist ab welcher Revision liegt diese Änderung zum Download bereit oder wie komme ich da ran?
Außerdem habe ich noch das Grafana 5.0.3 vom Repository fg2it installiert.
Danke.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: volschin am 19 November 2019, 07:13:42
Bei mir ist das Grafana auf dem Raspberry Pi installiert, bei euch nicht(mehr) ?
Ich habe jetzt schon länger Grafana im Docker Container laufen. Funktioniert bestens.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 19 November 2019, 07:26:55
hmm, da habe ich auch keine ahnung - ich mache zu selten updates, ich hatte schlechte erfahrungen gemacht.


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 19 November 2019, 08:50:01
Hallo Andie(s)

- Wenn ich es richtig verstehe wurde eine Änderung in der Hinsicht gemacht und mit dem Commit #20361 in das offizielle Master gepusht oder?
- Was ich nicht verstehe ist ab welcher Revision liegt diese Änderung zum Download bereit oder wie komme ich da ran?
Außerdem habe ich noch das Grafana 5.0.3 vom Repository fg2it installiert.
Danke.

Also die aktuelle Version ist 6.4.4:
https://grafana.com/grafana/download?platform=arm
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 19 November 2019, 10:05:13
Also die aktuelle Version ist 6.4.4:
https://grafana.com/grafana/download?platform=arm

Hallo Thyraz,
das heißt auf meinem Pi3 (ARMv8) kann ich das offizielle
Ubuntu & Debian(ARM64) installieren ?

wget https://dl.grafana.com/oss/release/grafana_6.4.4_arm64.deb
sudo dpkg -i grafana_6.4.4_arm64.deb

Laut FHEM-Wiki sollten doch nur vorkompilierte Pakete genutzt werden aus dem fg2it Repository  ???
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 19 November 2019, 10:06:23
Wenn's klappt (Versuchskaninchen), dann bitte Wiki ändern.  8)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 19 November 2019, 10:10:58
fg2it war / ist für Raspberry ... es gibt nun auch eine Version für ARM / ARMHF auf der Grafan-Seite für das aktuelle Release. Darum wird das Github-Projekt nicht mehr gepflegt.

Hallo Thyraz,
das heißt auf meinem Pi3 (ARMv8) kann ich das offizielle
Ubuntu & Debian(ARM64) installieren ?

wget https://dl.grafana.com/oss/release/grafana_6.4.4_arm64.deb
sudo dpkg -i grafana_6.4.4_arm64.deb

Laut FHEM-Wiki sollten doch nur vorkompilierte Pakete genutzt werden aus dem fg2it Repository  ???

Auszug aus dem Github ....
Warning Notice: End of Life
Starting from v5.2.0-beta1 Grafana introduced official support for armv7 and arm64 linux platforms. Many thanks to them for that.

As a consequence, this repo is no more needed and stops support starting from v5.2.0-beta1.

==> Backup von der SD-Karte machen und offizielle Version installieren. Wenn es nicht funktioniert SD-Karte aus dem Backup restoren. Ich gehe davon aus, dass du für den Raspberry das armhf-deb benötigst. Kannst ja testen welchen sich installieren lässt
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 19 November 2019, 10:35:08
zusätzlich ... diese Datei sichern und zurückspielen, da sind die ganzen Dashboards gespeichert ...

https://grafana.com/docs/installation/debian/
Database
The default configuration specifies a sqlite3 database located at /var/lib/grafana/grafana.db. Please backup this database before upgrades. You can also use MySQL or Postgres as the Grafana database, as detailed on the configuration page.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 19 November 2019, 12:35:00
...Ich gehe davon aus, dass du für den Raspberry das armhf-deb benötigst. Kannst ja testen welchen sich installieren lässt

Das _armhf.deb steht auf Grafana Download https://grafana.com/grafana/download?platform=arm (https://grafana.com/grafana/download?platform=arm) bei Ubuntu & Debian(ARMv6)

Wenn ich dann im Wiki https://de.wikipedia.org/wiki/Raspberry_Pi#Eigenschaften (https://de.wikipedia.org/wiki/Raspberry_Pi#Eigenschaften) bei Architektur ARMv6 (32bit) schaue, dann steht dieses unter Pi:
Zero, Zero W / WH, 1 Mod. A, 1 Mod. A+, 1 Mod. B, 1 Mod. B+

Ich habe aber den Pi3 und dort steht Architektur: ARMv8 (64 Bit) => somit müsste doch die ARM64 (grafana_6.4.4_arm64.deb) passen...?

Verstehe ich das alles falsch?


@volschin:
Docker kenne ich seither leider nicht.

@kadettilac: Danke für die Tipps.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 19 November 2019, 14:42:37

Ich habe aber den Pi3 und dort steht Architektur: ARMv8 (64 Bit) => somit müsste doch die ARM64 (grafana_6.4.4_arm64.deb) passen...?


https://stackoverflow.com/questions/37790029/what-is-difference-between-arm64-and-armhf
Raspberry Pi Type 3 has 64-bit CPU, but its architecture is not arm64 but armhf.

Bin mir ziemlich sicher dass ich damals auf meinem RPi3 auch Grafana armhf installieren musste. Wie geschrieben, teste einfach welche *.deb-Datei du installieren kannst. Es geht sowieso nur eine der beiden ...
Titel: Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: volschin am 20 November 2019, 22:05:04
https://stackoverflow.com/questions/37790029/what-is-difference-between-arm64-and-armhf
Raspberry Pi Type 3 has 64-bit CPU, but its architecture is not arm64 but armhf.

Bin mir ziemlich sicher dass ich damals auf meinem RPi3 auch Grafana armhf installieren musste. Wie geschrieben, teste einfach welche *.deb-Datei du installieren kannst. Es geht sowieso nur eine der beiden ...
Auf alle Fälle ist Raspbian inkl. Kernel derzeit noch immer 32bit. Daher läuft dann da auch kein 64Bit Programm drauf.
CPU ist ab 3+ 64bit.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 21 November 2019, 06:51:28
ok das erklärt einiges. Danke.
Dann vermute ich die ARMv7 32bit Version ist die richtige für den Pi3.

wget https://dl.grafana.com/oss/release/grafana_6.4.4_armhf.deb
sudo dpkg -i grafana_6.4.4_armhf.deb

Ich hoffe ich komme in den nächsten Tagen dazu es zu testen.
Wie kann ich am besten das alte Grafana löschen? oder einfach das neue Installieren?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 21 November 2019, 07:58:52
Drüber bügeln.

Der Grund warum im ersten Post (und wohl auch im Wiki) zusätzlich zum Link zur Downloadseite für den Pi noch das mit Github aufgeführt war,
ist einzig aus dem Grund, dass es damals nur dort ARM Builds gab.

Das hat sich ja geändert und aktuelle Versionen finden sich scheinbar ja auch nur noch auf der offiziellen Downloadseite.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: persching am 23 November 2019, 10:13:55
Ich weiß jetzt nicht so recht, ob das hier her passt, aber meiner Meinung nach schon:

ich verwende fhem, mysql und grafana in einer Dockerumgebung auf einem Intel NUC. Das läuft alles soweit, aber ich bekomme bei den Abfragen die hier im Thread auf den ersten Seiten vorgestellt sind, immer eine Fehlermeldung, die ich nicht dauerhaft weg bekomme.

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'fhem.history.TIMESTAMP' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Ich weiß woher der Fehler kommt und ich kann ihn temporär abstellen in dem ich mich im Docker mysql Container einlogge und diesen sql_mode update. Das Problem ist, dass ich es nicht schaffe die Variable dauerhaft zu ändern (was wohl an Docker liegt). Aber es gibt wohl auch einen Weg das SQL Statement so zu manipulieren, dass man den sql_mode nicht manipulieren muss.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 23 November 2019, 16:01:51
Ich weiß woher der Fehler kommt und ich kann ihn temporär abstellen in dem ich mich im Docker mysql Container einlogge und diesen sql_mode update. Das Problem ist, dass ich es nicht schaffe die Variable dauerhaft zu ändern (was wohl an Docker liegt). Aber es gibt wohl auch einen Weg das SQL Statement so zu manipulieren, dass man den sql_mode nicht manipulieren muss.

Möglichkeit 1:
Docker im Docker-Compose file ergänzen
command: mysqld --sql_mode=""
.... wenn du Docker mit anders startest den Container entsprechend mit command starten

Möglichkeit 2:
ONLY_FULL_GROUP_BY: Dieser Modus, der vor MySQL 5.7.5 deaktiviert war, gestattet eine Gruppierung nur dann, wenn alle in SELECT, HAVING oder ORDER BY aufgelisteten Spalten auch unter GROUP BY auftauchen – also explizit aggregiert werden – oder wenn sie zumindest funktional abhängig von einer in GROUP BY aufgelisteten Spalte sind. Eine solche Anhängigkeit ist gegeben, wenn beide zum Beispiel zur selben Tabelle gehören und die unter GROUP BY gelistete Spalte der Primärschlüssel dieser Tabelle ist.

Deine Meldung sagt, dass "fhem.history.TIMESTAMP" scheinbar nicht in der GROUP BY clause ... Select anpassen indem du machst was die Fehlermeldung aussagt.

Dockerfile und fehlerhafter Select wäre hilfreich wenn schon nach Hilfe gefragt wird.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: persching am 23 November 2019, 16:31:31
Ich hab meinen Fehler gefunden:

Ich hatte ebenfalls schon die Ergänzung der docker-compose mit dem command-Befehl gefunden. Leider hatte ich das '=' vergessen und mysql ist gar nicht mehr gestartet. Ein typischer Fall von PICNIC (Problem in chair, not in computer).

Trotzdem danke für die Hilfe!
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ch.eick am 18 Dezember 2019, 12:40:14
Hihohoho,

Hallo zusammen.

Ich steige gerade auf den rpi4 4G mit Buster und Docker um, was soweit ganz gut geklappt hat.
fhem/fhem und portainer/portainer laufen bereits.

Könnt Ihr mir bitte mit einem Tipp / Link weiterhelfen, um Grafana und DBLog (MySQL) ebenfalls in einem Container zu betreiben?
Macht es Sinn das jeweils auch separat zu containern oder besser zusammen?

Ich würde liebend gerne von Euren Docker Containern partizipieren, da ich mit Docker noch ganz am Anfang stehe.

Bisher habe ich noch kein DBLog im Einsatz, jedoch MySQL für eine andere Datenbank bei einem Freund verwendet.

Viele Grüße
   Christian
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 18 Dezember 2019, 14:20:04
Hihohoho,

Hallo zusammen.

Ich steige gerade auf den rpi4 4G mit Buster und Docker um, was soweit ganz gut geklappt hat.
fhem/fhem und portainer/portainer laufen bereits.

Könnt Ihr mir bitte mit einem Tipp / Link weiterhelfen, um Grafana und DBLog (MySQL) ebenfalls in einem Container zu betreiben?
Macht es Sinn das jeweils auch separat zu containern oder besser zusammen?

Ich würde liebend gerne von Euren Docker Containern partizipieren, da ich mit Docker noch ganz am Anfang stehe.

Bisher habe ich noch kein DBLog im Einsatz, jedoch MySQL für eine andere Datenbank bei einem Freund verwendet.

Viele Grüße
   Christian
ich habe container für fhem, mysql, grafana, influxdb ... separate container ist das konzept von docker. welchen link oder welche information suchst du`? wenn du schon grafana ins auge fasst kannst ggf. auch gleich alles mit influxdb loggen ... kommt auf deine anforderung an. in docker kannst du das schnell mal aufsetzen und testen ohne große neu konfigurieren zu müssen
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ch.eick am 18 Dezember 2019, 15:02:00
Hallo kadettilac89

was wäre der Vorteil von influxdb?

Gibt es die Definition der Docker Container bereits fertig? Ich bin mit Docker noch nicht fit.
Docker mit mysql und docker mit grafana würde ich als fertiges Image gerne haben.

Meine Anforderung ist das Loggen von Strom Daten und Aufbereiten zu Graphen.

Gruß
   Christian
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 18 Dezember 2019, 15:59:12
ok das erklärt einiges. Danke.
Dann vermute ich die ARMv7 32bit Version ist die richtige für den Pi3.

wget https://dl.grafana.com/oss/release/grafana_6.4.4_armhf.deb
sudo dpkg -i grafana_6.4.4_armhf.deb

Ich hoffe ich komme in den nächsten Tagen dazu es zu testen.
Wie kann ich am besten das alte Grafana löschen? oder einfach das neue Installieren?

Rückmeldung....
Drüberbügeln hat funktioniert. :D
Dashboards waren alle noch da. Muss jetzt nur noch die SQL Query´s umstellen bezüglich
Zitat
Value column must have numeric datatype
convert(value,integer) as value
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 18 Dezember 2019, 16:16:56
Hallo kadettilac89

was wäre der Vorteil von influxdb?

Gibt es die Definition der Docker Container bereits fertig? Ich bin mit Docker noch nicht fit.
Docker mit mysql und docker mit grafana würde ich als fertiges Image gerne haben.

Meine Anforderung ist das Loggen von Strom Daten und Aufbereiten zu Graphen.

influxdb ist schneller und grafana ist auf influxdb optimiert wenn man das so sehen will. abfragen musst du nicht mit sql-statement machen sondern kannst mehr mit klicken und auswahl machen. du kannst auch mysql und parallel influxdb füllen, mach ich auch. container kannst dann einfach wieder löschen wenn du es nicht mehr willst.

fertiges image sind alle docker container. du meinst wahrscheinlich die konfiguration, da musst du etwas hand anlegen aber auch machbar. wenn du docker-compose nutzen willst kann ich dir - falls gewollt - meine config geben. ich habe zwar alles auf vm aber sollte bis auf die docker basis-images großteils laufen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ch.eick am 18 Dezember 2019, 16:28:05
Hallo nochmal,

die docker-compose Vorlagen würden sicherlich schon helfen.

Das ging natürlich nicht :-)
pi@raspberrypi:~ $ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
no matching manifest for linux/arm/v7 in the manifest list entries

pi@raspberrypi:~ $ docker pull mariadb
Using default tag: latest
latest: Pulling from library/mariadb
no matching manifest for linux/arm/v7 in the manifest list entries

Ich glaube MySQL wäre mir lieber, da ich da schon mal dran war. Ansonsten nehme ich auch was da ist.

Gruß
   Christian


EDIT:

Okay, soooo einfach ist es dann doch nicht ;-)
pi@raspberrypi:~/docker-compose/mysql $ cat docker-compose.yml
version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'fhem'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'xxxxxxxxx'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'xxxxxxxx'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3306:3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
      # Where our data will be persisted
    volumes:
      - my-db:/var/lib/mysql
# Names our volume
volumes:
  my-db:

pi@raspberrypi:~/docker-compose/mysql $ docker-compose up
Creating network "mysql_default" with the default driver
Creating volume "mysql_my-db" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
ERROR: no matching manifest for linux/arm/v7 in the manifest list entries
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 19 Dezember 2019, 00:15:37
Hallo nochmal,

die docker-compose Vorlagen würden sicherlich schon helfen.

Das ging natürlich nicht :-)


Du brauchst einen Docker Container für deine Architektur. Mysql gibt es nicht für Raspberry. Teste mal folgendes Image

linuxserver/mariadb
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ch.eick am 19 Dezember 2019, 09:04:03
Danke für die Rückmeldung,
Ich habe bereite etwas mit docker-compose und fhem gefunden. Da scheint alles drin zu sein. Die Container laufen schon und schau morgen mal näher rein, weil beim fhem Container noch file Berechtigungen falsch von mir gesetzt sind.
Enthalten sind:
- Fhem
- Reverse Proxi
- Mariadb
- Adminer
- Portainer

Gibt es ein Verzeichnis für docker Images?

Gruß Christian

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 19 Dezember 2019, 09:32:11

Gibt es ein Verzeichnis für docker Images?

Gruß Christian
Ja, aber es sind keine Images als große Zip-Datei oder ähnlich. Docker speichert im Ordner overlay2 und weiteren. Wenn du Images löschen willst musst du die Docker Befehle dazu ausführen, nicht einfach Ordner löschen sonst bekommst du fehler.  Wenn es dir darum geht die Verzeichnisse woanders zu speichern - kann man in der systemd-config ändern (Parameter -g).
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: volschin am 19 Dezember 2019, 12:30:57
Du brauchst einen Docker Container für deine Architektur. Mysql gibt es nicht für Raspberry. Teste mal folgendes Image

linuxserver/mariadb
Zwar nicht als offizielles, aber generell schon.

https://hub.docker.com/r/tobi312/rpi-mysql/
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: ch.eick am 19 Dezember 2019, 20:26:53
Vielen Dank
Morgen geht's weiter

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 21 Dezember 2019, 11:36:33
Zwar nicht als offizielles, aber generell schon.

https://hub.docker.com/r/tobi312/rpi-mysql/
richtig, ich bezog mich auf die compose-yml vom Fragesteller in dem das origniale mysql-image verwendet wurde. Darum mein Link zu docker image linuxserver/mariadb .... mariadb sehe ich als akzeptable alternative zu mysql (da selbst ein port).
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: persching am 03 Januar 2020, 11:27:00
Ich möchte von meiner Heizung die Brennerstarts und die Brennerstunden den letzten Tages in einem Grafana Chart als Balken darstellen. Dazu hab ich jetzt die beiden Balken um jeweils 3 Stunden versetzt dargestellt. Der Wert ist über den ganzen Tag gleich, weil es ja der Vortageswert ist. Meine Idee zur besseren Darstellung war jetzt die Brennerstunden von 0-8 Uhr und die Brennerstarts von 12-20 Uhr darzustellen. Dann ist meine Idee, dass an einem Tag zwei Balken nebeneinander ohne Überlappung dargestellt werden. Leider bekomme ich die SQL Abfrage nicht hin. :( Geht sowas überhaupt??

https://ibb.co/dknkbWb (https://ibb.co/dknkbWb)

SELECT
  UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d 00:00:00')) as time_sec,
  CONVERT(VALUE, SIGNED) as value,
  'Brennerstarts' as metric
FROM history
WHERE READING like 'BrennerStartsLastDay' and $__timeFilter(TIMESTAMP)

SELECT
  UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d 03:00:00')) as time_sec,
  CONVERT(VALUE, SIGNED) as value,
  'Brennerstunden' as metric
FROM history
WHERE READING like 'BrennerStundenLastDay' and $__timeFilter(TIMESTAMP)

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SirMarco am 03 Januar 2020, 18:31:58
Hallo zusammen

ich versuche mich an den Vorjahreswerten der Temperaturfühler in einem Plot. Geht dieses mit Grafana überhaupt?
Meinen Netatmo Temperaturfühler habe ich mit:

SELECT
  UNIX_TIMESTAMP(`TIMESTAMP`) as time_sec,
  convert(value,integer) as value,
  "Temperatur" as metric
FROM history
WHERE READING="temperature" AND DEVICE="netatmo_M02_00_00_06_XX_XX" AND $__timeFilter(TIMESTAMP)

eingebunden.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 03 Januar 2020, 20:26:04
Hallo zusammen

ich versuche mich an den Vorjahreswerten der Temperaturfühler in einem Plot. Geht dieses mit Grafana überhaupt?
Meinen Netatmo Temperaturfühler habe ich mit:


geht das: ja ... ohne deine Anforderungen näher zu kennen

Code Beispiele im Eingangspost oder meinen Posts im Zeitraum Januar 2019, da hab ich einiges unterstützt und da sind auch Beispiele mit drin. Vielleicht hilft es dir ...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SirMarco am 03 Januar 2020, 20:48:24
Hallo

Habe ich das überlesen? Dachte ich habe alles durch, ich schaue nochmal.
Möchte einen Graph mit den aktuellen Daten und einen direkt aus dem Vorjahr, um die Temperaturen aus dem Vorjahr zu vergleichen.

Liebe Grüsse

SirMarco

Gesendet von meinem SM-G973F mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Thyraz am 03 Januar 2020, 22:08:18
Ich hab dieses Beispiel bei mir auch mit Vorjahresdaten erweitert:
https://forum.fhem.de/index.php/topic,77724.msg700195.html#msg700195

Für die Vorjahrswerte habe ich dann 3 weitere Querys (Vorjahr, Vorjahr Min/Max, Vorjahr Min/Max Baseline).
Die Zeitberechnung sieht aktuell so aus, dass ich zu den Altwerten 1 Jahr dazurechne um sie in den aktuellen Zeitraum zu holen.
UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d 12:00:00'), INTERVAL 1 YEAR)) as time_sec,
So hat man dann farblich in blau die Durchschnittstemperatur + Temperaturspanne des aktuellen Jahres und violett die hinterlegten Kurven des Vorjahres als Vergleich.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SirMarco am 04 Januar 2020, 14:26:10
Ich hab dieses Beispiel bei mir auch mit Vorjahresdaten erweitert:
https://forum.fhem.de/index.php/topic,77724.msg700195.html#msg700195

Für die Vorjahrswerte habe ich dann 3 weitere Querys (Vorjahr, Vorjahr Min/Max, Vorjahr Min/Max Baseline).
Die Zeitberechnung sieht aktuell so aus, dass ich zu den Altwerten 1 Jahr dazurechne um sie in den aktuellen Zeitraum zu holen.
UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d 12:00:00'), INTERVAL 1 YEAR)) as time_sec,
So hat man dann farblich in blau die Durchschnittstemperatur + Temperaturspanne des aktuellen Jahres und violett die hinterlegten Kurven des Vorjahres als Vergleich.

Danke für deinen Support. Darf ich fragen nach welcher Tabellenstruktur du deinen Datenbank angelegt hast?

Gruss
Marco
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Lanhydrock am 15 Januar 2020, 17:54:21
@Tobias/Thyraz: 1000 Dank auch von unserer Seite für die eingängigen Beispiele und die Vorstellung von Grafana an sich hier im Forum! Sehr sehr hilfreich!

Beispiel: Bar Chart mit summierten, täglichen Betriebsstunden ohne Statistics Modul.

Wer diesen sehr interessanten (und grandiosen) SELECT auch für (beispielsweise Homematic-) Thermostate nutzen möchte, die nicht nur 0/1, sondern die konkrete Öffnungsstellung (beispielsweise bei CUL_HM ja als actuator-Reading) kennen:

1. Man nehme für Query A Tobias Originalcode aus seinem Posting (https://forum.fhem.de/index.php/topic,77724.msg717020.html#msg717020).

2. Man ersetze DEVICE und READING entsprechend - sowie den Namen der Reihe:

Zitat
UNIX_TIMESTAMP(DATE_FORMAT(time_sec, '%Y-%m-%d 00:00:00')) as time_sec,
(SUM(on_time) / 86400) * 100 as value,
"Ventil geöffnet pro Tag" as metric

...

FROM history
WHERE READING="actuator" AND DEVICE="[[room]].HEI.1" AND $__timeFilter(TIMESTAMP)

UNION

 # -- Jeweils aktuell gültiger Wert für alle virtuellen Zeitstempel bestimmen --
SELECT time_sec,
( SELECT convert( VALUE,integer) as value
FROM history
WHERE READING="actuator" AND DEVICE="[[room]].HEI.1" AND TIMESTAMP <= time_sec
ORDER BY TIMESTAMP DESC
LIMIT 1

...

Anm.: Die Variable [[room]] ist bei uns ein Intervall mit möglichen Zimmerbezeichnungen der Thermostate: "1OG.zi1",...,"0EG.zi4",...

3. Man ändere den WHERE-Term ganz am Ende:

Zitat
...

WHERE VALUE > "0"
GROUP by DATE(time_sec)
ORDER BY time_sec

4. Dann kopiere man diese Query einmal als Query B und stelle einen leichten Zeitversatz für die Darstellung ein - sowie einen anderen Namen der Reihe:

Zitat
SELECT
 UNIX_TIMESTAMP(DATE_FORMAT(time_sec, '%Y-%m-%d 03:00:00')) as time_sec,
(SUM(on_time * VALUE) /100 / 86400) * 100 as value,
"Anteil Gesamtkapazität pro Tag" as metric

...

5. Dann - auch am Anfang von Query B - noch die Änderung für die genaue Öffnung des Ventils: Wir multiplizieren mit dem Öffnungswert (0-100) und teilen dann nach der Aufsummierung wieder durch 100:

Zitat
SELECT
 UNIX_TIMESTAMP(DATE_FORMAT(time_sec, '%Y-%m-%d 03:00:00')) as time_sec,
(SUM(on_time * VALUE) /100 / 86400) * 100 as value,
"Anteil Gesamtkapazität pro Tag" as metric

...

6. Damit hat man dann die Voraussetzungen für ein schönes Panel, das einem die Anteile pro Tag angibt, an denen das Ventil geöffnet war und zweitens mit welcher resultierenden Kapazität (allerdings natürlich unabhängig von bestimmt über Tag unterschiedlichen Vorlauftemperaturen...). Trotzdem: grandios, wie einfach das geht [,wenn man auf Vorarbeiten anderer aufsetzen darf...]
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 16 Januar 2020, 14:55:00
Ich musste mein ganzes System (RPi, FHEM etc.) komplett neu aufsetzen, weil meine Karte defekt war. Backup/restore war noch das einfachste, jetzt kämpfe ich uA mit grafana (und auch mit MQTT2, vielleicht spielt das eine Rolle?). Ich habe ein neues RPi gezogen, auf die Karte gespielt, keinerlei Firewall- und ähnliche Dinge aufgesetzt und nur FHEM sowie grafana installiert. Ich sehe aber beim Aufruf von http://192.168.2.7:3000 keinen Login-Schirm. Meine ini Datei sieht so aus:
##################### Grafana Configuration Example #####################
#
# Everything has defaults so you only need to uncomment things you want to
# change

# possible values : production, development
; app_mode = production

#################################### Paths ####################################
[paths]
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
#
;data = /var/lib/grafana
#
# Directory where grafana can store logs
#
;logs = /var/log/grafana

#################################### Server ####################################
[server]
# Protocol (http or https)
protocol = http

# The ip address to bind to, empty will bind to all interfaces
http_addr =

# The http port  to use
http_port = 3000

# The public facing domain name used to access grafana from a browser
;domain = localhost

# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
;enforce_domain = false

# The full public facing url
;root_url = %(protocol)s://%(domain)s:%(http_port)s/

# Log web requests
;router_logging = false

# the path relative working path
;static_root_path = public

# enable gzip
;enable_gzip = false

# https certs & key file
;cert_file =
;cert_key =

#################################### Database ####################################
[database]
# Either "mysql", "postgres" or "sqlite3", it's your choice
type = mysql
host = 127.0.0.1:3306
name = grafana
user = root
password =raspberry

# For "postgres" only, either "disable", "require" or "verify-full"
;ssl_mode = disable

# For "sqlite3" only, path relative to data_path setting
;path = grafana.db

#################################### Session ####################################
[session]
# Either "memory", "file", "redis", "mysql", "postgres", default is "file"
provider = file

# Provider config options
# memory: not have any config yet
# file: session dir path, is relative to grafana data_path
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
;provider_config = sessions

# Session cookie name
;cookie_name = grafana_sess

# If you use session in https only, default is false
;cookie_secure = false

# Session life time, default is 86400
;session_life_time = 86400

#################################### Analytics ####################################
[analytics]
# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
# No ip addresses are being tracked, only simple counters to track
# running instances, dashboard and error counts. It is very helpful to us.
# Change this option to false to disable reporting.
;reporting_enabled = true

# Google Analytics universal tracking code, only enabled if you specify an id here
;google_analytics_ua_id =

#################################### Security ####################################
[security]
# default admin user, created on startup
;admin_user = admin

# default admin password, can be changed before first start of grafana,  or in profile settings
;admin_password = admin

# used for signing
;secret_key = ******************

# Auto-login remember days
login_remember_days = 14
;cookie_username = grafana_user
;cookie_remember_name = grafana_remember

# disable gravatar profile images
;disable_gravatar = false

# data source proxy whitelist (ip_or_domain:port seperated by spaces)
;data_source_proxy_whitelist =

#################################### Users ####################################
[users]
# disable user signup / registration
allow_sign_up = true

# Allow non admin users to create organizations
;allow_org_create = true

# Set to true to automatically assign new users to the default organization (id 1)
;auto_assign_org = true

# Default role new users will be automatically assigned (if disabled above is set to true)
;auto_assign_org_role = Viewer

# Background text for the user field on the login page
;login_hint = email or username

#################################### Anonymous Auth ##########################
[auth.anonymous]
# enable anonymous access
enabled = true

# specify organization name that should be used for unauthenticated users
;org_name = Main Org.

# specify role for unauthenticated users
;org_role = Viewer

#################################### Github Auth ##########################
[auth.github]
;enabled = false
;allow_sign_up = false
;client_id = some_id
;client_secret = some_secret
;scopes = user:email,read:org
;auth_url = https://github.com/login/oauth/authorize
;token_url = https://github.com/login/oauth/access_token
;api_url = https://api.github.com/user
;team_ids =
;allowed_organizations =

#################################### Google Auth ##########################
[auth.google]
;enabled = false
;allow_sign_up = false
;client_id = some_client_id
;client_secret = some_client_secret
;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
;auth_url = https://accounts.google.com/o/oauth2/auth
;token_url = https://accounts.google.com/o/oauth2/token
;api_url = https://www.googleapis.com/oauth2/v1/userinfo
;allowed_domains =

#################################### Auth Proxy ##########################
[auth.proxy]
;enabled = false
;header_name = X-WEBAUTH-USER
;header_property = username
;auto_sign_up = true

#################################### Basic Auth ##########################
[auth.basic]
;enabled = true

#################################### Auth LDAP ##########################
[auth.ldap]
;enabled = false
;config_file = /etc/grafana/ldap.toml

#################################### SMTP / Emailing ##########################
[smtp]
;enabled = false
;host = localhost:25
;user =
;password =
;cert_file =
;key_file =
;skip_verify = false
;from_address = admin@grafana.localhost

[emails]
;welcome_email_on_sign_up = false

#################################### Logging ##########################
[log]
# Either "console", "file", default is "console"
# Use comma to separate multiple modes, e.g. "console, file"
;mode = console, file

# Buffer length of channel, keep it as it is if you don't know what it is.
;buffer_len = 10000

# Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
;level = Info

# For "console" mode only
[log.console]
;level =

# For "file" mode only
[log.file]
;level =
# This enables automated log rotate(switch of following options), default is true
;log_rotate = true

# Max line number of single file, default is 1000000
;max_lines = 1000000

# Max size shift of single file, default is 28 means 1 << 28, 256MB
;max_lines_shift = 28

# Segment log daily, default is true
;daily_rotate = true

# Expired days of log file(delete after max days), default is 7
;max_days = 7

#################################### AMPQ Event Publisher ##########################
[event_publisher]
;enabled = false
;rabbitmq_url = amqp://localhost/
;exchange = grafana_events

;#################################### Dashboard JSON files ##########################
[dashboards.json]
enabled = true
;path = /var/lib/grafana/dashboards

und die log Datei so
2020/01/16 14:26:47 [I] Starting Grafana
2020/01/16 14:26:47 [I] Version: master, Commit: NA, Build date: 1970-01-01 01:00:00 +0100 CET
2020/01/16 14:26:47 [I] Configuration Info
Config files:
  [0]: /usr/share/grafana/conf/defaults.ini
  [1]: /etc/grafana/grafana.ini
Command lines overrides:
  [0]: default.paths.data=/var/lib/grafana
  [1]: default.paths.logs=/var/log/grafana
Paths:
  home: /usr/share/grafana
  data: /var/lib/grafana
  logs: /var/log/grafana

2020/01/16 14:26:47 [I] Database: mysql
2020/01/16 14:26:47 [I] Migrator: Starting DB migration
2020/01/16 14:26:47 [I] Listen: http://0.0.0.0:3000
2020/01/16 14:42:43 [I] Received signal terminated. shutting down
2020/01/16 14:42:48 [I] Starting Grafana
2020/01/16 14:42:48 [I] Version: master, Commit: NA, Build date: 1970-01-01 01:00:00 +0100 CET
2020/01/16 14:42:48 [I] Configuration Info
Config files:
  [0]: /usr/share/grafana/conf/defaults.ini
  [1]: /etc/grafana/grafana.ini
Command lines overrides:
  [0]: default.paths.data=/var/lib/grafana
  [1]: default.paths.logs=/var/log/grafana
Paths:
  home: /usr/share/grafana
  data: /var/lib/grafana
  logs: /var/log/grafana

2020/01/16 14:42:48 [I] Database: mysql
2020/01/16 14:42:48 [I] Migrator: Starting DB migration
2020/01/16 14:42:48 [I] Listen: http://0.0.0.0:3000
2020/01/16 14:47:27 [I] Received signal terminated. shutting down
2020/01/16 14:47:31 [I] Starting Grafana
2020/01/16 14:47:31 [I] Version: master, Commit: NA, Build date: 1970-01-01 01:00:00 +0100 CET
2020/01/16 14:47:31 [I] Configuration Info
Config files:
  [0]: /usr/share/grafana/conf/defaults.ini
  [1]: /etc/grafana/grafana.ini
Command lines overrides:
  [0]: default.paths.data=/var/lib/grafana
  [1]: default.paths.logs=/var/log/grafana
Paths:
  home: /usr/share/grafana
  data: /var/lib/grafana
  logs: /var/log/grafana

2020/01/16 14:47:31 [I] Database: mysql
2020/01/16 14:47:31 [I] Migrator: Starting DB migration
2020/01/16 14:47:31 [I] Creating json dashboard index for path: /var/lib/grafana/dashboards
2020/01/16 14:47:31 [I] Listen: http://0.0.0.0:3000
Hat irgend jemand eine Idee, was hier schief läuft? Ich hatte nicht viel Chancen, überhaupt etwas zu installieren und demzufolge viele Fehler zu machen.

MYSQL bzw MariaDB läuft, Datenbank grafana ist da angelegt und Zugriff ist möglich.

Edit:
pi@rasp:/var/log/grafana $ sudo netstat -lptn
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      525/mysqld         
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      4682/perl           
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      4682/perl           
tcp        0      0 0.0.0.0:8084            0.0.0.0:*               LISTEN      4682/perl           
tcp        0      0 0.0.0.0:8085            0.0.0.0:*               LISTEN      4682/perl           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      486/sshd           
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      4682/perl           
tcp        0      0 0.0.0.0:8383            0.0.0.0:*               LISTEN      4682/perl           
tcp        0      0 0.0.0.0:7072            0.0.0.0:*               LISTEN      4682/perl           
tcp6       0      0 :::80                   :::*                    LISTEN      543/apache2         
tcp6       0      0 :::22                   :::*                    LISTEN      486/sshd           
tcp6       0      0 :::3000                 :::*                    LISTEN      5816/grafana 
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 16 Januar 2020, 18:45:16
Ich sehe aber beim Aufruf von http://192.168.2.7:3000 keinen Login-Schirm. Meine ini Datei sieht so aus:

was meinst du damit, du siehst den Grafana-Screen aber kein Login, oder es wird überhaupt nichts angezeigt und irgendwann kommt ein Timeout?

Zweites: teste mal
# The public facing domain name used to access grafana from a browser
domain = localhost
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 16 Januar 2020, 18:53:39
Ich musste mein ganzes System (RPi, FHEM etc.) komplett neu aufsetzen, weil meine Karte defekt war. Backup/restore war noch das einfachste, jetzt kämpfe ich uA mit grafana (und auch mit MQTT2, vielleicht spielt das eine Rolle?)
Wenn du sowieso schon alles neu machst, hast du mal Docker überlegt? Nimmt viele Abhängigkeiten da jede Anwendung einfach ein Container ist. Nur mal am Rande, ist hier aber OT.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 16 Januar 2020, 19:33:22
Wenn du sowieso schon alles neu machst, hast du mal Docker überlegt? Nimmt viele Abhängigkeiten da jede Anwendung einfach ein Container ist. Nur mal am Rande, ist hier aber OT.
Hatte ich. Mein Problem ist: Ich habe heute den ganzen Tag mit einer Installation zugebracht, die ich eigentlich kannte und die in wenigen Stunden gehen sollte. Nichts geht und ich kapiere auch nichts. In docker müsste ich mich einarbeiten und das heißt: Noch mehr Zeit aufwenden. Das kann ich gerade nicht, zumal die Familie langsam amok läuft.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 16 Januar 2020, 19:36:46
was meinst du damit, du siehst den Grafana-Screen aber kein Login, oder es wird überhaupt nichts angezeigt und irgendwann kommt ein Timeout?
Sieht so aus wie im Anhang.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 17 Januar 2020, 10:29:17
Sieht so aus wie im Anhang.

wie hast du installiert? Ich habe schon eine Weile kein Raspberry mehr, aber früher war die Version in den normalen Debian Distri stark veraltet und hatte das Symptom (sprich Installation über apt-get install ***).  Prüfe ob du die aktuelleste Version installier hast.

Welche Version hast du, die aktuelle ist ca. 6.5* (* irgend was).
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 17 Januar 2020, 18:29:23
Sieht so aus wie im Anhang.

habe es mal in einem Container installiert. Läuft mit deiner Granfaa.ini (hab nur die DB auf sqlite3 genändert da ich keine MySQL laufen habe). Vermutlich liegts an der Version

root@testgrafana:/docker/docker_files# cat /usr/share/grafana/VERSION
6.5.3

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 17 Januar 2020, 20:09:19
Alles klar, danke. Ich hatte diese Version von der Grafana-Webseite geholt, aber momentan tauchen ganz grundlegende Probleme bei der Installation auf. Wenn ich die im Griff habe, kann ich mir das genauer anschauen. Danke!
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 18 Januar 2020, 11:07:51
verstehe ... nun ist ein guter Zeitpunkt deine Familie davon zu überzeugen die Installation auf einen Intel Nuc zu ziehen :)

 in Verbindung mit Proxmox und Container / Docker ist Backup und Recovery easy. Selbst bei Hardwaredefekt Proxmox in eine VMWare und Backup einspielen. Gebrauchte Nuc gibts für 100 in der Bucht.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Mitch am 23 Januar 2020, 20:23:32
Hab mir jetzt auch Grafana installiert. kenne das schon beruflich.

Was ich aber einfach nicht hinbekomme, ist die Einbindung in FHEM  >:(
Ich hole mir im Dashboard unter Share den Embed den iframe Link:

(https://lh3.googleusercontent.com/EJwJXVWbXLS2F7dXt0It2-fYePKCMmR5Rhsl41BiDzl_ivDUkiWY2f1D9BcZ9MAb3WXUPElHyDZFIlLUo9HLW3ZCFtUZQdreqpK5IM02ew_LNtJESX3D-lbFrAfsz0EFE3YQM_WVS7zHPLq1PflXYYqxcoACjMvTXb3syRgij6TwNroAL4lS7xg8U8gzg_EsMgaP29GWBpEl8lldCwG5DPe9Tw2_w1FuQDvTdM-9dkz6PjJNAWTj1uzArLbgkdZi8o7qTzh-m5KDRvYq80L5Drl48jJQtfGbKFxSGxqlo2VyWORMzVHG1gF7hu6RCH0Ge2djDXAK28xQW-EJLoem0dXOc4Bf9pDADmIfwrWEjwHIXqyQHNypLC9tfd6WeF0ZPn40uzouPxZmiiIfhsirBsP29hxluZavnifXF9I7Wc1BViuU1N--UFaayN_c3_6n3G2RWS_g1-3HtHPOFRSObT3qOcdcr_vhPdY_ZFRKfntM_utMUZ6nqf7b3aEmyR_CZiTmhoHDFTtkX72XUz3zSac3HS5SnQYcOQ8i_FvMguvHPFhMiVAiFsgBa31PBh33s06mu4Dovp8kGrBvshUfcpiH_q4tCuVhXCeo-Gh29op2Xm6tVOwD9x-eCuajqd55LX85ve8m1uF65gAs78l2gnWtPXS5ny04DIOykiffWWEncC7_CJDYSSE0I-ldCKU6Fs1QlO1ogoD-8TBw-nBiw49z-7L5EgU-6UMM-ZB2B24CWdk-RQ=w1494-h954-no)


und definiere win weblink device:

Internals:
   CFGFN     
   DEF        iframe http://x.x.x.x:3000/d-solo/WC01NCPZk/go-echarger?orgId=1&from=1579633450884&to=1579806250885&panelId=2
   FUUID      5e29ee67-f33f-5738-2195-b78719b1d7e3065b
   LINK       http://x.x.x.x:3000/d-solo/WC01NCPZk/go-echarger?orgId=1&from=1579633450884&to=1579806250885&panelId=2
   NAME       GrafanaTest
   NR         24456
   STATE      initialized
   TYPE       weblink
   WLTYPE     iframe
   helper:
     bm:
       weblink_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        23.01. 20:05:11
         max        9.79900360107422e-05
         tot        9.79900360107422e-05
         mAr:
           HASH(0x1a4d5de8)
           GrafanaTest weblink iframe http://x.x.x.x:3000/d-solo/WC01NCPZk/go-echarger?orgId=1&from=1579633450884&to=1579806250885&panelId=2
Attributes:
   htmlattr   width="450" height="200" frameborder="0"

Leider kommt nichts an, also einfach leer?!  :'(

(https://lh3.googleusercontent.com/ZA8kyI97XFwoLZB0cfE-7BbsgcW1zj76RztKQ3vdfCyFHZueOWqkkUn7upjG5o43mo-QqenrJXtDWrO_DpO-R1-LUPeKwEnGScIEOYrR9O6wFOJGS20vi6Je2AY9Xu62CCzE_Jc6bq7Jzrsy84suaz5QEI9cpiUdG9Vnz1c982kB1QgSenavfE5VhhWMi3PeoTt4BBe4Fias3F4Uw4BvjOZIiKE591y9Lnf6tqmuIeACer8MGw6nV39XtNFKrb45gfdDAYAmX4kapTdZzuTozNFXe4MxGe-w2d4mwa1QS_NPcbQkU93huQK4UjqL3XHVm2TV8P40nEt2zmeWD01wPo4S_BVPD4eawRGIoXKYoSlprMHOYaKeksdQQsFXbxtwbxyOz6Gy6RgrbYYj04hJvBu_VaYab6bH46OGXEXE-HUgwZ01LqjRZSip-pS09e9YeTDYnV6Z5SOvAsZczokUIEWAf774Z8tXtjrg-XZbZUxPyU3dvcmu_PMO6IgO6po8QtbB0eR92d5KUxQkUMqujwtchevNUdi0XatYNZxWZBqQPAbuFBH--tuipNmLWvNEiu9A8VIRN3Xy3oOseqGqH-DQdE7ErRP6A0iQCpb6kUG2n2RPuCP_91LKV3AoWNQzBDbF9NH5yaYsZzDoyr8bizUPkDpifN7MAZLWXlU8sisP-WDZRW_nBaAtG0RX9J4XtBenqC_9DvnoGRiZgfXnV2uIZ_w6g-QfkJB50Zvx2jACWgUmqw=w1578-h658-no)

EDIT: wieso geht der IMG Tag nicht??
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 23 Januar 2020, 21:27:28
grafana.ini
[security]
allow_embedding = true
cookie_samesite = none
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Mitch am 23 Januar 2020, 22:02:55
Danke,allow_embedding hatte ich, cookie_samesite nicht.
Leider keine Änderung  :'(

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 23 Januar 2020, 22:11:00
alles neu gestartet? Link in verschiedenen Browser geprüft? I h sehe keinen Fehler.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Mitch am 23 Januar 2020, 22:13:46
Klar, Grafana neu gestartet, verschiedene Browser, geht alles nicht.

Gebe ich den Link direkt ein, geht es. Nur eben nicht als weblink in FHEM.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 24 Januar 2020, 04:41:19
vielleicht  https://forum.fhem.de/index.php/topic,93036.0.html (https://forum.fhem.de/index.php/topic,93036.0.html)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: FHEM-User22 am 24 Januar 2020, 09:04:31
Moin,
mir geht es genau so wie Mitch, und ich finde auch keine Lösung.

Grüße
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Mitch am 24 Januar 2020, 11:48:32
vielleicht  https://forum.fhem.de/index.php/topic,93036.0.html (https://forum.fhem.de/index.php/topic,93036.0.html)

Tausend Dank, genau das war das Problem!
Jetzt gehts und sieht genial aus. Vor allem die Max-, Min- und Mittelwerte (siehe Anhang)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: FHEM-User22 am 24 Januar 2020, 17:35:42
Tausend Dank, genau das war das Problem!
Jetzt gehts und sieht genial aus. Vor allem die Max-, Min- und Mittelwerte (siehe Anhang)

Schön für Dich
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Mitch am 24 Januar 2020, 17:41:40
Schön für Dich

und was hast du jetzt genau für ein Problem mit mir??!!  :o
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 12 Februar 2020, 16:18:51
Hallo mal ne blöde frage zu Grafana, ich bekomme die Werte in einen Graph rein, nur kann ich irgendwie den Text für die einzelnen Serien niergends ändern.

im SQL habe ich ein READING as metric drinnen, und genau das READING Wird mir nun als Text angezeigt ... ist aber leider teils nicht wirklich aussagekräftig.

Gibt es da eine andere Möglichkeit als das ins SQL einzubauen?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 12 Februar 2020, 17:22:57
Hallo mal ne blöde frage zu Grafana, ich bekomme die Werte in einen Graph rein, nur kann ich irgendwie den Text für die einzelnen Serien niergends ändern.

im SQL habe ich ein READING as metric drinnen, und genau das READING Wird mir nun als Text angezeigt ... ist aber leider teils nicht wirklich aussagekräftig.

Gibt es da eine andere Möglichkeit als das ins SQL einzubauen?
Was hast du aktuell und was stellst du dir vor. Bitte etwas mehr input. Vermutlich musst du im SELECT nur ein alias für die Spalte setzen.

Gesendet von meinem SM-G960F mit Tapatalk

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 12 Februar 2020, 18:25:53
ich habe das select so

SELECT
  TIMESTAMP,
  READING as metric,
 CONVERT(VALUE, DOUBLE) as value
 FROM history WHERE $__timeFilter( TIMESTAMP ) AND (
 (DEVICE="PV_Stromzaehler" AND READING="Power_total__W")
 OR (DEVICE="PV_Fronius_Basis" AND READING="Power_Site__W")
 OR (DEVICE="PV_Stromzaehler" AND READING="Energy_Summe")
 )

nun bekomme ich da dann 3 Serien mit eben Power_total__W, Power_Site__W und Energy_Summe

Diese möchte ich gerne im Dashboard anders betitelt haben
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 12 Februar 2020, 18:45:38
@sn0000py

Ich habe nun 2 Readings in einem Graphen. Einmal % und einmal °C.

Den 2. habe ich so aufgebaut:
SELECT
  UNIX_TIMESTAMP(`TIMESTAMP`) as time_sec,
  CAST(`VALUE` AS DECIMAL(10, 6)) as value,
  'Temperstur Vorlauf Kamin' as metric
FROM `history`
WHERE $__timeFilter(`TIMESTAMP`) AND `DEVICE` = 'VBUSDEV_7321' AND `READING` = 'temperature_T03'
ORDER BY `TIMESTAMP` ASC

Sieht so aus wie im Anhang

Wie bekomme ich rechts auf der y-Achse und in der Legende °C abgebildet?
Schau dir das an ... du musst dein SELECT in 3 einzelne auftrennen und hinter value den alias schreiben. Syntax siehe mein zitat

Gesendet von meinem SM-G960F mit Tapatalk
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 12 Februar 2020, 19:13:39
ja so würde es gehen, ist aber schade wenn ich nun 3 einzelne SELECTs machen muss da es auch langsamer sein wird und auf jeden Fall unübersichtlicher usw.

ist halt komisch das man das nicht einstellen kann.

Auch habe ich nix gefunden wo ich das Datumsformat für den Hint einstellen kann ist immer amerikanisch :O
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 12 Februar 2020, 20:56:35
ja so würde es gehen, ist aber schade wenn ich nun 3 einzelne SELECTs machen muss da es auch langsamer sein wird und auf jeden Fall unübersichtlicher usw.
Geschwindigkeit: darum nutze ich für Grafana InfluxDB. MySql sehe ich als Workaround mit allen Einschränkungen. Wobei ich nicht glaube, dass ein Select mit OR verknüpft merklich schneller ist als einzelne Statement in dem über den SChlüssel gelesen wird.
Unübersichtlich: ich finde SQL-Statements mit OR verknüpft unübersichtlich. Mit 3 separaten Selects weißt du genau was du erwartest. Wenn es einmal konfiguriert ist schaust du es sowieso nicht mehr an. Geschmackssache

ist halt komisch das man das nicht einstellen kann.
komisch ist egal solange das Ziel erfüllt wird. Du brauchst halt eine Datenreihe mit Alias. Alternativ kannst auch Userreadings erzeugen und diese so bennenen wie du diese im Plot haben willst. Name aus dem Readingsname oder Alias im SQL-Statement, mehr Möglichkeinten fallen mir nicht ein.

Auch habe ich nix gefunden wo ich das Datumsformat für den Hint einstellen kann ist immer amerikanisch :O
Ging früher nicht, waren etliche Anfragen im Grafana Github jedoch vor einem Jahr nicht umgesetzt. Am besten googlen .. vermutlich gehts immer noch nicht.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 13 Februar 2020, 09:05:18
Okay danke für die infos :D

Dann gleich mal zwei fragen ;)

1.) Wenn ich auf diese InfluxDB umsteigen, schaffe ich es da meine alt Daten zu übernehmen?
2.) Wenn das Grafana nicht oder sehr schelcht gewartet wird, ist es dann überhaupt wert da drauf umzusteigen? -So was wie ein eintellbares Datumsformat sollte normalerweise ja kein Problem sein, und für eine ChartSoftware unterster Standard normalerweise?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 13 Februar 2020, 10:06:20
weiss jemand auch wie man mit grafana einen delta graph bekommt?

Ich habe den Verbrauch von einem Gerät, aber das ist halt einfach ein steigender Wert ... da möchte ich gerne auf einen stunden oder viertelstunde verbrauch zurückrechnen
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: kadettilac89 am 13 Februar 2020, 14:17:17
Okay danke für die infos :D

Dann gleich mal zwei fragen ;)

1.) Wenn ich auf diese InfluxDB umsteigen, schaffe ich es da meine alt Daten zu übernehmen?
2.) Wenn das Grafana nicht oder sehr schelcht gewartet wird, ist es dann überhaupt wert da drauf umzusteigen? -So was wie ein eintellbares Datumsformat sollte normalerweise ja kein Problem sein, und für eine ChartSoftware unterster Standard normalerweise?
1) ich weiß nicht wie fit du bist ... "man" kann es machen ... habe dazu mal ein Script geschrieben und für andere bereiet gestellt ...
https://forum.fhem.de/index.php/topic,71551.msg838940.html#msg838940 ...

2) das ist definitiv nicht der fall .... grafana wird sehr stark und schnell gewartet. für docker gibt es sehr häufig neue releases. deutsches datumsformat hat halt geringe prio
es gibt dinge die auch mir nicht gefallen aber man kann es ja mal testen ...

weiss jemand auch wie man mit grafana einen delta graph bekommt?

Ich habe den Verbrauch von einem Gerät, aber das ist halt einfach ein steigender Wert ... da möchte ich gerne auf einen stunden oder viertelstunde verbrauch zurückrechnen
in sql wird das komplex. versucht mal das statistic oder history modul in fhem oder per userreading und schreibe dir damit minutenwerte ....


Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 13 Februar 2020, 22:55:21
weiss jemand auch wie man mit grafana einen delta graph bekommt?

Ich habe den Verbrauch von einem Gerät, aber das ist halt einfach ein steigender Wert ... da möchte ich gerne auf einen stunden oder viertelstunde verbrauch zurückrechnen

So in etwa? Sowas ist mit SQL schon ein bissel knifflig, aber geht :-)

SELECT
  TIMESTAMP(CONCAT(YEAR(MIN(rawValues.ts)), '-', IF(MONTH(MIN(rawValues.ts)) < 10, CONCAT('0',MONTH(MIN(rawValues.ts))), MONTH(MIN(rawValues.ts))), '-01 00:00:00')) AS time,
  SUM(rawValues.valueDiff) *(0.24/1000) as value,
  "Stromverbrauch Luftentfeuchter" as metric
FROM (SELECT
       TIMESTAMP as ts,
       ROUND(if((@old > -1) AND (h1.VALUE - @old) > 0,h1.VALUE - @old, 0),2) AS valueDiff,
       @old := h1.VALUE+0 as lastValue
     FROM history h1, ( SELECT @old:=-1) AS var
     WHERE h1.READING="energy" AND h1.DEVICE = "bg.entfeuchter" AND $__timeFilter(TIMESTAMP)
     ORDER BY ts ASC)
       as rawValues
GROUP BY MONTH(rawValues.ts), YEAR(rawValues.ts)
ORDER BY 1

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 14 Februar 2020, 09:21:50
ok super danke, scheint zu funktionieren, wobei ich auch noch stunden langen begutachten keine Ahnung habe was das tun soll :P
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: andies am 14 Februar 2020, 10:19:53
Sowas ist mit SQL schon ein bissel knifflig, aber geht :-)
Hast Du einen Link, wo man sich so was mal selber beibringen kann?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 14 Februar 2020, 10:48:56
OK dann mal ein kurzes Tutorial, wie ich so eine Anfrage konstruiere.

Zuerst holt man sich alle Verbrauchswerte im gewünschten Zeitbereich (über die Grafana-Funktion $__timeFilter(TIMESTAMP)), sortiert nach der Zeit:

SELECT
     TIMESTAMP as ts,
     VALUE as value,
     FROM history h1
     WHERE h1.READING="energy" AND h1.DEVICE = "bg.entfeuchter" AND $__timeFilter(TIMESTAMP)
     ORDER BY ts ASC

Das wäre dann so eine Tabelle:

ts               |  VALUE
2019-02-11 11:00 |  30002
2019-02-11 11:01 |  30008
2019-02-11 11:02 |  30015
2019-02-11 11:03 |  30027

Allerdings wollen wir ja nicht die jeweiligen absoluten Verbrauchswerte, sondern den Verbrauch in einer bestimmten Zeiteinheit. Um den ausrechnen zu können, erstellen wir stattdessen eine Tabelle, die für jeden Timestamp ausrechnet, wieviel im Vergleich zum letzten Zeitpunkt hinzugekommen ist, also die Differenz zur vorherigen Zeile in der Tabelle:

SELECT
       TIMESTAMP as ts,
       ROUND(if((@old > -1) AND (h1.VALUE - @old) > 0,h1.VALUE - @old, 0),2) AS valueDiff,
       @old := h1.VALUE+0 as lastValue
     FROM history h1, ( SELECT @old:=-1) AS var
     WHERE h1.READING="energy" AND h1.DEVICE = "bg.entfeuchter" AND $__timeFilter(TIMESTAMP)
     ORDER BY ts ASC

Hier nutze ich eine SQL-Variable "@old". Diese wird mit -1 initialisiert (über SELECT @old:=-1) und enthält dann für jeden Zeile immer den vorherigen Zählerstand (also den Wert aus der Zeile darüber), so dass man über eine einfache Subtraktion h1.VALUE - @old die Differenz zur aktuellen Zeile bilden kann. Das gibt dann (zur Veranschaulichung leicht vereinfacht) so eine Tabelle:

ts               |  VALUE | @old  | valueDiff
2019-02-11 11:00 |  30002 | -1    | 0*
2019-02-11 11:01 |  30008 | 30002 | 6
2019-02-11 11:02 |  30015 | 30008 | 7
2019-02-11 11:03 |  30027 | 30015 | 12

Die 0 für die erste Zeile besorgt uns dabei das if im SELECT-TEIL: if((@old > -1) ... ,h1.VALUE - @old, 0) Hier wird über AND (h1.VALUE - @old) > 0 auch sichergestellt, dass Sprünge im Zähler (Reset des Energy-Counters auf 0) ignoriert werden.

So, was jetzt noch fehlt ist das Zeitslot-weise Aufsummieren dieser Einzeldifferenzen. Dazu packen wir unsere Abfrage als "Unterabfrage" in einen "Wrapper":

SELECT
  rawValues.ts AS time,
  SUM(rawValues.valueDiff) as value,
  "Stromverbrauch" as metric
FROM ( .... unsere Tabelle mit den Einzeldifferenzen .... )
       as rawValues
GROUP BY MONTH(rawValues.ts), YEAR(rawValues.ts)

Hierzu bitte bei Bedarf die Aggregationsfunktionen von SQL einmal nachschlagen (Group by / SUM etc).

Bleibt noch, Grafana dazu zu bringen, die Balken mittig in den jeweiligen Zeitraum zu setzen. Dazu wird rawValues.ts AS time, ersetzt durch das etwas sperrige Konstrukt:

TIMESTAMP(CONCAT(YEAR(MIN(rawValues.ts)), '-', IF(MONTH(MIN(rawValues.ts)) < 10, CONCAT('0',MONTH(MIN(rawValues.ts))), MONTH(MIN(rawValues.ts))), '-01 00:00:00')) AS time,
Und alles zusammen:

SELECT
  TIMESTAMP(CONCAT(YEAR(MIN(rawValues.ts)), '-', IF(MONTH(MIN(rawValues.ts)) < 10, CONCAT('0',MONTH(MIN(rawValues.ts))), MONTH(MIN(rawValues.ts))), '-01 00:00:00')) AS time,
  SUM(rawValues.valueDiff) *(0.24/1000) as value,
  "Stromverbrauch Luftentfeuchter" as metric
FROM (SELECT
       TIMESTAMP as ts,
       ROUND(if((@old > -1) AND (h1.VALUE - @old) > 0,h1.VALUE - @old, 0),2) AS valueDiff,
       @old := h1.VALUE+0 as lastValue
     FROM history h1, ( SELECT @old:=-1) AS var
     WHERE h1.READING="energy" AND h1.DEVICE = "bg.entfeuchter" AND $__timeFilter(TIMESTAMP)
     ORDER BY ts ASC)
       as rawValues
GROUP BY MONTH(rawValues.ts), YEAR(rawValues.ts)
ORDER BY 1

So ... als Übung kannst du das jetzt auf stundenweise abändern ;-)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 14 Februar 2020, 10:53:45
So in etwa? Sowas ist mit SQL schon ein bissel knifflig, aber geht :-)

SELECT
  TIMESTAMP(CONCAT(YEAR(MIN(rawValues.ts)), '-', IF(MONTH(MIN(rawValues.ts)) < 10, CONCAT('0',MONTH(MIN(rawValues.ts))), MONTH(MIN(rawValues.ts))), '-01 00:00:00')) AS time,
  SUM(rawValues.valueDiff) *(0.24/1000) as value,
  "Stromverbrauch Luftentfeuchter" as metric
FROM (SELECT
       TIMESTAMP as ts,
       ROUND(if((@old > -1) AND (h1.VALUE - @old) > 0,h1.VALUE - @old, 0),2) AS valueDiff,
       @old := h1.VALUE+0 as lastValue
     FROM history h1, ( SELECT @old:=-1) AS var
     WHERE h1.READING="energy" AND h1.DEVICE = "bg.entfeuchter" AND $__timeFilter(TIMESTAMP)
     ORDER BY ts ASC)
       as rawValues
GROUP BY MONTH(rawValues.ts), YEAR(rawValues.ts)
ORDER BY 1

zwei fragen hätte ich, wie kommst du beim SUM(rawValues.valueDiff) *(0.24/1000) as value, auf das *0,24*1000 ?
und zweites wäre es in dem Fall nicht noch performanter im inneren SQL noch mal zuerst nach Jahr/Monat zu gruppieren und den MAX(VALUE) verwenden.

Für den Fall das der Zähler nur aufsteigend ist?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 14 Februar 2020, 11:01:43
Oh das habe ich vergessen zu erläutern:

Das ist die Umrechnung von Wattstunden nach Strompreis ;-)

Und ja, performancemäßig ist es tatsächlich besser, erst zu Gruppieren und dann mit Max und Min zu rechnen. Dafür hätte ich aber für jedes Device, wo ich das machen will, ein zusätzliches monotonic Userreading in FHEM erstellen müssen - eben weil sonst Resets des Zählers falsch behandelt werden. Das wollte ich mir sparen bzw. war quasi unmöglich, da ich meine DB schon seit mehreren Jahren befüllt hatte, bevor ich Grafana gefunden habe :-)

Und so lahm ist das wirklich nicht, im Gegenteil, auf meiner NUC ist die Anfrage in wenigen Millisekunden durch bei > 30M Zeilen in der DB und > 100K betroffenen Zeilen pro Anfrage. Wenn das lahm sein sollte, checkt mal die Indizes.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: sn0000py am 14 Februar 2020, 15:25:51
hhahahah okay ja im bild hätte man es erkennen können das du da euro hast.... ja dann ist logisch und habs nun verstanden :D

nein performance mässig passts im moment eh bei mir da gibts nicht zu bemängeln :D
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: tatu123 am 14 März 2020, 15:25:55
Hallo zusammen,

ich versuche mich gerade an Grafana. So weit so gut. Ich habe jetzt schon mehrere Kurven eingerichtet. Was ich nur nicht hin bekomme das die Kurven nicht 1 Stunde versetzt sind und bis zur aktuellen Zeit angezeigt werden. Ich denke das kommt von meiner localtime (CET) und der Grafanatime (UTC). Auch das Einstellen von "local brower time" ändert das nicht.

Ich benutze
Grafana (v 6.6.2) und Mysql (v. 5.7) im docker. Beide haben localtime CET. Im phpmyadmin sehe ich das die Daten mit korrektem Timestamp in der Datenbank sind. Im gplot im fhem sehe ich die Kurve korrekt dargestellt. Im Grafana +1h in der Darstellung mit z.B.

SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  CONVERT(VALUE, DECIMAL) as value,
  'Solar-Erzeugung' as metric
FROM `history`
WHERE $__timeFilter(TIMESTAMP) and DEVICE = "shelly1pm_solar" and READING = "relay_0_power"
ORDER BY TIMESTAMP ASC

Jetzt kann ich mit

SELECT
  (CONVERT_TZ(TIMESTAMP,'+01:00', '+00:00')) as time_sec,
  CONVERT(VALUE, DECIMAL) as value,
  'Solar-Erzeugung' as metric
FROM `history`
WHERE $__timeFilter(TIMESTAMP) and DEVICE = "shelly1pm_solar" and READING = "relay_0_power"
ORDER BY TIMESTAMP ASC

die Kurve in der Zeit richtig "stellen" aber dann fehlt mir am Ende der Kurve die letzte Stunde.

Wie macht ihr das ?

Heiko
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: rcmcronny am 14 März 2020, 17:14:08
Hoi,

bei mir sehen die Abfragen so aus:

SELECT
UNIX_TIMESTAMP(DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i:%s')) as time_sec,
    CAST(VALUE AS DECIMAL(10,2)) as value,
    'Wohnzimmer' as 'metric'
  FROM history
  WHERE READING="Wohnzimmer" AND DEVICE="ESPEasy_ESP_1WireGw1" AND $__timeFilter(TIMESTAMP)
  ORDER BY time_sec ASC
[code]

Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: tatu123 am 14 März 2020, 19:12:57
Ja hatte ich auch schon probiert. Hat bei mir auch eine Stunde Zeitverschiebung. Bei Dir nicht ?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: rcmcronny am 14 März 2020, 19:35:07
Hi,

nö, ist bei mir aktuell, wie es sein soll.

Ronny
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: volschin am 14 März 2020, 20:54:34
Es bringt überhaupt nichts, wenn Du am Select schraubst, Du musst am timestamp der Where Clause anpassen.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: tatu123 am 15 März 2020, 17:35:52
Na klar manchmal sieht man den Wald vor lauter Bäumen nicht. Danke für den Hinweis.
Jetzt habe ich eine Lösung.

SELECT
  (CONVERT_TZ(TIMESTAMP,'+01:00', '+00:00'))  as time_sec,
  CONVERT(VALUE, DECIMAL) as value,
  'Solar-Erzeugung' as metric
FROM `history`
WHERE $__timeTo(timestamp + 1h) and DEVICE = "shelly1pm_solar" and READING = "relay_0_power"
ORDER BY TIMESTAMP ASC

So gehts. Nicht schön aber tut.

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 23 März 2020, 14:57:29
Hallo Zusammen, kann es sein dass die Render Funktion in Grafana der Dashboards für die iframes nicht mehr existiert?

http://192.168.1.124:3000/render/dashboard-solo/db/garage-ost?orgId=1&from=now-7d&to=now&panelId=1&width=750&height=300&tz=UTC%2B02%3A00
Rendering failed - PhantomJS isn't included in arm build per default
Grafana v6.4.4

Danke.
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Gunther am 02 April 2020, 00:22:15
Ich habe auch das Zeitzonenproblem und suche Hilfe.

Installation:
Intel Nuc mit Proxmox: Zeiteinstellung:
Zeitzone Europe/Berlin (CEST +2) - passt mit der aktuellen Zeit

Ubuntu Container mit Grafana:
Zeitzone Europe/Berlin (CEST +2) - passt mit der aktuellen Zeit

Ubuntu Container mit MySQL:
Zeitzone Europe/Berlin (CEST +2) - passt mit der aktuellen Zeit

Client:
Macbook: Mitteleuropäische Sommerzeit - passt mit der aktuellen Zeit

Chrome-Browser auf meinem Client - passt mit der aktuellen Zeit
Suchergebnisse
Ortszeit
23:55
Mittwoch, 1. April 2020
Central European Summer Time (CEST)

in Grafana:
a) wenn ich Browsertinme einstelle:
Grafana zeigt aktuell Werte an, die in der DB vor zwei Stunden aufgezeichnet wurden

b) wenn ich UTC anstelle, zeigt mir Grafana die Werte von vor 2 Stunden an (hier passt der Zeitstempel dann mit meiner DB)

Wie bekomme ich die aktuellen Werte angezeigt?
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Gunther am 02 April 2020, 14:10:01
Ich denke, ich habe eine Lösung gefunden:

Grafana auf "Local Browser Time" und in der Abfrage folgendes:
SELECT
  CONVERT_TZ(`TIMESTAMP`, '+02:00','+00:00') as time_sec,
  CAST(`VALUE` AS DECIMAL(10, 6)) as value,
  'Temperatur' as metric
FROM `history`
WHERE `DEVICE` = 'kg_sk_Stromzaehler_IEC_01' AND `READING` = 'power' AND
  CONVERT_TZ(`TIMESTAMP`, '+02:00','+00:00') > $__timeFrom() AND
  CONVERT_TZ(`TIMESTAMP`, '+02:00','+00:00') <= $__timeTo()
ORDER BY `TIMESTAMP` ASC

Nicht schön, aber geht...
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Steffen@Home am 03 April 2020, 12:06:58
Hallo,
ich habe den Versuch zum ausdünnen aus Seite 1 versucht aber es kommt immer die Fehlermeldung:
Error 1054: Unknown column '1m' in 'group statement'Ich komme einfach nicht dahinter. Ausserdem müsste im Group Statement nicht das 2. 'h' durch 't' ersetzt werden ???

Mein Code (von Seite 1 kopiert und nur Reading und Device geändert:
SELECT
  UNIX_TIMESTAMP(TIMESTAMP) as time_sec,
  AVG(CONVERT(VALUE, DOUBLE)) as value,
  "Geglättet" as metric
FROM history
WHERE READING="temperature" AND DEVICE="d_GarageWestDHT22" AND $__timeFilter(TIMESTAMP)
GROUP BY UNIX_TIMESTAMP(TIMESTAMP) DIV CASE RIGHT($__interval, 1) 
                                          WHEN 's' THEN $__interval
                                          WHEN 'm' THEN $__interval * 60
                                          WHEN 'h' THEN $__interval * 3600
                                          WHEN 'h' THEN $__interval * 86400
                                          ELSE $__interval
                                        END



Danke!
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: SirMarco am 19 April 2020, 14:03:39
Hallo,
habe 2 Fragen an Euch...
  • das letzte passende Release für Grafana ist das 5.1.4 aus dem fg2it End of Life Repository ?
  • Kann man die X-Achse irgendwie formatieren (dd mm yyyy) auf z.B. 18. Nov statt 11/18 usw?

Danke und Gruß

Hi Steffen

Konntest du das Problem mit dem Datumsformat lösen?
Danke

Grüsse

Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: peterk_de am 19 April 2020, 17:44:44
Hi Steffen

Konntest du das Problem mit dem Datumsformat lösen?
Danke

Grüsse

Das ist momentan nicht lösbar - siehe https://github.com/grafana/grafana/issues/1459 - und das bleibt es wohl auch, bis es irgendjemand mal eingebaut hat ;)
Titel: Antw:Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)
Beitrag von: Aim23 am 22 April 2020, 20:27:09
Seit über 5 Jahren ein Ding der Unmöglichkeit. Die Amis können einfach nicht über den Tellerrand schauen!

Gesendet von meinem STF-L09 mit Tapatalk