Voraussetzungen für die Installation

Um die CometVisu nutzen zu können, muss das System gewisse Voraussetzungen erfüllen.

Diese sind

  • ein Backend für den Zugriff auf den KNX-Bus

  • [optional] rrdtool für die Graphenerstellung

  • [optional] InfluxDB für die Graphenerstellung

  • ein Webserver, mit (optional aber empfohlen) PHP Unterstützung

  • das CometVisu-Softwarepaket

Bemerkung

Für den Manager und Editor wird PHP ab Version 7 benötigt. Der Kern der CometVisu selbst kann jedoch auch ohne PHP genutzt werden.

Backend

Damit die CometVisu auf die Geräte zugreifen kann wird ein „Backend“ benötigt.

Bemerkung

Die CometVisu unterstützt die Verbindung mit einem Backend. Die gleichzeitige Verbindung zu mehreren Backends wird nicht unterstützt.

Für die Backend-Verbindung gibt es verschiedene Möglichkeiten:

knxd / eibd

Um direkt auf den KNX Bus zuzugreifen wird der knxd verwendet. Die Installation dieses Backends wird unter Installation von eibd beschrieben.

openHAB

Für die Verwendung von openHAB als Backend gibt es die Anleitungen Installation auf einem Debian System mit openHAB und Installation auf einem Ubuntu System mit openHAB und Docker.

MQTT

Damit die CometVisu ein MQTT-Teilnehmer ist, wird ein MQTT Broker benötigt der über WebSocket ansprechbar ist.

Backend konfigurieren

Um die CometVisu für die Verwendung von einem spezifischen Backend zu konfigurieren gibt es mehrere Möglichkeiten, die im Folgenden Aufgeführt sind. Hierbei überschreibt eine Methode die darüber aufgeführten Werte, d.h. beispielsweise überschreiben die Werte in der Konfigurationsdatei die Einstellungen aus den Umgebungsvariablen.

HTTP-Header / Docker-Umgebungsvariablen

Der Web-Server kann in den HTTP-Headern der Konfigurationsdatei die Backend-Parameter mit übergeben. Dies ist bei Verwendung des offiziellen Docker-Images der CometVisu leicht durch das Setzen entsprechender ENVIRONMENT Parameter erreichbar

HTTP Header

ENVIRONMENT

Bedeutung

X-CometVisu-Backend-Name

BACKEND_NAME

Name wie knxd, openhab oder mqtt

X-CometVisu-Backend-KNXD-Url

BACKEND_KNXD

URL für die knxd Login-Ressource

X-CometVisu-Backend-MQTT-Url

BACKEND_MQTT

URL für die MQTT Login-Ressource

X-CometVisu-Backend-OpenHAB-Url

BACKEND_OPENHAB

openHAB: Pfad zur REST-API

X-CometVisu-Backend-LoginUrl

CGI_URL_PATH

Veraltet: URL für die knxd oder openHAB Login-Ressource

X-CometVisu-Backend-User

BACKEND_USERNAME

Veraltet: Benutzername, wenn für openHAB benötigt

X-CometVisu-Backend-Pass

BACKEND_PASSWORD

Veraltet: Passwort, wenn für openHAB benötigt

Warnung

Der Benutzername und das Passwort für den MQTT Broker liegen hier direkt lesbar vor und werden auch so über das Netzwerk übertragen!

Konfigurationsdatei

Im alles umschließenden <pages>-Element können die entsprechenden Parameter als Attribut gesetzt werden:

Attribut

Bedeutung

backend

Name wie knxd, openhab oder mqtt

backend-knxd-url

URL für die knxd Login-Ressource

backend-mqtt-url

URL für die MQTT Login-Ressource

backend-openhab-url

openHAB: Pfad zur REST-API

backend-url

Veraltet: URL für die openHAB Verbindung

username

Veraltet: Benutzername, wenn für openHAB benötigt

password

Veraltet: Passwort, wenn für openHAB benötigt

Beispiel:

