NEWS
SQL werte über Flot anzeigen
-
Hallo Ihr,
Ich würde gerne statistikwerte von sql Anfrage über flot als Balkendiagramm darstellen.
Bisher zeige ich diese über das Json Widget tabellarisch an.
Klar kann ich die Werte erst mal in die sql Tabellen schreiben als Messwert und dann wieder ausgeben, ich suche allerdings den direkten Weg den sql resultset direkt in der vis im flot Adapter anzuzeigen.
Wäre klasse wenn ich dem flot die Daten im json Format übergeben könnte
Bin für jeden Tipp dankbar.
Thomas
Gesendet von iPhone mit Tapatalk
-
Du meinst „custom“ Daten und eigene sql queries?! Also nicht Die daten die vom sql Adapter selbst reingeschrieben wurden?!
Gesendet vom Handy …
-
Ja genau, z.B. so einen JSON String:
! [{"Tag":"2018.07.17","Verbrauch":"67.41"},{"Tag":"2018.07.16","Verbrauch":"6799.22"},{"Tag":"2018.07.15","Verbrauch":"4396.59"},{"Tag":"2018.07.14","Verbrauch":"6989.91"},{"Tag":"2018.07.13","Verbrauch":"6816.28"},{"Tag":"2018.07.12","Verbrauch":"6814.00"},{"Tag":"2018.07.11","Verbrauch":"6808.41"},{"Tag":"2018.07.10","Verbrauch":"6709.59"}]
Diese Werte ermittel ich mir direkt im SQL Server über einen Abfrage und erstelle ein JSON String.
Natürlich kann ich damit auch jedes andere Format zurückgeben um es dann in der VIS anzuzeigen.
Eventuell könnte ich auch Daten über einen SQL View bereitstellen?
Ich möchte generell nur die Energiecounter Werte aufzeichnen (kWh) und daraus dann meine Statistiken für Tagesverbrauch, Woche, Monat, eventuell Vergleich zu letzten Jahr etc. durch direkte Datenbankabfrage bilden.
Bisher habe ich dazu im Script den Tageswert ermittelt, dann in ein Objekt geschrieben, dieses aufgezeichnet und das dann wieder in ein Flot zu legen als Balkendiagramm. Aber eigentlich kann ich diese Info ja für die VIS aus dem einem Wert des Energiezählers ableiten und muss mir diese nicht immer erst speichern.
Ich hoffe ich konnte meine Intension klar darstellen
Gruss
Thomas
-
Die Idee gabs schonmal als: sql Adapter erweitern das man neben "iobroker eigenem Datenlogging" noch "sql lesezugriff" machen kann und aus flot heraus eigene queries ansetzen kann. Hier wäre es einfach eine Datenquelle mit gleicher DB-Struktur wie die ioBroker eigene zu haben dann wäre die Queries alle kompatibel.
Inkompatibel müssten es eigene queries sein wo dann die Ergebnisfelder aber klare Namen nach vorgaben haben müssten (SELECT bla as time …).
Alles in allem hat noch keiner bisher den Aufwand gestartet das an allen nötigen Stellen zu erlauben. Vor allem bei Flot muss man es konfigurieren können und es muss sich ggf anders verhalten.
Kannst gern mal Issues anlegen, aber die Umsetzung ist so eine Sache.
Die Alternative wäre Datenduplizierung: regelmäßig neue Werte aus der einen DB auslesen und in einen ioBroker-State schreiben der Historisiert ist und dann per Flot angezeigt wird
-
das mit dem erzeugen eines historian Wertes und das überschreiben der Werte mittels SQL habe ich auch schon überlegt.
Eventuell mache ich das wenn es keinen anderen Weg gibt.
-
Wir nehmen gern Pluu-Requests an