smartVISU installieren
Die SmartVISU ist eine Sammlung von HTML-Dateien und PHP Skripten die es ermöglicht Items vom SmartHomeNG anzuzeigen. Im Wesentlichen wird dazu PHP und ein Webserver benötigt: Aktuell können unter anderem Apache2 oder NGINX genutzt werden. Variable Daten (z.B. Itemwerte, Plotdaten) tauschen SmartVisu und SmartHomeNG über eine Websocket-Verbindung aus.
Webserver und zusätzliche Pakete installieren
Die folgende Anleitung funktioniert für eine Installation unter Debian Trixie (13) oder auch Debian Bookkworm (12). Für andere Versionen kann es sein das weitere Pakete benötigt werden oder aber auch Pakete nicht gebraucht werden. In dem Fall gibt es im Internet genügend andere Quellen die Hilfe versprechen.
Auf einigen Debian Distributionen ist Apache2 bereits vorinstalliert, dennoch braucht es jedenfalls noch einige zusätzliche Pakete, insbesondere PHP.
sudo apt-get install apache2 libawl-php php-curl php-json php-xml php-mbstring php-zip libapache2-mod-php
# nun zur Sicherheit den apache neu starten
sudo systemctl restart apache2
Wer auf die Visu auch über das Internet (ohne VPN) zugreifen möchte, sollte NGINX installieren und dann der Anleitung zum Reverse Proxy folgen. Jedenfalls sind das Paket für den Webserver und PHP 8.x zu installieren.
sudo apt-get install nginx-full php-fpm
sudo nano /etc/nginx/sites-available/default
Bei der Standardkonfiguration von NGINX kann auf die entsprechenden Handbücher zum Paket zurückgegriffen
werden. Wichtig ist jedenfalls das korrekte Handling von PHP Dateien, das wie folgt im server Abschnitt konfiguriert wird:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Schließlich müssen noch die Rechte richtig gesetzt werden.
sudo chown www-data:www-data /etc/nginx/sites-available/default
Sollte es Probleme mit PHP geben, sind folgende Schritte durchzuführen:
sudo mkdir /etc/systemd/system/php-fpm.service.d/
sudo nano /etc/systemd/system/php-fpm.service.d/service_php_fix.conf
Hier ist folgender Inhalt einzutragen. Danach die Datei speichern und schließen.
[Service]
RuntimeDirectory=php
RuntimeDirectoryMode=755
Schließlich sollte PHP und der Webserver neu gestartet werden.
sudo systemctl restart php-fpm.service
sudo systemctl restart nginx
SmartVISU Quellcode laden
Die Dateien der SmartVISU werden in einem Unterverzeichnis abgelegt, das für den Webserver zugänglich ist:
cd /var/www/html
sudo rm index.html
sudo mkdir smartvisu
sudo chown smarthome:www-data smartvisu
# guid setzen
chmod g+rws smartvisu/
cd smartvisu
git clone https://github.com/Martin-Gleiss/smartvisu.git .
# Schreibrechte für Cache und Konfigurationsdateien setzen
bash setpermissions
Bitte auf den Punkt am Ende des git clone Kommandos achten!
Hinweis
Eine Besonderheit des Apache Webservers ist sein spezieller Umgang mit einem Ordner namens „icons“ im Root-Verzeichnis. Da smartVISU einen solchen Ordner verwendet, sollte sie immer wie oben angegeben in einem Unterverzeichnis angelegt werden, damit keine Konflikte entstehen. Dies gilt auch für Docker-Umgebungen.
Für den ordnungsgemäßen Betrieb der SmartVISU in Verbindung mit mit SmartHomeNG müssen noch das Plugin smartvisu und das Websocket-Modul konfiguriert werden. Beide sind in der plugin.yaml.default und module.yaml.default bereits vorkonfiguriert und werden beim ersten Start nach einer frischen Installation in die Einstellungen übernommen.
Zugriff auf die SmartVISU testen
Mit einem Browser kann nun erstmals auf die SmartVISU zugegriffen werden: Hierbei ist <ip-des-servers> natürlich
mit der IP oder dem Hostnamen deines SmartVISU Servers ersetzen: http://<ip-des-servers>/smartvisu.
Bei Checking your configuration sollte alles mit einem Haken versehen sein. Falls nicht, sind die
entsprechenden Änderungen vorzunehmen bevor man weiter macht.
Über den Knopf Config kommt man ins smartVISU Interface direkt auf die Config Seite. Diese ist anfangs in Englischer Sprache. Unter User Interface > Language kann man die Sprache auf Deutsch einstellen und mit Save Settings speichern. Danach sind alle Menüpunkte und Hilfetexte in Deutscher Sprache (wird im Folgenden vorausgesetzt).
Bei Smarthome/IoT-Datenquelle ist SmartHomeNG auszuwählen. Bei der Adresse (Host / IP) muss die IP Adresse des
Servers eingeben werden, auf dem SmartHomeNG installiert ist. Alternativ kann der Hostname des Serves
angegeben werden. Bei Port ist standardmäßig 2424 einzugeben und TLS-Port 2425.
ACHTUNG: Hier NICHT localhost oder 127.0.0.1 eingeben, denn die Adresse wird vom Client Browser benötigt,
um aktuelle Daten über einen Websocket direkt von SmartHomeNG abzufragen.
Soll die Visu über einen Hostnamen anstatt der IP-Adresse aufgerufen werden, muss der Hostnamne im Untermenü smartVISU Hostname / Proxy Server als Hostname bekannt gemacht werden, damit der Treiber dies von einer externen URL unterscheiden kann.
Im Tab Benutzeroberfläche müssen noch die anzuzeigenden Visu-Seiten eingestellt werden. Bevor man eigene Seiten erstellt, kann man dort verschiedene Demoseiten ausprobieren, die dann als Basis für die eigene Visu dienen können.
Um die Einstellungen zu sichern bitte Einstellungen speichern auswählen.
Eigene Visu Seiten anlegen
Um mit der SmartVISU eine eigene Visu anzulegen, muss innerhalb des Ordners pages der SmartVISU ein neues
Verzeichnis angelegt werden, in dem dann die eigenen Seiten z.B. für Räume oder Funktionsbereiche abgelegt werden.
Es existiert im Ordner pages bereits ein Unterordner _template. Dieser wird als Basis der neuen Visu einfach
kopiert cp _template <meineneuevisu>. Für <meineneuevisu> sollte nicht smarthome gewählt werden
wenn später die Visu vom SmartHomeNG Plugin smartvisu erstellt werden soll. Die manuell erstellten Seiten
könnten sonst einfach von SmartHomeNG überschrieben werden.
Die Dateien für die SmartVISU sind einfache HTML Dateien, die auf eigene Bedürfnisse beliebig angepasst werden können. Die einzelnen Bedienelemente wie Buttons, Flips und Werteanzeigen (sogenannte Widgets) sind Makros, die mit der Makrosprache TWIG definiert sind und mit vielen Optionen für die jeweilige Aufgabe parametriert werden können. Als Hilfestellung für die Parametrierung bringt smartVISU eine integrierte interaktive Dokumentation in Englisch mit, die über die Systemseite (Zahnradsymbbol in der Kopfzeile) aufgerufen wird. Sie enthält viele Widget-Beispiele, deren Funktionen live, aber offline getestet werden können.
Ebenfalls auf der Systemseite befindet sich der Widget-Assistent. Mit ihm können Widgets live parametriert und online am Backend (z.B. SmartHomeNG) getestet werden. Der eingegebene Code wird automatisch in die Zwischenablage kopiert und kann direkt in die HTML-Seiten hineinkopiert werden. Um die volle Funktionalität nutzen zu können, muss SmartHomeNG fertig konfiguriert und gestartet sein und das smartvisu-Plugin muss die Datei „masteritem.json“ erstellt haben, die dem Assistenten die definierten Items und ihre Typen bekannt macht.
Wer noch tiefer in die Zusammenhänge einsteigen will, kann die sog. „Kurzanleitung“ in Deutscher Sprache verwenden (siehe unten). Dort werden für viele Grundfunktionen die Parametrierung der Items in SmartHomeNG gemeinsam mit der zugehörigen Widget-Parametrierung in smartVISU erklärt.
Dokumentation und Kurzanleitung sind zwar auf der Projektseite smartVISU zu finden, es wird aber empfohlen die integrierte Dokumentation in der Visu zu verwenden, die immer zur installierten Version passt und aktuell ist.
Die für die SmartVISU generierten HTML Seiten sind zwar responsiv, aber durchweg statisch. Die Kommunikation zwischen SmartHomeNG und der SmartVISU erfolgt über das Websocketmodul für SmartHomeNG und JavaScript Code, der automatisch zu den Widgets in die HTML Seite eingebunden wird. Der Javascript Code steuert dann dynamisch das Verhalten der Seite in Abhängigkeit von den via Websocket übermittelten Daten von Items in SmartHomeNG.
SmartVISU Kurzanleitung
Ab Version v3.7 bringt smartVISU die Kurzanleitung im Unterordner pages bereits mit. Für alle älteren SmartVISU Installationen <= v3.6 muß die Kurzanleitung manuell nachinstalliert werden. Dazu sind folgende Kommandos auszuführen:
cd /var/www/html/smartvisu/pages
mkdir kurzanleitung
cd kurzanleitung
git clone https://github.com/smartVISU-newstuff/kurzanleitung .
(Bitte wie immer auf den Punkt am Ende des letzten Befehls achten)
Wenn die Kurzanleitung installiert ist, erscheint automatisch ein entsprechender Menüpunkt auf der
Systemseite. Alternativ kann die Kurzanleitung im Browser mit det URL
http://<ip-des-servers>/smartvisu/index.php?pages=kurzanleitung aufgerufen werden.
SmartHomeNG Plugin smartvisu
Hinweis
Bevor man sich an der automatischen Generierung von Visualisierungs-Seiten durch SmartHomeNG heran macht, sollte man sich zuerst mit der Dokumentation der smartVISU vertraut machen. Wenn man mit einem Browser die Seite einer noch nicht konfigurierten smartVISU aufruft, kommt man zu einer Inline Dokumentation der smartVISU. Eine umfassende aktuelle Kurzanleitung kann nachinstalliert werden. Wie das geht, ist weiter oben beschrieben. Zudem gibt es seit smartVISU v3.0 den Widget Assistenten, mit dem die benötigten Widgets parametriert, getestet und in die Zwischenablage kopiert werden können. Der Widget Assistent ist über das Systemmenü zu erreichen.
Mit dem Plugin smartvisu können aus der Definition der Items in SmartHomeNG automatisch Visu-Seiten
erstellt werden. Hierzu müssen die benötigten Seitenformate und der benötigte Widget-Code direkt in die
Item-Definitionen von SmartHomeNG geschrieben werden. Dies ist im
Abschnitt Visualisierung genau beschrieben. Die so erstellten Visu-Seiten
werden im Verzeichnis smarthome des pages Verzeichnisses der smartVISU abgelegt. In der Konfiguration
von smartVISU ist dafür Smarthome für die Seiten der Benutzeroberfläche einzustellen.
Das Plugin unterstützt smartVISU Versionen von v2.8 bis zur aktuellen Version.
Mischung von generierten und manuell erstellten Seiten
Es ist möglich automatisch generierte und manuell erstellte Seiten zu mischen. Das Vorgehen hierzu ist in unter Visualisierung beschrieben.