<?xml version="1.0" encoding="UTF-8"?>
<pages backend="mqtt" backend-url="wss://web.server:443/mqtt/ws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lib_version="9" design="pure" xsi:noNamespaceSchemaLocation="../visu_config.xsd">
  <meta>
    <plugins>
...

URL

Durch den URL Parameter backend kann auch durch den Seitenaufruf das Backend ausgewählt werden. Dies ist jedoch nur in Spezialfällen wie Entwicklung- und Testbetrieb sinnvoll und bedingt, dass die Zugriffs-URLs bereits über eine der weiter oben stehenden Methoden gesetzt wurden.

Graphentool - RRDtool

Eine optionale, aber dringend empfohlene Komponente ist rrdtool, um die Daten für die Erstellung von Graphen bereitzustellen. Es gibt viele Möglichkeiten, Daten an rrds zu übergeben und der Einsatz von rrdtool ist in der Breite dokumentiert. Die Installation von rrdtool für CometVisu wird unter RRDtool beschrieben.

Die Darstellung von Zeitreihen aus einer InfluxDB Datenbank wird direkt unterstützt und benötigt (außer PHP Unterstützung) keine weitere Software.

Webserver

Der notwendigen Dateien unter /usr/lib/cgi-bin/ müssen für das Konto, unter dem der Webserver läuft, ausführbar sein:

chmod +x /usr/lib/cgi-bin/r
chmod +x /usr/lib/cgi-bin/l
chmod +x /usr/lib/cgi-bin/w
chmod +x /usr/lib/cgi-bin/rrdfetch

Wenn diese Dateien symbolische Links sind, müssen entsprechend die verlinkten Dateien ausführbar gemacht werden, z.B. in /usr/local/bin oder /usr/share/knxd/examples/bin.

Um zusätzliche Komponenten wie z.B. den eingebauten Editor nutzen zu können, muss der Webserver die Nutzung von PHP unterstützen.

lighttpd

Für lighttpd wird hier eine Beispielkonfiguration bereit gestellt. Die Konfiguration hier ist allerdings nur als Referenz gedacht; die tatsächlich notwendigen Konfigurationsoptionen können sich je nach Bedürfnis ändern.

Um unter Debian/Ubuntu lighttpd zu installieren:

apt-get install lighttpd

/etc/lighttpd/lighttpd.conf

server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
#       "mod_rewrite",
)

server.document-root        = "/var/www"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"

index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm",
                               " index.lighttpd.html" )

url.access-deny             = ( "~", ".inc" )

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

## Use ipv6 if available
#include_shell "/usr/share/lighttpd/use-ipv6.pl"

dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/x-javascript", "text/css", "text/html", "text/plain" )

include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

/etc/lighttpd/conf-enabled/10-cgi.conf

# /usr/share/doc/lighttpd-doc/cgi.txt

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( "" => "" )
}

## Warning this represents a security risk, as it allow to execute any file
## with a .pl/.py even outside of /usr/lib/cgi-bin.
#
cgi.assign      = (
        ".pl"  => "/usr/bin/perl",
        ".php" => "/usr/bin/php-cgi",
        ".py"  => "/usr/bin/python",
)

/etc/lighttpd/conf-enabled/11-cgi-cometvisu.conf

### Add cgi for cometvisu
alias.url += ( "/cgi-bin/" => "/usr/lib/cgi-bin/" )
compress.filetype += ("application/javascript", "application/xml", "application/octet-stream")

CometVisu installieren

CometVisu kann unter https://github.com/CometVisu/CometVisu heruntergeladen werden und sollte z.B. im Verzeichnis /var/www/visu/ entpackt werden. Die veröffentlichten Pakete sind dort unter https://github.com/CometVisu/CometVisu/releases zu finden.

Die Installation auf dem Raspberry Pi wird unter CometVisu auf Raspberry Pi beschrieben.

CometVisu testen

http://MyServer/visu/ im Browser öffnen

Viel Spaß!