CCU-historian Graphen zwischenspeichern

Je nach Komplexität der zu erstellenden Graphen über den CCU-historian vergeht einige Zeit.
Abhängig ist dies von der Auslastung des raspberry pi, der Datenbankgröße, etc.

In meiner Umgebung hat es bei komplexen Aufrufen bis zu 70 Sekunden gedauert.

Damit man nicht so lange warten muss, lasse ich alle 15min die Graphen zwischenspeichern.
Wenn der Graph aufgerufen wird ist dieser ohne Wartezeit angezeigt..

Hierzu habe ich eine CCU-cache Datei im Verzeichnis /opt/ccu-historian erstellt mit folgendem Inhalt:

#!/bin/sh
performcache(){
local url=$2
local name=$1
local now="$(date --rfc-3339=ns)"
echo $now - $name Starting
local start_time=`date +%s`
sudo wget -q -O "/opt/ccu-historian/webapp/cache/temp.png" "$url"
sudo mv /opt/ccu-historian/webapp/cache/temp.png /opt/ccu-historian/webapp/cache/${name}.png
local end_time=`date +%s` now=$(date --rfc-3339=ns)
echo $now - $name End with `expr $end_time - $start_time` sec 
echo "\"${now}\";\"${name}\";\"`expr $end_time - $start_time`\"" >> /opt/ccu-historian/webapp/cache/protokol.csv 
} 
echo Start caching CCU-historian images 
performcache temp_all_last_day "http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1D" 
performcache temp_all_last_week "http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1W" 
performcache temp_aussen_last_week "http://localhost/query/trend.gy?i=22&d=1W" exit

Anschließend muss das Verzeichnis cache unter /opt/ccu-historian/webapp angelegt werden.
Durch den Aufruf

performcache temp_all_last_day "http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1D"

wird der Graph von http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1D heruntergeladen und als temp_all_last_day.png unter /opt/ccu-historian/webapp/cache abgespeichert.
Die Grafik kann dann über http://$ccu-ip-adresse$/cache/temp_all_last_day.png abgerufen werden.
Der Eintrag lässt sich beliebig oft wiederholen.

Zusätzlich wir die Datei protokol.csv erstellt, die über http://$ccu-ip-adresse$/cache/protokol.csv abrufbar ist, welche mit Excel geöffnet werden kann. Diese beinhaltet, wann ein Graph erstellt wurde und wie lange die Erstellung gedauert hat.

Damit die Graphen nun z.B. alle 15min erstellt werden, muss der Aufruf über crontab eingefügt werden:

pi@raspberrypi:/$ sudo crontab -e
folgende Zeile einfügen:
15,30,45,0 * * * * sudo sh /opt/ccu-historian/ccu-cache

Fertig.

Update 2013-01-27:

Obiger Beitrag wurde angepasst. Die Bilder werden wären der Generierung als temp.png abgespeichert. Nachdem Sie geladen wurden, werden Sie umbenannt.

CCU-historian auf einem raspberry pi

Seit einiger Zeit war ich schon auf der Suche nach einer Möglichkeit die Temperaturverläufe der Homematic Sensoren zu protokollieren und grafisch aufzubereiten.

Bei meiner Suche bin ich auf das Projekt ccu-historian gestoßen http://www.ccu-historian.de/

Da als einzige Voraussetzung JAVA 6 benötigt wird, bietet sich der Raspberry pi dafür an:

Installation:

// Update
pi@raspberrypi:/$ sudo apt-get update
// Midnight commander zum Editieren installieren
pi@raspberrypi:/$ sudo apt-get install mc
// Java installieren
pi@raspberrypi:/$ sudo apt-get install openjdk-6-jdk
// Java Installation testen
pi@raspberrypi:/$ java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze1)
OpenJDK Zero VM (build 14.0-b16, mixed mode)
// Aufräumen
pi@raspberrypi:/$ sudo apt-get clean

 CCU Historian runterladen:

pi@raspberrypi:/$ cd /opt
// Ordner anlegen und wechseln
pi@raspberrypi:/$ sudo mkdir ccu-historian
pi@raspberrypi:/$ cd ccu-historian
// Herunterladen
pi@raspberrypi:/$ sudo wget http://www.ccu-historian.de/uploads/CCU-Historian/ccu-historian-0.6.0-bin.zip
// Archiv auspacken
pi@raspberrypi:/$ sudo unzip ccu-historian-0.6.0-bin.zip

Konfigurieren und starten:

pi@raspberrypi:/$ sudo mv ccu-historian-sample.config ccu-historian.config
pi@raspberrypi:/$ sudo mc
// Zur Einstellungsdatei navigieren, das Sample wie in dem CCU-historian Handbuch umbenennen und an die Umgebung anpassen (mit F4).
Ich verwende immer absolute Pfade z.B. /opt/ccu-historian/data anstatt ./data
Den Dienst startet man erstmalig über:
pi@raspberrypi:/$ sudo java -jar /opt/ccu-historian/ccu-historian.jar

CCU Historian Konsole
CCU Historian Konsole

Nachdem der Start des CCU-historian geklappt hat, kann der Dienst über den angegebenen Port per Browser erreicht werden.
Damit beim raspberry pi reboot der Dienst mit gestartet wird, müssen noch folgende Änderungen gemacht werden.
Es muss eine Datei in /etc/init.d angelegt werden mit dem Namen „ccu-historian und folgendem Inhalt:

Download: ccu-historian

#!/bin/bash
### BEGIN INIT INFO
# Provides:          ccu-historian
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop::    $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts ccu-historian
# Description:       starts ccu-historian
### END INIT INFO
(( EUID )) && echo ‘You need to have root priviliges.’ && exit 1
PIDF=/opt/ccu-historian/ccu-historian.pid
CONFF=/opt/ccu-historian/ccu-historian.config
JAVACMD=/usr/bin/java
CCUCMD=/opt/ccu-historian/ccu-historian.jar
RETVAL=0

start() {
echo -n "Starting ccu-historian"
start-stop-daemon --start --pidfile $PIDF --make-pidfile --background  --exec $JAVACMD -- -jar $CCUCMD -config $CONFF
RETVAL=$?
}

stop() {
echo -n "Stopping ccu-historian"
start-stop-daemon --quiet --stop --pidfile $PIDF
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: ccu-historian {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

// Dateirechte anpassen und Skript zum Startup hinzufügen
pi@raspberrypi:/$ sudo chmod 755 /etc/init.d/ccu-historian
pi@raspberrypi:/$ sudo update-rc.d ccu-historian defaults
// Neustarten um die Einstellungen zu testen
pi@raspberrypi:/$ sudo reboot

Performance:

Damit die Graphen schneller erstellt werden, machen folgende Einstellungen Sinn:

// Durch mehr CPU Leistung werden die Graphen bis zu 30% schneller generiert. Den Wert daher am besten auf  Turbo einstellen (1000MHz)
pi@raspberrypi:/ sudo raspi-config 
// Logging deaktivieren. Durch weniger File IOs wird der CCU-historian ein bisschen schneller. Hierzu die Einstellungsdatei wie folgt editieren:
logSystem.consoleLevel=Level.OFF
logSystem.fileLevel=Level.OFF
webServer.logLevel=Level.OFF