Skip to content

Tipps & Tricks

mdzio edited this page May 15, 2022 · 26 revisions

Tipps & Tricks

Inhaltsverzeichnis

Allgemeine Tipps & Tricks

Behebung von Fehlermeldungen

Die Fehlermeldung "Exception: Address already in use" erscheint nach der Meldung "Starting web server"

Dieser Fehlermeldung erscheint, wenn bereits eine andere Applikation (z.B. ein anderer Web-Server) den Netzwerk-Port (z.B. 80) des CCU-Historians in Besitz genommen hat. Entweder muss der andere Web-Server gestoppt werden, oder es muss eine anderere Port-Nummer für den CCU-Historian konfiguriert werden. Dies erfolgt mit der Konfigurationsoption webServer.port. Die Web-Seiten des CCU-Historians müssen dann natürlich unter Angabe des geänderten Ports aufgerufen werden: z.B. http://localhost:81 für webServer.port=81

Nach dem allerersten Start des CCU-Historians werden keine Gerätedatenpunkte aufgelistet

Ein bisher unbekannter Datenpunkt von einem Gerät wird erst dann in das Archiv aufgenommen, wenn eine zugehörige Werteänderung von der CCU übertragen wird. Bei vielen Sensoren kann dies etliche Minuten dauern, und bei Handsendern und Tastern muss erst eine Taste betätigt werden. Aktoren müssen auch erst eine Statusmeldung an die CCU schicken oder manuell betätigt werden.

Wertänderungen von Gerätedatenpunkte werden nicht aufgezeichnet

Der CCU-Historian muss der CCU die eigene IP-Adresse mitteilen, damit die CCU Wertänderungen an den CCU-Historian schicken kann. Die Ermittlung der eigenen IP-Adresse funktioniert je nach eingesetzter Java VM oder eingesetztem Betriebssystem unter Umständen nicht. Dies wurde z.B. unter Ubuntu oder verschiedenen Java VMs für Embedded-Systeme (z.B. NAS) berichtet.

In diesem Fall muss in der Konfigurationsdatei die IP-Adresse des CCU-Historian-Rechners manuell angegeben werden:

devices.historianAddress='IP-Adresse'
webServer.historianAddress='IP-Adresse'

Eine andere Ursache kann eine Firewall auf dem CCU-Historian-Rechner sein, die die Ports 2099 und 2098 (Standardeinstellung) für ankommende Verbindungen blockiert (s.a. Handbuch).

Gerätedatenpunkte werden nur mit der Seriennummer und nicht mit dem Kanalnamen aufgelistet

Die Kanalnamen werden in der Standardkonfiguration nur stündlich aktualisiert (s.a. Konfigurationsoption historian.metaCycle).

Regelmäßig erscheint die Warnung "Timeout on interface ???: reinitializing callback"

Diese Meldung erscheint immer dann, wenn die CCU lange Zeit (s.a. Konfigurationsoption devices.device1.reinitTimeout) keine Werteänderung geschickt hat. Nur so kann z.B. ein Reboot der CCU erkannt werden, und der CCU-Historian baut die Verbindung daraufhin erneut auf. Wenn wenig Sensoren an der CCU angeschlossen sind können die voreingestellten 120 Sekunden z.B. auf 600 Sekunden gesetzt werden.

Wie kann ein nicht mehr verwendeter Datenpunkt aus der Datenbank gelöscht werden?

Der CCU-Historian bietet die Web-Seite "Werkzeuge" an. Dort gibt es eine entsprechende Funktion.

Wie können die Daten bei einem Gerätewechsel übertragen werden?

Der CCU-Historian bietet die Web-Seite "Werkzeuge" an. Dort gibt es eine entsprechende Funktion.

Die Fehlermeldung "Exception: Can't access configuration file ccu-historian.config" erscheint direkt nach dem Start

Diese Fehlermeldung kann zwei Ursachen haben:

  • Die Datei ccu-historian.config liegt nicht im selben Verzeichnis wie die Datei ccu-historian.jar.
  • Das Arbeitsverzeichnis ist falsch eingestellt.

Im ersten Fall kann mit der Kommandozeilenoption -config der Pfad zur Konfigurationsdatei angepasst werden kann.

Im zweiten Fall hilft die Kommandozeilenoption -config nicht. Das Arbeitsverzeichnis ist deshalb so wichtig, da in der Standardkonfiguration folgende Optionen relativ zum Arbeitsverzeichnis gesetzt werden (erkennbar an den Zeichen ./ am Anfang):

logSystem.fileName='./ccu-historian-%g.log'
database.dir='./data'
webServer.dir='./webapp'
base.scriptDir='.'

Entweder muss ein absoluter Pfad in diesen Optionen verwendet werden. Wenn z.B. der CCU-Historian im Verzeichnis /a/b/c installiert wurde, müssen die Optionen wie folgt gesetzt werden:

logSystem.fileName='/a/b/c/ccu-historian-%g.log'
database.dir='/a/b/c/data'
webServer.dir='/a/b/c/webapp'
base.scriptDir='/a/b/c'

Oder es muss das Arbeitsverzeichnis vorher korrekt eingestellt werden. Dies geschieht mit einem cd (change directory) Befehl vor dem eigentlichen Start des CCU-Historians:

cd /a/b/c
java -jar ccu-historian.jar

Die Zeitstempel von Gerätedatenpunkten sind um eine konstante Zeitspanne verschoben

Dies kann unter Umstände daran liegen, dass die verwendete Java-VM nicht die richtige Zeitzone verwendet. Beim Start des CCU-Historians von der Kommandozeile aus, kann über die Option -Duser.timezone=Europe/Berlin eine Zeitzone erzwungen werden. Der Aufruf sieht dann wie folgt aus: java -Duser.timezone=Europe/Berlin -jar ccu-historian.jar

Das wöchentliche Backup wird am Sonntag, 00:00 Uhr anstatt am Montag, 00:00 Uhr erstellt

Wahrscheinlich erkennt die eingesetzte Java VM die lokale Region (Deutschland) nicht richtig. In z.B. den USA fängt die Woche am Sonntag an.

Über Kommandozeilenparameter kann die richtige Region der VM mitgeteilt werden: -Duser.language=de -Duser.country=DE

Automatische Aktualisierung des angezeigten Trends

Wenn der angezeigte Trend automatisch aktualisiert werden soll (z.B. alle 5 Minuten), muss in der Datei webapp/historian/trend.gy folgender Abschnitt um die Zeile meta 'http-equiv':'refresh', content:300 ergänzt werden:

Zu ändernder Abschnitt:

renderer.head={
	title 'CCU-historian: Trend'
}

Der geänderte Abschnitt sieht dann wie folgt aus:

renderer.head={
	title 'CCU-historian: Trend'
	meta 'http-equiv':'refresh', content:300
}

Die Zahl hinter content gibt dabei die Zeitspanne in Sekunden an. Die Änderung kann im laufenden Betrieb vorgenommen werden. Die Änderung muss nach jedem Update des CCU-Historians erneut durchgeführt werden.

Passwort der Web-UI löschen

Der CCU-Historian darf nicht gestartet sein. Mit cd in das Verzeichnis des CCU-Historians wechseln, dort wo sich auch die Datei tool (Linux) bzw. tool.cmd (Windows) befindet. Falls die Datei tool unter Linux als nicht ausführbar markiert ist, muss dies noch mit chmod 775 tool abgeändert werden. Dann muss folgendes Kommando ausgeführt werden. Es muss unter dem selben Benutzer ausgeführt werden, unter dem auch der CCU-Historian läuft:

Windows:

tool -e "java.util.prefs.Preferences.userRoot().node('mdz/ccuhistorian/webpages').put('password_admin', '')"

Linux:

./tool -e "java.util.prefs.Preferences.userRoot().node('mdz/ccuhistorian/webpages').put('password_admin', '')"

Gemeinsame Skalen für Datenpunkte

Die Trend-Anzeige benutzt eine gemeinsame Skala für mehrere Datenpunkte genau dann, wenn Datenpunkt-Minimum, -Maximum und -Einheit gleich sind. Die Informationen werden in der Detail-Ansicht zum Datenpunkt angezeigt. Sie werden aus der CCU ausgelesen.

Die Informationen können aber nachträglich für Geräte-Datenpunkte angepasst werden:

  1. Backup der Datenbank erstellen: Den CCU-Historian stoppen, data Verzeichnis sichern, den CCU-Historian wieder starten.
  2. Historian-ID des Datenpunktes ermitteln. Sie wird auch in der Detail-Ansicht angezeigt.
  3. Die Web-Bedienschnittstelle der Datenbank öffnen (s.a. Handbuch).
  4. Folgenden SQL-Ausdruck ausführen: UPDATE DATA_POINTS SET MAXIMUM=Zahl1, MINIMUM=Zahl2, UNIT='Einheit' WHERE DP_ID=Historian-ID
    (Zahl1 und Zahl2 durch das gewünschte Minimum und Maximum ersetzen. Die Einheit muss mit einfachen Hochkommas ' umschlossen werden.)

Bei Systemvariablen können diese Informationen über die CCU Web-GUI unter EinstellungenSystemvariablen geändert werden.

Wiederherstellung einer defekten Datenbank

Durch einen Hardware-Defekt oder ungeordnetem Beenden des CCU-Historian-Prozesses kann die Datenbank beschädigt werden. Beim Start erscheint beispielsweise folgende Fehlermeldung auf der Konsole und/oder in der Log-Datei: "Datei fehlerhaft beim Lesen des Datensatzes. Mögliche Lösung: Recovery Werkzeug verwenden."

Da nicht immer jede beschädigte Datenbank vollständig repariert werden kann, ist es sinnvoll regelmäßig Sicherheitskopien der Datenbank zu erstellen. Der CCU-Historian kann auch Backups automatisch erstellen (s.a. Handbuch).

Die Datenbankdatei kann zwischen den unterstützten Plattformen beliebig kopiert werden, sodass die Wiederherstellung auch auf einem Desktop-Rechner durchgeführt werden kann. Es wird lediglich eine Java-Installation (mindestens Version 8) und die plattformunabhängige Distribution vom CCU-Historian (Datei ccu-historian-*-bin.zip) benötigt.

Ich habe eine Sitzung (unter Windows) aufgezeichnet, wie das Recovery-Werkzeug verwendet wird. Der CCU-Historian wurde für das Beispiel im Verzeichnis d:\ccu-historian-test entpackt. Unter Umständen muss der Dateiname lib\h2-2.1.212.jar bei neueren Versionen des CCU-Historians angepasst werden.

d:\ccu-historian-test>dir
 Verzeichnis von d:\ccu-historian-test

06.03.2018  20:32    <DIR>          .
06.03.2018  20:32    <DIR>          ..
06.03.2018  20:32             3.272 ccu-historian.config
31.01.2018  20:32           477.717 ccu-historian.jar
31.01.2018  20:31         2.284.412 CCU-Historian_Kurzanleitung.pdf
06.03.2018  21:13    <DIR>          data
06.03.2018  20:32    <DIR>          lib
29.09.2017  22:09            33.093 LICENSE.txt
06.03.2018  20:32    <DIR>          third-party-licenses
31.01.2018  20:32                 5 VERSION.txt
06.03.2018  20:32    <DIR>          webapp
               6 Datei(en),      2.823.075 Bytes
               6 Verzeichnis(se), 61.309.284.352 Bytes frei

d:\ccu-historian-test>dir data
 Verzeichnis von d:\ccu-historian-test\data

06.03.2018  21:13    <DIR>          .
06.03.2018  21:13    <DIR>          ..
19.02.2018  21:01         3.497.984 history.mv.db
               1 Datei(en),      3.497.984 Bytes
               2 Verzeichnis(se), 61.309.284.352 Bytes frei

d:\ccu-historian-test>java -cp lib\h2-2.1.212.jar org.h2.tools.Recover -dir data -db history

d:\ccu-historian-test>dir data
 Verzeichnis von d:\ccu-historian-test\data

06.03.2018  21:14    <DIR>          .
06.03.2018  21:14    <DIR>          ..
06.03.2018  21:14         1.395.790 history.h2.sql
19.02.2018  21:01         3.497.984 history.mv.db
06.03.2018  21:14         3.697.729 history.mv.txt
               3 Datei(en),      8.591.503 Bytes
               2 Verzeichnis(se), 61.304.188.928 Bytes frei

d:\ccu-historian-test>move data\history.mv.db data\history.mv.db.backup
        1 Datei(en) verschoben.

d:\ccu-historian-test>java -jar ccu-historian.jar -runscript data\history.h2.sql
2018-03-06 21:15:20|INFO   |CCU-Historian V2.3.1
2018-03-06 21:15:20|INFO   |(C)MDZ (info@ccu-historian.de)
2018-03-06 21:15:20|INFO   |Starting base services
2018-03-06 21:15:21|INFO   |Running script data\history.h2.sql on database
2018-03-06 21:15:23|INFO   |Script run completed
2018-03-06 21:15:23|INFO   |Stopping base services

d:\ccu-historian-test>dir data
 Verzeichnis von d:\ccu-historian-test\data

06.03.2018  21:15    <DIR>          .
06.03.2018  21:15    <DIR>          ..
06.03.2018  21:14         1.395.790 history.h2.sql
06.03.2018  21:15         1.609.728 history.mv.db
19.02.2018  21:01         3.497.984 history.mv.db.backup
06.03.2018  21:14         3.697.729 history.mv.txt
               4 Datei(en),     10.201.231 Bytes
               2 Verzeichnis(se), 61.302.579.200 Bytes frei

d:\ccu-historian-test>java -jar ccu-historian.jar
2018-03-06 21:15:54|INFO   |CCU-Historian V2.3.1
2018-03-06 21:15:54|INFO   |(C)MDZ (info@ccu-historian.de)
2018-03-06 21:15:54|INFO   |Starting base services
2018-03-06 21:15:54|INFO   |Connecting to database
2018-03-06 21:15:55|INFO   |Starting database web server
2018-03-06 21:15:55|INFO   |Auto detected local address (please check): 192.168.0.30
2018-03-06 21:15:55|INFO   |Configured following interfaces:
2018-03-06 21:15:55|INFO   |Starting interfaces
2018-03-06 21:15:55|INFO   |Starting BIN-RPC server on port 2099
2018-03-06 21:15:55|INFO   |Starting XML-RPC server on port 2098
2018-03-06 21:15:55|INFO   |Starting historian
2018-03-06 21:15:55|INFO   |Starting web server
2018-03-06 21:15:55|INFO   |Web server port: 80
...

Import von CUxD-Devlog-Dateien

PeterAC aus dem Homematic-Forum hat das CSV-Import-Skript für CUxD-Devlog-Dateien angepasst.

Installation auf einem QNAP-NAS

MartinMatic aus dem Homematic-Forum hat eine Installationsanleitung für das QNAP-NAS erstellt.

Hinweis: Der CCU-Historian sollte nicht mit dem Kommando kill -9 (siehe Seite 12) beendet werden, da dadurch die Datenbank nicht ordentlich heruntergefahren wird. Stattdessen sollte Kommando kill -15 verwendet werden. Es kann je nach Datenbankgröße mehrere Minuten dauern, bis der CCU-Historian heruntergefahren ist.

systemd Unit-Datei

Für die folgende Unit-Datei müssen ein Benutzer historian, eine Gruppe historian und das Home-Verzeichnis /home/historian mit der Historian-Installation vorhanden sein:

[Unit]
Description=CCU-Historian
Requires=network.target
After=network.target

[Service]
User=historian
Group=historian
ExecStart=/usr/bin/java -jar ccu-historian.jar
WorkingDirectory=/home/historian
Type=simple

[Install]
WantedBy=multi-user.target 

Zeitzone anpassen

Der CCU-Historian übernimmt normalerweise die Zeitzoneneinstellung vom Betriebssystem. Diese kann über Startparameter geändert werden, z.B. für Berlin:

java -Duser.timezone=Europe/Berlin <restliche Parameter>

Zahlenformat anpassen

Für die Darstellung und Eingabe von Zahlen übernimmt der CCU-Historian normalerweise die Ländereinstellung vom Betriebssystem. Diese kann über Startparameter geändert werden, z.B. für Deutschland:

java -Duser.language=de -Duser.country=DE <restliche Parameter>