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.

4 Gedanken zu „CCU-historian Graphen zwischenspeichern“

  1. Danke für das Script.
    Es fehlen in Zeile 10 die Anführungszeichen $(date –rfc-3339=ns) –> „$(date –rfc-3339=ns)“

    Nach Anpassung funktioniert alles einwandfrei.

    Gruß, Marco

  2. Leider bekomme ich die Fehlermeldung, dass die png Datei nicht angezeigt werden kann weil sie Fehler enthält

    Woran kann das liegen?

  3. Hallo Daniel, leider ist deine Fehlerbeschreibung sehr ungenau.
    Wo bekommst du denn die Fehlermeldung? Im Browser, unter Windows, auf deinem Handy, Tablet?
    Wenn du dir das zwischengespeicherte Bild auf deinen Computer kopierst, kannst du es denn dort anzeigen?
    Was erhälst du, wenn du das „Bild“ mit einem Texteditor aufmachst?

  4. Perfekt, danke. Habe ich bei mir eingebaut und funktioniert ohne Problem. Dein Blog ist echt lesenswert wenn man sich mit dem Raspi und der Homematic beschäftigt 🙂

    Freue mich schon mehr davon zu sehen oder hören

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.