HomeMatic - CCU-Historian

Status
Für weitere Antworten geschlossen.

Dragonfly

Benutzer
Mitglied seit
27. Jan 2012
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Erstmal ein Hallo an alle - besonders an die Bekannten aus dem FHZ-Forum :) .

Ich möchte hier wieder einmal das leidige Thema HomeMatic aufgreifen.
Wie ihr wisst gibt es ein Programm - CCU-Historian - welches Schaltzustände aus der HM-Zentrale (der CCU) ausliest und speichert.

CCU-Historian benötigt Java und es muß lediglich die "ccu-historian.jar" gestartet werden.

Ich möchte, nachdem alles läuft hier eine genauere Beschreibung für ander HM-User einstellen, doch zuerst brauche ich noch etwas Hilfe von den Profis hier.

Java und die "ccu-historian.jar" starten sollte kein Problem sein - doch nach einem Restart der DS müßte man die .jar wieder händisch starten. Das ganze mit Autostart wird einige abschrecken - den bei Updates von CCU-Historian sollte die .jar wieder angehalten werden, und nicht jeder kennt sich mit putty und co aus.

Die Idee wäre ein Paket fürs Pakete-Zentrum zu erstellen, welches - einfach nur die "ccu-historian.jar" startet oder stoppt.
Der Pfad zu CCU-Historian wird bei jedem anders sein (volume01/CCU-Historian, volume02/ccu, ...)
Das Paket sollte nach Neustart der DS und einem DSM-Update die "ccu-historian.jar" laufen lassen - erst durch drücken von "Stopp" die .jar anhalten.


Freue mich über jede Hilfe und alle Tips - Danke schonmal!

LG Tom
 

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Moin

Vielleicht sollten wir den Jungs hier ein paar mehr Informationen zu kommen lassen.
Beim Homematic System handelt es sich um eine Hausautomation von ELV. Mal kurz ein Blick hierreinwerfen, dann weiß man worüber wir hier reden. Das Herzstück dieses Systems ist eine kleine Linuxkiste die wie ein Haus aussieht. Über ein Webinterface können alle Teilnehmer (Sensoren, Empfänger etc) verwaltet werden, man kann eigene Programme erstellen, Scripte ausführen etc.)

Was uns schon immer gefehlt hat ist eine Möglichkeit Trends von Temperaturen, oder was auch immer, zu erstellen. Seit paar Monaten gibt es eine Möglichkeit genaus das zu tun, ohne viel Geld in die Hand zu nehmen. Auf dieser Seite wird ein Java Projekt vorgestellt, welches hervorragend auf dem PC läuft, Windows oder Linux. Was jetzt kommt scheint wohl klar zu sein. Das Teil muß auf die Synology Kiste, weil die eh und je durchläuft. (Jedenfalls meine DS1010+)

Als erstes muß nun Java auf der DS installiert werden. Ich hatte das per Hand erledigt und es lief. Mittlerweile gibt es auch eine saubere Art und Weise Java auf der DS zu installieren. Man schaut auf diese Webseite und geht nach deren Anleitung vor, sucht sich das richtige Java Paket für sein Synology Modell heraus und installiert das Ding.

Dann kopiert man das vorhergetestete CCU-Historian Verzeichnis auf seine DS Kiste. (Die Einstellungen des Configurationsfiles sollte besser in einer anderen Umgebung getestet werden.) und startet das Programm aus einer Telnet Session herraus, nachdem man vorher in das CCU Verzeichnis gewechselt ist.

Rich (BBCode):
java -jar ccu-historian.jar

Man beobachtet zunächst die Bildschirmausgaben und kann schnell erkennen, ob das Programm ordnungsgemäß läuft. Wenn es denn läuft sieht das dann ungefähr so aus:

