Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

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

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

Vorheriges Thema - Nächstes Thema

C0mmanda

Zitat von: C0mmanda am 20 Januar 2023, 17:07:07
Moin,

vielleicht wurde es bereits irgendwo gefragt, dann habe ich es leider übersehen:

Gibt es die Möglichkeit die Time-Range des Graphen so einzustellen dass ich z.B. immer "Heute von 6-23Uhr" angezeigt bekomme
statt nur die letzten x-Stunden?

Danke!
Gruß

Für alle die es interessiert, ich habe es herausgefunden :)
Man kann für einen Plot "Heute 0:00-24:00Uhr" die Timerange from "now/d" to "now/d" eingeben.
Wenn man nun nur heute 06-23Uhr haben möchte gibt man ein from "now/d+6h" to "now/d-1h" ein.
Geht auch im iFrame, da muss "/" und "+" aber codiert eingegeben werden, also "&from=now%2Fd%2B6h&to=now%2Fd-1h" dann funktioniert es.

Gruß

ch.eick

Zitat von: C0mmanda am 22 Januar 2023, 17:39:52
Für alle die es interessiert, ich habe es herausgefunden :)
Man kann für einen Plot "Heute 0:00-24:00Uhr" die Timerange from "now/d" to "now/d" eingeben.
Wenn man nun nur heute 06-23Uhr haben möchte gibt man ein from "now/d+6h" to "now/d-1h" ein.
Geht auch im iFrame, da muss "/" und "+" aber codiert eingegeben werden, also "&from=now%2Fd%2B6h&to=now%2Fd-1h" dann funktioniert es.

Gruß
Super, das klappt bei mir für den nächsten Tag mit 24h auch, da ich da heute schon die Leistungsprognose für morgen eintrage :-)

Gibt es da auch noch eine Möglichkeit das als "Relative time ranges" mit z.B. Tomorrow selber zu definieren?

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

C0mmanda

Zitat von: ch.eick am 22 Januar 2023, 18:31:09
Gibt es da auch noch eine Möglichkeit das als "Relative time ranges" mit z.B. Tomorrow selber zu definieren?

Ich fürchte ich verstehe noch nicht ganz wie du das meinst, kannst du ein Beispiel nennen?

Gruß

ch.eick

Zitat von: C0mmanda am 23 Januar 2023, 07:09:15
Ich fürchte ich verstehe noch nicht ganz wie du das meinst, kannst du ein Beispiel nennen?
Man hat in den Pull Down Menü ja die Auswahl z.B. für Gestern, Heute und andere Zeiträume. Dort möchte ich dann gerne noch "Morgen" eintragen.
Der Hintergrund ist, das ich den Leistungsforcast fc1 bereits heute dort eintrage, damit der Graph mit dem fc0 von morgen direkt optisch im Vergleich ist.

Manchmal schaue ich mir den auch bereits heute schon an und muss dann halt immer über das Datum gehen.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

andies

Ich habe seit einigen Wochen Probleme mit meinem FHEM und suche die Nadel im Heuhaufen (siehe https://forum.fhem.de/index.php/topic,131164.msg1253589.html#msg1253589). Es gab ein paar Probleme mit MySQL, aber leider dauerten die Schwierigkeiten an, es lag also vermutlich doch nicht an der Engine von MySQL, wie in dem zitierte Beitrag beschrieben. Daraufhin habe ich grafana deinstalliert und seitdem habe ich Ruhe.

Gibt es jemanden, der eine ähnliche Beobachtung gemacht hat? Wichtig: Meine Installation läuft auf einem RPi.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

ch.eick

Zitat von: andies am 23 Januar 2023, 11:08:29
Gibt es jemanden, der eine ähnliche Beobachtung gemacht hat? Wichtig: Meine Installation läuft auf einem RPi.
Hast Du Grafana mal in einem Docker Container ausprobiert?
Ist genug RAM frei?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

andies

Genau RAM ist das Problem. Docker habe ich noch nicht ausprobiert, weil ich eine funktionierende FHEM-Installation habe und gerade nicht vor Ort bin, im worst case schmiert mir das System dann ab.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

ch.eick

Zitat von: andies am 23 Januar 2023, 11:22:33
Genau RAM ist das Problem. Docker habe ich noch nicht ausprobiert, weil ich eine funktionierende FHEM-Installation habe und gerade nicht vor Ort bin, im worst case schmiert mir das System dann ab.
In dem anderen Thread ist es doch auch schon tief analysiert worden. Wenn Linux swapped, ist nicht genug RAM drin. Da hilft dann auch docker nicht weiter.
Kauf den aktuellsten RPI und installier gerne auch im 64 Bit Mode. Dann alles in Docker und die FHEM Komponenten stören sich etwas weniger mit MySQL oder Gradana. Ich habe im FHEM Docker nur sehr wenig, was da noch fehlt.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Thyraz

Ich wollte mal wieder ein neues Gimmick in die Runde werfen:

https://github.com/VolkovLabs/volkovlabs-echarts-panel

Das Plugin bringt die Apache EChart Library in Grafana.
Die ist eigentlich Javascript basierend und ist eine komplette eigene Chartinglösung zum Einbinden in eigene Webseiten.

Das Plugin bringt einen kompletten Code-Editor mit, in dem man beliebiges Javascript packen kann um die Daten vorzuverarbeiten und dann dem Chart zuzuweisen.

Davor setzt man normale Queries im Grafana Teil der Chartkonfiguration, die einem dann im Javascript zur Verfügung steht.

Mit einem einfachen console.log(data) am Anfang im Javascript kann man sich dann die eingehenden Daten in der Browser Console der Entwicklertools anschauen, damit man weiß was man zu tun hat.

Welcher Charttyp wie konfiguriert werden will, und wie man die Daten zuweisen muss findet man in den tausenden Examples hier:
https://echarts.apache.org/examples/en/index.html

Eine Einführung zu den Besonderheiten des ECharts Plugins in Verbindung mit Grafana als Starthilfe findet sich in dem etwas lustigen Video das auf der Github Seite verlinkt ist. ;)

Dinge die damit möglich sind:
- Daten weit einfacher zu "transformieren" als das alles in ein SQL Query packen zu müssen.
  Daher einfachere Querys möglich die einfach den richtigen Zeitraum liefern.
  Filtern, Sortieren, Gruppieren, Min/Max, Berechnungen etc. kann man alles bequemer im Javascript machen

- Man kann Buttons und Dropdowns einbauen und man kann auf Grafana Variablen zugreifen und sie auch beschreiben.
  Das ewig gewünschte (und immer noch nicht in Grafana umgesetzte) Feature eines Dropdowns mit vordefinierten Zeiträumen ist damit z.B. machbar.
  Und man kann auch den Zeitraum des gesamten Dashboards ändern wenn man die Grafana Variablen "to" und "from" umbelegt.
  Dann wird das Dashboard sofort angepasst.

- Etwas verrücktere Charttypen wie z.B. Sankey für Energieverbräuche lassen sich durch das Transformieren der Daten in eine beliebige Javascript-Objektstruktur viel leichter umsetzen. Siehe Screenshot

- Durch das Speichern und Abrufen von Werten in Grafana Variablen, und der Möglichkeit von Callbacks bei Clicks auf einen Grafen sollte es an sich möglich sein über CHarts hinweg zu "kommunizieren".
  Ich erhoffe mir davon z.B. bei einem Balkendiagram einen Tageswert anklicken zu können und dann im Chart darunter Details zu dem aktuell markierten Tag anzeigen zu können.
  Solche Spielchen kann Grafana ja bisher noch gar nicht von Haus aus.

Bin da selber noch ganz am Anfang, das daher nur mal als Anregung sich damit zu beschäftigen. :)
Wenn ich ein paar coole Sachen umgesetzt habe gibt es hier sicher auch ein paar Beispiele inkl. Code.

Du darfst diesen Dateianhang nicht ansehen.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

bertl

Bezüglich der schon äteren Anfrage von 'speedAmaster' poste ich hier mal meine Lösung, da ich leider keine gefunden habe - vielleicht hilft es ja jemanden!
Zitat von: speedAmaster am 09 Oktober 2020, 12:06:342) ich würde gerne (wie bei FHEM-plot) das Zeitfenster wählen wollen (hinein-, heraus-zoomen, links-rechts)
    a) dies geht zwar statt mit iframe mit der normalen URL, dann habe ich aber alle Interaktionsmöglichkeiten - nicht gewünscht - wie kann ich auch nur den TimeRange anzeigen/auswählen?

Kurze Erklärung:
Ich zeige von meiner PV-Anlage die aktuellen Tageswerte mithilfe Grafana an.
Um mir den heutigen, gestrigen, vorgestrigen, ... Tagesverlauf anzuzeigen, verwende ich ein Dummy mit dem ich tageweise blättere (0 = heute, 1 = gestern , 2 = vorgestern, ...).

Dummy zum tageweise blättern:
define Grafana.Zeitraum dummy
attr Grafana.Zeitraum group Plot_WR
attr Grafana.Zeitraum room Buero
attr Grafana.Zeitraum setList up down
attr Grafana.Zeitraum sortby 1
attr Grafana.Zeitraum stateFormat [$name:days:r0]
attr Grafana.Zeitraum webCmd up:down

Grafane iframe-Einbindung mit der Angabe des Zeitraums:
define PV.Tageswerte.Scroll weblink htmlCode {\
  my $days = ReadingsNum( "Grafana.Zeitraum", "days", 0 );;\
  my $begin = time_str2num( strftime( "%Y-%m-%d 00:00:00", localtime( time() - ( 86400 * $days ) ) ) );;\
  my $end = time();;\
  if ( $days > 0 ) {\
    $end = time_str2num( strftime( "%Y-%m-%d 23:59:59", localtime( time() - ( 86400 * $days ) ) ) );;\
  }\
  my $timerange = "from=".($begin*1000)."&to=".($end*1000);;\
  my $url="<hier deine persönliche iframe url von grafana eingeben>&$timerange";;\
  return "<iframe src=$url width=1200 height=600 frameborder=0></iframe>"\
}
attr PV.Tageswerte.Scroll group Plot_WR
attr PV.Tageswerte.Scroll room Buero
attr PV.Tageswerte.Scroll sortby 2

Notify zum Setzen der Dummy-Werte, Abfragen der Grenzen und Aktualisierung der Grafik:
define ntf_Grafana.Zeitraum notify Grafana.Zeitraum:(up|down) {\
  my $val = ReadingsNum( "Grafana.Zeitraum","days",0 );;\
  if ( $EVENT eq "up" ) {\
    $val += 1;;\
  }\
  elsif ( $EVENT eq "down" ) {\
    $val -= 1;;\
  }\
  if ( $val >= 0 and $val <= 31 ) {\
    fhem( "setreading Grafana.Zeitraum days $val" );;\
    map {\
      FW_directNotify("FILTER=room=Buero", "#FHEMWEB:$_", "location.reload('true')", "")\
    } devspec2array("WEB.*");;\
  }\
  else {\
    FW_directNotify( "FILTER=room=Buero", "#FHEMWEB:WEB", "FW_okDialog('Grafana.Zeitraum ($val) is out of range [0 to 31]')", "" );;\
  }\
}
attr ntf_Grafana.Zeitraum group Plot_WR
attr ntf_Grafana.Zeitraum room Buero
attr ntf_Grafana.Zeitraum sortby 3
attr ntf_Grafana.Zeitraum verbose 2

Die Lösung für diesen Ansatz hat 'Otto123' in folgenden Post geliefert - danke dafür!
https://forum.fhem.de/index.php?msg=965763

Schönen Tag
Robert

andies

Zitat von: Thyraz am 10 Mai 2023, 21:35:44Ich wollte mal wieder ein neues Gimmick in die Runde werfen:

https://github.com/VolkovLabs/volkovlabs-echarts-panel
Das sieht sehr interessant aus, zumal meine bisherige Grafana-Lösung einige Schwächen hat (im Raspberry kein senden der Bilder via Telegram möglich, in meiner Synologie kein docker möglich und daher Grafana dort nicht realisierbar, ich habe mich zudem nur schwer mit den queries anfreunden können, keine deutsche Timeline...).

Ich traue mich mal zu fragen, ob ,,jemand" so etwas nicht in 98_SVG.pm implementieren kann? Leider kenne ich mich in Perl nicht gut genug aus und kann überhaupt nicht abschätzen, wie dreist eine solche Frage ist und ob das überhaupt zum Konzept von FHEM passt. Kann sich jemand der Profis mal dazu äußern? Machbar? Viel Arbeit? Nur wenige Zeilen zu verändern? lohnt sich das?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Ich habe versucht eine Art eCharts-Modul zu bauen, und bin bei den ersten Anfängen: https://forum.fhem.de/index.php?topic=137009.0

Allerdings scheint auch Jens (jemu75) in seiner FHEMApp eCharts zu integrieren, eventuell sollte man da auch vorbeischauen: https://forum.fhem.de/index.php?topic=137016.0
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann