ich möchte mich daran machen ein Statistik-Plugin für den LoxBerry zu erstellen. Es gibt/gab ja schon viele Versuche hier im Forum das (mittlerweile leider veraltete) Projekt "Statistiken wie ich sie will" neu aufleben zu lassen, soweit ich das gesehen habe sind aber alle Versuche mehr oder weniger im Sande verlaufen (meist aus Zeitgründen).
Ich möchte das System mögichst modular aufbauen. Erster Vorschlag für ein Grundkonzept:
1. Daten erfassen
Die zu erfassenden Werte sollen per REST Webservice vom Miniserver gepullt werden. Das ist zwar ein gewisser Overhead, aber vermutlich(?) von der SPS unabhängig, sodass es für mich die bevorzugte Variante gegenüber einem Pushen vom Miniserver aus zum LoxBerry ist. Zudem hat es den Vorteil, dass man den Zyklus, wann Werte in die Datenbank geschrieben werden sollen, selbst festlegen kann. Eine SPS-Logik dafür wäre doch recht "teuer" und aufwendig zu programmieren. Jede Änderung eines Analogwertes möchte man mit Sicherheit nicht in der Datenbank haben. Der LoxBerry bietet dazu aktuell die folgenden Möglichkeiten: Minütlich, 3-Minütlich, 5-Minütlich, 10-Minütlich, 15-Minütlich, 30-Minütlich, Stündlich, Täglich, Wöchentlich, Monatlich, Jährlich. ich denke da bleiben keine Wünsche offen.
Als Datenbank würde ich im ersten Schritt MySQL vorsehen (die LoxBerry-eigene MySQL-Datenbank oder eine externe Datenbank). Im zweiten Schritt würde ich gerne noch SQLite hinzufügen, als einfachere Alternative auf Dateibasis (einfacheres Backup, Ändern von Daten, etc.).
2. Grafik-Engine
a) Highcharts
Im ersten Schritt möchte ich Highcharts vorsehen: http://www.highcharts.com/demo Die Diagramme dürften keine Wünsche offen lassen. Highcharts steht unter der Creative Commons (CC) Attribution-NonCommercial licence, darf also ausschließlich nicht-kommerziell eingesetzt werden. Da das Plugin OpenSource sein wird, ist das schon einmal erfüllt. Für alle Privatanwender sollte es ebenfalls kein Problem darstellen. Auch für kommerzielle Anwender sehe ich erst einmal kein problem, solange niemand seine Miniserverstatistiken kommerziell auf seiner Webseite präsentieren möchte.
Die Daten werden bei Highcharts in Echtzeit aus der Datenbank gelesen und die Diagramme per Javascript auf dem Client erzeugt. Man wird sehen ob das von der Performance her ausreicht. Ich sehe da eventuell 2 Probleme: Rapsberry1-Performance (MySQL) und ältere Tablets wie das iPad1 was die Javascript-Performance angeht.
Ich plane eine Art "Chart-Editor" analog des Editors bei FHEM (siehe Screenshot ungefähr auf der Mitte dieser Seite: http://www.meintechblog.de/2013/11/f...visualisieren/), mit dem man sich seine Charts zusammenstellen kann. Diese vorher definierten Charts kann man dann per Browser/App direkt aufrufen.
b) JS-Alternative zu Highcharts: Flot und/oder JqPlots
Nicht so mächtig wie Highcharts, dafür aber komplett OpenSource und durchaus auch ansehnlich: http://www.flotcharts.org/flot/examples/ und http://www.jqplot.com/examples/ Könnte also eine Alternative für alle diejenigen sein, die Highcharts auf Grund der Lizenz nicht einsetzen können/wollen
c) Plot-Tools über Images
Hier wären zu nennen Gnuplot und RRDTools: http://www.gnuplot.info/screenshots/index.html#demos und http://oss.oetiker.ch/rrdtool/ Gnuplot wird aktuell von FHEM verwendet (mittlerweile in einer eigenen Implementierung in Perl) und RRDTool wurde vom projekt "Statistiken wie ich sie will" verwendet. Diese Tools gehen anders vor als die vorher genannten Javascript-Charts: Die Charts werden als statische Image-Datei (z. B. PNG) erzeugt, sind also nicht interaktiv. Sie sehen daher auch nicht so "trendy" und modern aus wie die Javascript-Alternativen sondern bereiten Daten eher wissenschaftlich und schlicht auf - das allerdings äußerst effizient.
Soweit ich es sehe generiert FHEM diese Grafiken auch "Live" auf Anforderung, "Statistiken wie ich sie will" hat die Grafiken zu bestimmen zeitpunkten (nachts, stündlich, etc.) alle erzeugt. Bei der "Live"-Variante könnte es zu deutlichen Verzögerungen beim Betracten kommen (wie sind hier die Erfahrungen mit FHEM?), bei der letzteren Variante dürfte bei vielen Statistiken dem LoxBerry auf älterer Hardware (RaspPi1) schnell die Puste zum Zeitpunkt der Grafik-Erstellung ausgehen und der Speicherplatz wird mit der Zeit deutlich steigen (insbesondere bei vielen Statistiken).
Wie sind Eure Gedanken/Meinungen?
Kommentar