Rich (BBCode):
18:36:02|INFO   |Starting CCU-Historian V0.4.0
18:36:02|INFO   |by MDZ (mdz@quantentunnel.de)
18:36:02|INFO   |Connecting to database
18:36:02|INFO   |Starting database web server
18:36:02|INFO   |Starting database PG server
18:36:02|INFO   |PG ODBC driver port: 5435
18:36:02|INFO   |Connecting to CCU
18:36:02|INFO   |Starting RPC server on port 2010
18:36:03|INFO   |Creating RPC client for http://192.168.x.xx:2000 with name BidCos-Wired
18:36:03|INFO   |Creating RPC client for http://192.168.x.xx:2001 with name BidCos-RF
18:36:09|INFO   |Creating RPC client for http://192.168.x.xx:2002 with name System
18:36:09|INFO   |Creating HM script client for http://192.168.x.xx:8181/tclrega.exe
18:36:09|INFO   |Starting historian
18:36:09|INFO   |Starting web server
18:36:13|INFO   |Web server port: 8080
18:36:18|INFO   |Historian: Updating device data point BidCos-RF.HEQxxxxxxxx:0.RSSI_DEVICE
18:36:18|INFO   |Historian: Updating device data point BidCos-RF.HEQxxxxxxxx:0.RSSI_PEER
:
:
Das erste Mal dauert alles wenig länger, weil erst eine datenbank angelegt wird.
Nach einer Weile kann man schon testen, ob der Webserver erreichbar ist:

http://192.168.Y.YYY:8080/historian/index.html, wobei http://192.168.Y.YYY die Adresse der DS ist.

Wenn alles klappt sieht man die Historian Webseite
HomeMatic.jpg
und kann sich Trends selber zusammen klicken, die dann so aussehen (Beispiel Außentemperatur und Luftfeuchte von gestern)
(Anhang 2)Trend.jpg


Tja und jetzt kommen wir zu einem Punkt, wo ich auch nicht mehr weiter weiß.

Wenn CCU Historian über die Telnet Session gestartet wird dann beendet sich das java Programm nach ca 15 Minuten von selbst.

Es müßte also jemand ein StartUp Script schreiben, welches das CCU Programm nicht über telnet startet sondern
so wie bei Windows über eine Art Autostart. Das habe ich leider nicht hinbekommen.
Im Moment melde ich mich mit telnet an und starte das CCU-Historian mit folgendem Befehl:

nohup java -jar ccu-historian.jar

Damit beendet sich Java nicht selbst und schreibt alle Bildschirmausgaben in eine Datei namens nohup.out. Das Telnet Fenster kann man getrost zumachen. Das läuft bei mir seit ca 2 Monaten ohne Probleme, ist aber nicht die feine englische Art. Da gibt es bestimmt bessere Lösungen. Meine Linuxkenntnisse sind nicht erwähnenswert und bin deshalb schon mehrmals an dieser Aufgabe verzweifelt.

Mittlerweile gibt es eine Anleitung wie man das CCU-Historian auf einer QNAPKiste zum Laufen bringt. Diese Lösung kann man aber nicht auf eine Synolgy Kiste bringen, jedenfalls nicht 1:1.

Wäre nett, wenn uns jemand bei der Lösung dieses Problems unterstützen könnte.

LG Rudi

Vielleicht kan ein admin mal das Topic rüber in die 3rd party Anwendungen verschieben, wo es eigentlich hingehört
 
Zuletzt bearbeitet:

Dragonfly

Benutzer
Mitglied seit
27. Jan 2012
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Ok, Autostart funktioniert dann doch nicht so einfach...

Kann man folgendes Script verwenden?

#!/bin/sh
# Autostart Shell für Luadch
#
# Anleitung:
# - Das Script muss in folgendes Verzeichnis kopiert werden: '/opt/etc/init.d'
# - Der Dateinamen muss mit 'SXX' anfangen, wobei das 'XX' für eine zweistellige Zahl steht.
# - Beispiel: 'S99_Luadch_Autostart.sh'
# - Es benötigt folgende Rechte: '755'

# Hier den Pfad zur Hubsoftware angeben
PATH="/Luadch"

# Ab hier nichts mehr ändern!
cd $PATH
case $1 in
start)
./luadch
;;
stop)
killall luadch
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac


Geändert für CCU-Historian:

#!/bin/sh
# Autostart Shell für CCU-Historian
#
# Anleitung:
# - Das Script muss in folgendes Verzeichnis kopiert werden: '/opt/etc/init.d'
# - Der Dateinamen muss mit 'SXX' anfangen, wobei das 'XX' für eine zweistellige Zahl steht.
# - Beispiel: 'S99_CCU-Historian.sh'
# - Es benötigt folgende Rechte: '755'

# Hier den Pfad zur Hubsoftware angeben
PATH="/volume2/CCU-Historian"

# Ab hier nichts mehr ändern!
cd $PATH
case $1 in
start)
./java -jar ccu-historian.jar
;;
stop)
killall java -jar ccu-historian.jar
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac

Der Befehl für´s beenden wird warscheinlich nicht richtig sein - sollte nicht auch eine Abfrage rein, ob die "ccu-historian.jar" vorhanden ist?

Kommt schon Leute!

LG Tom
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
liegt denn java auch in dem Verzeichnis /volume2/CCU-Historian? Wenn nicht bitte den kompletten Pfad zu java angeben.

Gruß Götz
 

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Hallo Goetz
Das Java Hauptprogramm habe ich ja über das Paketcenter installiert. Wo genau das installiert wurde kann ich nicht sagen.
Alle CCU Dateien liegen bei mir jedenfalls auf Volume5/CCU. Das kann man aber auch woanders hinlegen. Da liegt sowohl das Java Programm als auch die Datenbank für die Logs und der Webserver der auf Port 8080 hört.

LG Rudi
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
gib mal auf der Kommandozeile
which java
ein, dann hast Du den Pfad zu java.

Gruß Götz
 

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Java liegt auf
/volume3/@appstore/java6/jre/bin/java
Wobei ich bei der Installation nur volume3 angeben musste.
LG Rudi
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
dann sollte das
Rich (BBCode):
/volume3/@appstore/java6/jre/bin/java -jar ./ccu-historian.jar
heißen.

Gruß Götz
 

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Hi Goetz

Komme gerade nicht mit. Beziehst Du Dich oben auf das Script von Dragonfly? Oder was meinst Du mit sollte das heißen?
:)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
ja, das bezieht sich auf das Script, arauf hab ich ja auch direkt geantwortet.

Gruß Götz
 

Dragonfly

Benutzer
Mitglied seit
27. Jan 2012
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Danke schonmal! :)

Dann würde das inkl. Variablen jetzt so aussehen:

Rich (BBCode):
#!/bin/sh
# Autostart Shell für CCU-Historian
#
# Anleitung:
# - Das Script muss in folgendes Verzeichnis kopiert werden: '/opt/etc/init.d'
# - Der Dateinamen muss mit 'SXX' anfangen, wobei das 'XX' für eine zweistellige Zahl steht.
# - Beispiel: 'S99_CCU-Historian.sh'
# - Es benötigt folgende Rechte: '755'

# Hier den Pfad zu CCU-Historian angeben
  PATH1="/volume2/CCU-Historian"

# Hier den Pfad zu Java angeben
  PATH2="/volume3/@appstore/java6/jre/bin"

# Ab hier nichts mehr ändern!
  cd $PATH1
  case $1 in
  start)
  $PATH2/java -jar ./ccu-historian.jar
  ;;
  stop)
  killall $PATH2/java -jar ./ccu-historian.jar
  ;;
  *)
  echo "Usage: $0 [start|stop]"
  ;;
  esac


Ist killall denn richtig?
Soll nicht eine Rückfrage rein, ob die "ccu-historian.jar" vorhanden ist - wenn ja - wie?
Kann ja sein, daß einer mal versehentlich die .jar löscht und dann hängt die DS, weil sie nix findet?!

LG Tom
 
Zuletzt bearbeitet:

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Ah ja. Im Script steht das muss ins Verzeichnis /opt rein. Opt ist sicher optware das ich noch nicht installiert habe. Also muss ich das wohl zuerst installieren. Ich versuche mich mal durchzuboxen. Vielleicht probiere ich das ganze erstmal auf meiner cs407 um nicht das produktivsystem zu versauen, welches ich gerade erst wieder zum Läufen bekommen habe. :cool:
Vielleicht Dagenfly etwas schneller als ich.
Danke erstmal
Rudi
 

KilamMalik

Benutzer
Mitglied seit
18. Jul 2010
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Dragonfly,

