hallo fans...
nachdem ich ein einem anderen thread darauf angesprochen wurde möchte ich euch heute mal zeigen wie bei mir die highcharts (http://www.highcharts.com) in meine openHAB visu eingebunden werden.
es ist eigentlich kein großes ding und es wundert mich schon das die nicht schon zur standart ausstattung gehören, so wie beim dash-ui.
vorraussetzungen:
für die persistens verwende ich mysql hier werden ALLE werte persistiert, bei jeder änderung und jede stunde.
das bewirkt im nachgang das wie JEDEN wert im diagramm darstellen können.
wenn man nur bei jeder änderung persistiert gibt es nicht genug daten zum anzeigen.
als mysql datenbank nutze ich eine xampp installation.
diese bringt php und einen webserver mit welches die zweite vorraussetzung ist.
und natürlich das paket von highcharts welches auf dem xammp webserver läuft.
eine nutzung des webservers von OH wäre hier sicher schicker aber ein externer webserver bietet die möglichkeit die diagramme auch auf der homepage ohne OH drumherum anzuzeigen.
nun hab ich mir ein php-script gebaut welches mit parametern gespeist wird und ein diagramm ausgibt.
das liegt im zusammen mit dem highcharts paket im htdocs ordner vom xampp. im unterordner diagramm.
webserver.png
ich hänge das script hier mal mit an.
es ist sicher noch lange nicht fertig und überarbeitungswürdig, dummer weise funktioniert es aber so gut das ich diese baustelle noch nicht wieder betreten musste.
und wie der murphy sagt.. never change an running system ...
somit brauche ich in der sitemap nur noch einen webview an der stelle wo das diagramm erscheinen soll.
den welche daten angezeigt werden sollen bestimmen die parameter das script sucht sich dann selbsständig die daten aus der datenbank.
sitemap.png
ich habe die parameter hier mal farblich gekennzeichnet.
das ? (fragezeichen) hinter dem diagramm.php weist die übergabe von parametern an.
das & (und zeichen) verbindet die parameter zu einer langen url.
die reihenfolge der parameter ist egal, da die parameternamen ja mit angegeben werden.
praktischer weise kann man es hier so schön darstellen das es übersichtlicher wird.
w1= >> wert 1 gefolgt vom item namen des anzuzeigenden wertes
t1= >> (optional) text der dem wert 1 zugeordnet wird, wenn keiner angegeben wird erscheint der item name
ty1= >> (optional) linientyp, mögliche werte in der highcharts doku, ohne angabe wird ein spline ausgegeben (abgerundete gerunde linie)
days= >> (optional) anzahl der aus der datenbank auszulesenden tage (rückwärts vom aktuellen tag an gesehen) ohne angabe 720 tage
aktuell kann man max 8 werte gleichzeitig in einem diagramm anzeigen.
also w1 bis w8 uns t1 bis t8 und ty1 bis ty8.
man sieht das im script, dass die blöcke einfach nur kopiert wurden also wäre es auch leicht auf 10 oder mehr auszubauen.
mit noch mehr mühe könnte man schleifen aus den blöcken machen und somit die anzahl deutlich erhöhen.
das habe ich aber bis dato noch nicht benötigt.
die height angabe gehört zum webview und legt fest wie hoch das diagramm in der anzeige sein soll.
die highcharts passen sich automatisch dem frame an.
alles weitere seht ihr im script, hier könnt ihr auch die default werte anpassen die verwendet werden sollen wenn die optionalen parameter weg gelassen werden.
hier nun mal das ergebniss aus dem im designer gezeigtem abschnitt
dia2.png
zur bedienug der highcharts gehe ich nicht weiter ein, das ist recht intuitv mehr gibt in der highcharts doku.
auch balken sind hier natürlich möglich...
dia1-balken.png
für jeden eintrag in der DB wird hier ein balken erzeugt, werte die sich nicht ändern und jede stunde persistiert werden bekommen natürlich für jede stunde einen balken.
werte die bei jeder ändeung persistiert werden, bekommen zusätzliche balken.
man kann diese werte aber von den highcharts zusammenfassen lassen und für einen zeitruam den durchschnitt anzeigen.
jedoch hab ich das bisher noch nicht weiter verfolgt.
da das ganze ja nur eine url ist kann man es natürlich auch ohne openhab einfach im browser eingeben um ein diagramm zu sehen.
den namen des items sollte man aber kennen.
browser.png
hier auch schön zu sehen das das automatische gruppieren abgeschaltet ist und jeder wert im diagramm dargestellt wird.
nur damit ist es möglich spitzen auch richtig darzustellen.
evtl könnte man daraus noch einen schalter machen den man mit gibt. denn die anzeige so vieler daten dauert schon ein wenig.
(der ausreisser auf 0 war hier die umstellung auf OH2 hier wurden zwischenzeitlich alle items genullt statt aus der DB geladen)
und natürlich sieht man die diagramme auch in der neuen basic UI
basic-ui.png
als hätte der kai die basic UI an die highcharts angepasst, hier sehen sie aus als wären sie immer schon dabei gewesen....
so ich hoffe mal das ist halbwegs verständlich rüber gekommen.
natürlich sollte man etwas kenntnisse von web programierung haben php und sql schaden nie.
das ganze ist sicher noch ausbaufähig, jedoch reicht es erstmal für meine bedürfnisse daher sehe ich aktuell hier keinen handlungsbedarf.
also bitte keine anfragen in der richtung.
schaut euch die doku zu den highcharts an, da kann man viel raus lesen und experimentieren.
die highcharts sind etwas penibel wenn es um die syntax geht, wenn nicht alles passt, gibt es keine daten im diagramm, und auch keine fehlermeldung.
daher erst mit wenig features anfangen und dann langsam hoch rabeiten.
einen negativen punkt möchte ich noch erwähen.
wenn man die sitemap über den reverseproxy aus der ferne abruft kann man die diagramme nicht sehen.
das liegt zum einen daran das ich in der sitemap aktuell die lokale ip hinterlegt habe.
aber die haupt ursache ist die lokale datenbankverbindung im php script.
man könnte hier die dyn-dns adressen eintragen und die ports der webserver und der datenbank freigeben.
aber im inTRAnet der dinge soll so etwas nicht sein. das sehe ich auch so.
eine elegantere lösung ist eine vpn verbindung, damit klappt das ohne probleme auch aus der ferne.
ok nun viel erfolg beim nachmachen...
diagramm_php.txt diagramm_php.zip
nachdem ich ein einem anderen thread darauf angesprochen wurde möchte ich euch heute mal zeigen wie bei mir die highcharts (http://www.highcharts.com) in meine openHAB visu eingebunden werden.
es ist eigentlich kein großes ding und es wundert mich schon das die nicht schon zur standart ausstattung gehören, so wie beim dash-ui.
vorraussetzungen:
für die persistens verwende ich mysql hier werden ALLE werte persistiert, bei jeder änderung und jede stunde.
das bewirkt im nachgang das wie JEDEN wert im diagramm darstellen können.
wenn man nur bei jeder änderung persistiert gibt es nicht genug daten zum anzeigen.
als mysql datenbank nutze ich eine xampp installation.
diese bringt php und einen webserver mit welches die zweite vorraussetzung ist.
und natürlich das paket von highcharts welches auf dem xammp webserver läuft.
eine nutzung des webservers von OH wäre hier sicher schicker aber ein externer webserver bietet die möglichkeit die diagramme auch auf der homepage ohne OH drumherum anzuzeigen.
nun hab ich mir ein php-script gebaut welches mit parametern gespeist wird und ein diagramm ausgibt.
das liegt im zusammen mit dem highcharts paket im htdocs ordner vom xampp. im unterordner diagramm.
webserver.png
ich hänge das script hier mal mit an.
es ist sicher noch lange nicht fertig und überarbeitungswürdig, dummer weise funktioniert es aber so gut das ich diese baustelle noch nicht wieder betreten musste.
und wie der murphy sagt.. never change an running system ...
somit brauche ich in der sitemap nur noch einen webview an der stelle wo das diagramm erscheinen soll.
den welche daten angezeigt werden sollen bestimmen die parameter das script sucht sich dann selbsständig die daten aus der datenbank.
sitemap.png
ich habe die parameter hier mal farblich gekennzeichnet.
das ? (fragezeichen) hinter dem diagramm.php weist die übergabe von parametern an.
das & (und zeichen) verbindet die parameter zu einer langen url.
die reihenfolge der parameter ist egal, da die parameternamen ja mit angegeben werden.
praktischer weise kann man es hier so schön darstellen das es übersichtlicher wird.
w1= >> wert 1 gefolgt vom item namen des anzuzeigenden wertes
t1= >> (optional) text der dem wert 1 zugeordnet wird, wenn keiner angegeben wird erscheint der item name
ty1= >> (optional) linientyp, mögliche werte in der highcharts doku, ohne angabe wird ein spline ausgegeben (abgerundete gerunde linie)
days= >> (optional) anzahl der aus der datenbank auszulesenden tage (rückwärts vom aktuellen tag an gesehen) ohne angabe 720 tage
aktuell kann man max 8 werte gleichzeitig in einem diagramm anzeigen.
also w1 bis w8 uns t1 bis t8 und ty1 bis ty8.
man sieht das im script, dass die blöcke einfach nur kopiert wurden also wäre es auch leicht auf 10 oder mehr auszubauen.
mit noch mehr mühe könnte man schleifen aus den blöcken machen und somit die anzahl deutlich erhöhen.
das habe ich aber bis dato noch nicht benötigt.
die height angabe gehört zum webview und legt fest wie hoch das diagramm in der anzeige sein soll.
die highcharts passen sich automatisch dem frame an.
alles weitere seht ihr im script, hier könnt ihr auch die default werte anpassen die verwendet werden sollen wenn die optionalen parameter weg gelassen werden.
hier nun mal das ergebniss aus dem im designer gezeigtem abschnitt
dia2.png
zur bedienug der highcharts gehe ich nicht weiter ein, das ist recht intuitv mehr gibt in der highcharts doku.
auch balken sind hier natürlich möglich...
dia1-balken.png
für jeden eintrag in der DB wird hier ein balken erzeugt, werte die sich nicht ändern und jede stunde persistiert werden bekommen natürlich für jede stunde einen balken.
werte die bei jeder ändeung persistiert werden, bekommen zusätzliche balken.
man kann diese werte aber von den highcharts zusammenfassen lassen und für einen zeitruam den durchschnitt anzeigen.
jedoch hab ich das bisher noch nicht weiter verfolgt.
da das ganze ja nur eine url ist kann man es natürlich auch ohne openhab einfach im browser eingeben um ein diagramm zu sehen.
den namen des items sollte man aber kennen.
browser.png
hier auch schön zu sehen das das automatische gruppieren abgeschaltet ist und jeder wert im diagramm dargestellt wird.
nur damit ist es möglich spitzen auch richtig darzustellen.
evtl könnte man daraus noch einen schalter machen den man mit gibt. denn die anzeige so vieler daten dauert schon ein wenig.
(der ausreisser auf 0 war hier die umstellung auf OH2 hier wurden zwischenzeitlich alle items genullt statt aus der DB geladen)
und natürlich sieht man die diagramme auch in der neuen basic UI
basic-ui.png
als hätte der kai die basic UI an die highcharts angepasst, hier sehen sie aus als wären sie immer schon dabei gewesen....
so ich hoffe mal das ist halbwegs verständlich rüber gekommen.
natürlich sollte man etwas kenntnisse von web programierung haben php und sql schaden nie.
das ganze ist sicher noch ausbaufähig, jedoch reicht es erstmal für meine bedürfnisse daher sehe ich aktuell hier keinen handlungsbedarf.
also bitte keine anfragen in der richtung.
schaut euch die doku zu den highcharts an, da kann man viel raus lesen und experimentieren.
die highcharts sind etwas penibel wenn es um die syntax geht, wenn nicht alles passt, gibt es keine daten im diagramm, und auch keine fehlermeldung.
daher erst mit wenig features anfangen und dann langsam hoch rabeiten.
einen negativen punkt möchte ich noch erwähen.
wenn man die sitemap über den reverseproxy aus der ferne abruft kann man die diagramme nicht sehen.
das liegt zum einen daran das ich in der sitemap aktuell die lokale ip hinterlegt habe.
aber die haupt ursache ist die lokale datenbankverbindung im php script.
man könnte hier die dyn-dns adressen eintragen und die ports der webserver und der datenbank freigeben.
aber im inTRAnet der dinge soll so etwas nicht sein. das sehe ich auch so.
eine elegantere lösung ist eine vpn verbindung, damit klappt das ohne probleme auch aus der ferne.
ok nun viel erfolg beim nachmachen...
diagramm_php.txt diagramm_php.zip
Kommentar