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

RoBra81

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

devil77

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

Thyraz

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.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

RoBra81

Zitat 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. ;)

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

Thyraz

Hätt ich mal nicht nur den Namen der Funktion, sondern auch die Doku dazu gelesen.  ;D

Dann stimmt es natürlich.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

MCh76

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

slawekking

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


LordVoodoo

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:


  • Proplanta ist eingerichtet
  • DbLog schreibt die Prognosewerte mit für Temperatur wäre dies "fc._temp[0-9]{2}"

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".

devil77

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?


Thyraz

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.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

LordVoodoo

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

devil77

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.

jostereo

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.

devil77

Dachte ich auch aber überall (Docker / Synology) ist UTC gleich eingestellt.

SabineT

Die Endzeit '2018-11-12T11:10:08Z' ist auch 11:10 GMT (das Z am Ende steht da für Zero bzw. Zulu).