ich schreibe mal hier die Anwort vom Homematic Thread (http://fhz-forum.de/viewtopic.php?f=26&t=6021&start=208#p57297), Du hast ja eh hierher verwiesen und das scheint mir der geeignetere Ort :)

Der Link auf das Paket von pcloadletter wäre eigentlich super, aber die unterstützen nur Intel und Marvell Kirkwood CPUs. Hier ist die Liste der Synology NAS mit CPUs: http://www.synology-wiki.de/index.php/Welchen_Prozessortyp_besitzt_mein_System?. Da ich die 209+II besitze, habe ich eine Freecom PPC CPU und hier steht, dass das nicht geht: http://pcloadletter.co.uk/2011/08/23/java-package-for-synology/

Ich hatte schon von Hand versucht das Java SE 6 für PPC zu installieren, aber dann kommt eben der Fehler, dass GLIBC 2.4 nicht vorhanden ist. Das DSM hat zumindest bis zur 3.2 nur GLIBC 2.3 dabei. Ob es die DSM 4.0 drin hat weiß ich nicht, man kann ja mal hoffen...

Ansonsten gibts hier zwar einen Tipp, was man tun kann, aber da ich unter Linux noch nichts entwickelt habe, sagt mir das relativ wenig, vielleicht kann mir jemand etwas dazu sagen, wie ich weiterkomme: http://www.synology-forum.de/showthread.html?25146-GLIBC-2.4-fuer-Java-SE


Zu Deiner Frage wg. killall oben -> killall löscht den Prozess, der genau so heißt inkl. parametern. D.h., wenn ccu-historian nicht läuft, dann passiert auch nichts. Es muss also meines Erachtens keine Abfrage rein, ob der Prozess läuft. Hat die Synology eigentlich einen eingeschränkten Kommandozeilen Befehlssatz? Kill scheint gar keine Parameter zu haben, sonst könntest kill -r machen und dann eine regexpression angeben. Dann wärst du unabhängig vom Pfad von java oder der jar.

Grüße,
Frank.
 

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Hallo KilamMalik

Mittlerweile habe ich ja das Javapaket von pcloadletter installiert.
Aber vorher hatte ich mir das entsprechende Javapaket von Sun runtergeladen (jre-6u30-linux-i586.bin) und alles mit der Hand in ein Verzeichnis meiner Wahl installiert. Das geht auch. Dann war eigentlich nur noch in der /etc/profile die entsprechenden Pfade anzupassen und dann lief java. Ja, ich habe einen Intel Prozessor in meiner DS1010+ drin. Das hilft schon mal enorm. ;)
LG Rudi
 

KilamMalik

Benutzer
Mitglied seit
18. Jul 2010
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hi Rudi,

Pcloadletter gibts kein Paket fuer meinen ppc prozessor. Deswegen hatte ich auch das sun paket versucht, aber dann bekam ich den fehler, dass glibc 2.4 nicht vorhanden ist. Gibts auch mehrere Forenbeitraege zu dem Thema, dass dsm nur glibc 2.3 hat. Leider auch dsm 4.0 :-(

Deswegen interessiert mich das jetzt auch besonders, wie das java Paket von Sun bei Dir funktioniert? Musstest Du was besonderes machen wg. Der glibc?

Gruesse,
Frank.
 

KilamMalik

Benutzer
Mitglied seit
18. Jul 2010
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hi,

habe jetzt eine Lösung gefunden, wie man Java auf einer DS209+II zum Laufen bekommt. Hier die Anleitung dazu:

http://www.hera.cc/2010/11/installer-java-sur-nas-synology-ds210/

Da Java die glibc 2.4 vorraussetzt, aber Synology nur 2.3 drin hat, wird dort ein komplettes Debian mit Java und glibc 2.4 zum download angeboten. Das entpackt man auf dem NAS und kann dann mit dem Befehl chroot in das OS wechseln und Java von dort starten.

Habe zwar noch Probleme mit der Performance, aber ich denke, das liegt eher an dem Programm, das ich ausführen möchte.

Grüße,
Frank.
 

CS407Rudi

Benutzer
Mitglied seit
20. Dez 2008
Beiträge
171
Punkte für Reaktionen
6
Punkte
24
Hallo KilamMalik
Ich hatte die Installation auf meiner DS1010+ so gemacht wie es auf pcloadletter beschrieben war. Bei Oracle registriert und die Java SE Version heruntergeladen. Das glibc Paket habe ich mit in den Installationsordner gelegt wie angegeben. Die Installation lief ohne Probleme. Ob das glibc Paket bei der Installation benutzt wurde kann ich nicht sagen.
Java läuft. Homematic CCU auch. Dragonfly, hast du schon etwas mit dem Startup Script versucht?

LG Rudi
 

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich hab es mal auf einer DS209 versucht. Es klappt auch mit dem starten bei diesem Script :

#!/bin/sh
# Autostart Shell für CCU-Historian
#
# Anleitung:
# - Das Script muss in folgendes Verzeichnis kopiert werden: '/opt/etc/init.d'
# - Der Dateinamen muss mit 'SXX' anfangen, wobei das 'XX' für eine zweistellige Zahl steht.
# - Beispiel: 'S99_CCU-Historian.sh'
# - Es benötigt folgende Rechte: '755'

# Hier den Pfad zu CCU-Historian angeben
PATH1="/volume2/CCU-Historian"

# Hier den Pfad zu Java angeben
PATH2="/volume3/@appstore/java6/jre/bin"

# Ab hier nichts mehr ändern!
cd $PATH1
case $1 in
start)
$PATH2/java -jar ./ccu-historian.jar
;;
stop)
killall $PATH2/java -jar ./ccu-historian.jar
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac

Allerdings beim beenden des Telnet wird java auch beendet.

Dann habe ich es mit :

$PATH2/java -jar ./ccu-historian.jar &

versucht. Leider wird auch da Java beendet beim schlissen von Telnet (Putty).

Hab ich da ein denkfehler ?
 

Dragonfly

Benutzer
Mitglied seit
27. Jan 2012
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Kann man ein Java-Script via Crontab starten?

So, habe endlich wieder Zeit für HomeMatic und die DS...

Ist es nicht möglich das Script via Crontab zu starten:
Rich (BBCode):
@reboot root ./volume3/@appstore/java6/jre/bin/java -jar ./volume2/CCU-Historian/ccu-historian.jar

bzw.:
wenn ich diesen Crontab hinzufüge und er geht nicht - startet dann die DS normal oder kann ich damit das DSM abschießen?

Vielen dank für eure Hilfe - Tom
 

Rookman

Benutzer
Mitglied seit
04. Mrz 2011
Beiträge
42
Punkte für Reaktionen
2
Punkte
8
Hallo zusammen,

da es hier noch zu keiner richtig funktionierenden Lösung gekommen ist, habe ich mich mal versucht :)

Ich habe den ccu-Historian auf meiner DS211 wie folgt zum Laufen bekommen:

1. Auf der DS muss Java installiert werden. Ich habe das über das Paketzentrum der DS erledigt, indem ich die Quelle http://pcloadletter.comlu.com hinzugefügt habe. Leider kann man Java nicht direkt installieren weil das Paketzentrum die Lizenz auf Oracle nicht automatisch bestätigen kann. Ihr müsst also die richtige Java-Version unter http://tinyurl.com/java7u4embed downloaden und manuell auf die DS unter "/volume1/public" kopieren, danach kann Java über das Paketzentrum installiert werden.

2. Ich habe das ccu-historian Verzeichnis unter „/opt/etc/ccu-historian“ abgelegt es kann natürlich auch woanders liegen nur solltet Ihr auf Leerzeichen im Verzeichnisnamen verzichten.
Da ich auf meiner DS211 auch IPKG installiert habe, lege ich das Start-Script unter „/opt/etc/indt.d/“ ab, so wird es bei jedem Start der DS ausgeführt.

Hier noch mein Start-Script:
S99_ccu-historian.sh
Rich (BBCode):
#!/bin/sh
# S99_ccu-historian.sh start / stop Script Synology DS
# By Rookman 26.05.2012

# Path Variablen
PATH_PROG="/opt/etc/ccu-historian"
PATH_JAVA="/volume1/@appstore/java7/jre/bin"

####

cd $PATH_PROG

start() {
VAR_PS1=$(ps | grep java | grep -v grep | wc -l)
if [ $VAR_PS1 -eq 0 ]
then
nohup $PATH_JAVA/java -jar ccu-historian.jar 2>/dev/null &
echo "*** ccu-historian wurde gestartet ***"
else
echo "*** ccu-historian laeuft schon ***"
fi 
}

stop() {
VAR_PS2=$(ps | grep java | grep -v grep | wc -l)
if [ $VAR_PS2 -eq 0 ]
then
echo "*** ccu-historian ist schon beendet ***"
else
/opt/bin/killall java 2>/dev/null
sleep 1
VAR_PS3=$(ps | grep java | grep -v grep | wc -l)
    if [ $VAR_PS3 -eq 0 ]
    then
    echo "*** ccu-historian wurde erfolgreich beendet ***"
    else
    sleep 1
    stop
    fi
fi
}

####

case $1 in
start)
    start
;;
stop)
    stop
;;
restart)
    stop
    sleep 1
    start
;;    
*)
echo "Usage: $0 [start|stop|restart]"
;;
esac

Ich hoffe Ihr seht mir die etwas durch die Nase in die Brust Programmierung nach, es geht bestimmt auch einfacher, aber ich habe es nur so hinbekommen:)

Gruß Rookman
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat