openHAB 2 Installation auf Synology NAS


Update 12.11.2020

Ab Dezember  2020 habe ich das Glück, ein Eigenheim zu besitzen. Mit dem Umzug werde ich mein Smart Home zukünftig mit Home Assistant steuern, sodass dieser Beitrag nicht länger fortgeführt und gepflegt wird.


Die heutigen NAS-Modelle sind nicht nur reine Dateispeicher, sondern kleine Alleskönner. So lassen sich durch Erweiterungen (Synology Packages, SPKs) eine Vielzahl von Funktionen nachrüsten. Eine davon ist openHAB 2 für die zentrale Steuerung von Smart Home Komponenten.

In meiner Beispiel Installation verwende ich folgende Komponenten:

  • Synology Modell: DS214
  • DSM Version: 6.2.2
  • openHAB Version: 2.4.0.001
Vorbereitung

Vor Beginn der eigentlichen openHAB 2 Installation benötigt es einige Einstellungen auf der Synology, damit openHAB 2 sauber läuft:

  • User-Home Service
  • Shared Folder inkl. Unterordner
  • Java

User-Home Service

Im ersten Schritt der Vorbereitung muss der User-Home Service aktiviert werden. Der Dienst legt automatisch ein Share homes an. In diesem wird für jeden User ein eigener Ordner angelegt, der dann als home dem jeweiligen User zur Verfügung steht.
Um den Dienst zu starten aktiviert man die Checkbox Enable user home service unter Advanced im Control Panel Menü User.

Shared Folder

Für die Ablage der Konfigurationsdateien benötigt das openHAB 2 SPK einen Shared Folder. Dieser muss entweder public oder SmartHome benannt werden. Der Share beherbergt im Anschluss die openHAB 2 Konfigurationsdateien und kann z.B. auch dazu genutzt werden, um zur Bearbeitung der Konfiguration remote auf die Dateien zuzugreifen, z.B. per VSCode (siehe hier).
Achtung: Die Namen sind Case-sensitive!

Im Reiter Permissions berechtigt man nun die lokale Gruppe users mit Read/Write Zugriff. Alternativ kann man sich natürlich vorher eine eigene Gruppe anlegen und diese berechtigen.

Über die File Station der NAS muss im neuen Shared Folder anschließend folgende Ordnerstruktur angelegt werden – auch hier sind die Namen Case-sensitive:

-> openHAB
    -> addons
    -> conf
    -> userdata

Bei früheren SPK Versionen von openHAB 2 lautet der Ordner der 1. Ebene ggf. auch openHAB2. Wie genau der Ordner lautet, kann man während der Installation des openHAB 2 SPKs rausfinden und die Installation ggf. nochmal unterbrechen, wenn der Ordner falsch angelegt wurde.

Java

Nachdem nun die Vorbereitungen im Control Panel abgeschlossen sind, beginnen die Arbeiten über das Package Center. openHAB 2 benötigt zum Betrieb eine Java Runtime. Daher muss über das Package Center nach Java gesucht und dann das entsprechende Package Java8 installiert werden.

Nach der Installation des Java8 Packages kann dieses optional noch aktualisiert werden. Dazu öffnet man das Package, wählt Upgrade Java aus, navigiert zur Java SE Download Seite, lädt sich die aktuellste Version für seine NAS herunter (im Falle der DS214 ist das die ARM32 Version) und installiert die heruntergeladene Datei. Ich muss leider gestehen, dass bei mir das Upgrade in meinen 2 Versuchen nicht funktioniert hat – für Tips bin ich daher immer zu haben.

openHAB 2 Installation

Package Center Trust Level

Da die openHAB 2 SPK nicht über die offizielle Synology Package Sources verfügbar ist, sondern über manuellen Download und Installation, muss der Trust Level für die Packages angepasst werden. Hierzu wählt man in den Trust Level Optionen im Reiter General der Package Center Settings die Option Any publisher aus.

Installation

Vor der eigentlichen Installation muss das aktuelle openHAB 2 SPK heruntergeladen werden: https://github.com/openhab/openhab-syno-spk/releases

Die Installation des heruntergeladenen SPK muss im Anschluss als Manual Install im Package Center gestartet werden.

Das License Agreement wird im ersten Schritt mit der Checkbox I accept the terms of the license agreement bestätigt.

Im nächsten Schritt kommt der zuvor angelegte Shared Folder zum Tragen. Entsprechend des vorher gewählten Namens ist der Ablageort der Konfigurationsdateien anzugeben – hier, wie auch zu lesen, die Info, dass die Unterordner bereits existieren müssen!

Danach werden die Admin-Ports für den Zugriff über HTTP/HTTPS konfiguriert. Betreibt man auf der NAS nur diesen einen Webservice, können die Default Ports belassen werden. Betreibt man mehrere Webservices (oder plant dies in der Zukunft zu tun), ist es ratsam, die Ports zu ändern und den openHAB 2 Webservice ggf. mit dem Reverse Proxy Service über einen benutzerfreundlichen Port erreichbar zu machen (siehe unten: Reverse Proxy). Belässt man die Default Ports der openHAB 2 Installation, kann es zu Konflikten mit anderen Packages kommen (z.B. verwendet SABnzbd ebenfalls Port 8080 für HTTP).

Die folgende Konfiguration von TMPFS und Z-Wave Integration ist optional, je nach der eigenen Smart Home Infrastruktur und Komponenten. TMPFS ist eine Art RAM-Disk, die verhindert, dass openHAB permanent auf die Festplatten schreibt (Logs, etc.) und es dadurch der Synology ermöglicht, die Disks in Ruhemodus zu versetzen.

Abschließend bestätigt man die Installation und aktiviert die Checkbox Run after installation, wenn openHAB 2 nach der Installation automatisch hochgefahren werden soll. Hierzu ein Hinweis: Der erste Start von openHAB 2 kann gut und gerne mal 5-10 Minuten dauern, also nicht ungeduldig werden.

Danach ist openHAB 2 schon einsatzbereit. Abschließend wird über die URL http://<NAS-Hostname/-IP>:8080 (oder alternativ konfigurierter Port), bzw. https://<NAS-Hostname/-IP>:8443 (oder alternativ konfigurierter Port) die initiale Konfiguration von openHAB 2 aufgerufen und gestartet.

Nacharbeiten und optionale Konfigurationen

Reverse Proxy

Seit DSM Version 6 bieten die Synology NAS Systeme auch eine rudimentäre Reverse Proxy Funktion. Diese ist praktisch, wenn mehrere Webservices mit verschiedenen Ports auf der NAS betrieben werden, diese jedoch alle über einen gemeinsamen Port bereitgestellt werden sollen. Möglich wird dies, durch ein Port Redirecting abhängig vom angefragten Host-Header.

Leider funktioniert am Synology Reverse Proxy keine User Authentifizierung. Es können lediglich Access Control Profile hinterlegt werden, die die Source IPs einschränken. Daher eignet sich der Synology Reverse Proxy nicht, um einen externen Zugriff auf openHAB 2 einzurichten (openHAB 2 hat ja leider auch keine Anmeldefunktion).

Im folgenden Beispiel läuft auf der Synology neben openHAB 2 (HTTPS auf Port 9080) auch noch SABnzbd (HTTPS auf Port 9090). Beide Webseiten sollen über Port 8443 aufgerufen werden. openHAB 2 über die URL https://smarthome.domain.local:8443 und SABnzbd über die URL https://usenet.domain.local:8443. Für beide URLs muss vorab ein DNS A-Record angelegt werden mit der IP der Synology NAS.

Die Konfiguration der Reverse Proxy Funktion erfolgt im Control Panel Menü Applications unter dem Reiter Reverse Proxy.

Konfiguration für openHAB 2
Description: openHAB 2
Source / Protokoll: HTTPS
Source / Hostname: smarthome.domain.local
Source / Port: 8443
Destination / Protokoll: HTTPS
Destination / Hostname: localhost
Port: 9080

Konfiguration für SABnzbd
Description: Intranet
Source / Protokoll: HTTPS
Source / Hostname: usenet.domain.local
Source / Port: 8443
Destination / Protokoll: HTTPS
Destination / Hostname: localhost
Port: 9090

Zu beachten bei obiger Konfiguration ist, dass die Well-Known Ports 80 und 443 nicht für den Reverse Proxy verwendet werden können. Diese beiden Ports sind als „Systemports“ blockiert und können nur von Paketen wie z.B. der Webstation verwendet werden. Mit irgendeiner Version ging das mal, solange die Webstation nie installiert war, aber zumindest in meiner Testinstallation unter DSM 6.2.2 klappt’s nicht mehr.

Persistence mit MySQL Datenbank

Persistence ist ein Feature von openHAB, welches dazu dient, Daten von openHAB dauerhaft, bzw. zumindest über einen definierten Zeitraum zu speichern und für  Auswertungen, Prognosen und die Erstellung von Graphen/Diagrammen zu nutzen. Darüber hinaus dient die Persistence dazu, den Status der Komponenten nach einem Reboot von openHAB wieder herzustellen.

Standardmäßig wird für Persistence eine lokale Datenquelle verwendet, die Daten können allerdings auch in verschiedene externe Datenbanken ausgelagert werden.

Wie bereits oben erwähnt, sind die heutigen NAS Systeme kleine Alleskönner. So bietet auch Synology die Möglichkeit eine relationale Datenbanken auf MySQL Basis (bzw. MariaDB) zu hosten, die als Persistence Datenbank verwendet werden kann.

Hierzu startet man die Installation wie gewohnt über das Package Center:

Nach dem Download des Package startet die Installation. Im ersten Schritt ist das Passwort für den MariaDB root-User festzulegen:

Danach bestätigt man die Installation und aktiviert die Checkbox Run after installation, wenn MariaDB nach der Installation automatisch gestartet werden soll.

Zur Verwaltung der Datenbanken stünde nun auch das WebUI phpMyAdmin als Package zur Verfügung. Da ich persönlich einfach CLIs praktischer finde, nutze ich SSH und die MySQLCLI zur Administration.

Für die Persistence lege ich nun eine Datenbank und einen dazugehörigen User an:

sudo -i
/<MariaDB-Pfad*>/mysql -u root -p
mysql> CREATE DATABASE IF NOT EXISTS openhab;
mysql> CREATE USER 'openhab'@'localhost' IDENTIFIED BY '<Passwort>';
mysql> GRANT ALL PRIVILEGES ON openhab.* TO 'openhab'@'localhost';
mysql> quit;

Sobald die Datenbank online ist, ist die Konfiguration für openHAB vorzunehmen. Wie der Rest der Konfiguration ist auch die Persistence Konfiguration Datei-basiert. Deshalb ist im openHAB File Share im Ordner openHAB\conf\persistence\ eine Datei mysql.persist anzulegen. Wie der Inhalt der Datei zu konfigurieren ist, kann man folgender Anleitung entnehmen: https://www.openhab.org/docs/configuration/persistence.html

to be continued…

*) MariaDB/MySQL Tools Pfade in DSM:
Die Pfade zu den MariaDB/MySQL Tools (mysql, mysql-admin, etc.) können je nach DSM Version abweichen.
Finden lassen sich die Tools in der CLI mit folgendem Befehl:

find / -name "mysql"

In DSM 6.2 z.B. lauten die Pfade (MariaDB5 / MariaDB10):

/usr/local/mariadb/bin/
/usr/local/mariadb10/bin/

8 Antworten

  1. Dirk Neumann sagt:

    Kann ich die Festplattenzugriffe meines Synology NAS aufgrund MariaDB ebenfalls mit TMPFS abfangen? Ich muss jedoch sicherstellen, daß die bisherigen Datenbankinhalte sauber übernommen werden.

  2. Christian sagt:

    Hallo Herr Schreiner,
    Ich hab Openhab auch auf meiner Synology so installiert wie sie. Jetzt hab ich das Problem das unter openHab/userdata/logs die Logdateien zwar angelegt werden. Der Zeitstempel auch Aktuell ist jedoch das File immer 0kb hat und leer ist . Haben sie da eine Idee was da das Problem sein kann. Ich such jetzt schon eine Woche und finde es leider nicht. Auch nach Stoppen und löschen der Files werden sie zwar neu angelt bleiben jeoch leer. Bitte um Hilfe.
    Danke Christian

    • Hallo Christian
      Wenn du schon gesucht hast, gehe ich mal davon aus, die Hinweise auf CHOWN/CHMOD hast du schon gefunden, ausprobiert und hat nichts geholfen? Ich bin inzwischen mit meiner OpenHAB Installation nicht mehr auf einer Synology sondern auf einer Ubuntu VM, deshalb kann ich’s leider nicht mehr nachstellen.
      Gruß
      Andreas

  3. Rene sagt:

    Hallo Andreas,
    mein openHAB startet nicht, nach Installation warte ich nu schon 20 min, die Webseite öffnet sich nicht.
    Hast du ein Idee ? NAS neu starten ?
    DAnke
    Gruss René

    • Hallo René
      Inzwischen bin ich auf eine Ubuntu VM umgestiegen, daher kann ich nur raten. Was ich prüfen würde:
      1) Hast du noch einen anderen Service, der auf Port 8080 läuft? Z.B. läuft dort standardmäßig auch z.B. das SABnzbd Package. Oder die Web Station, Reverse Proxy? Kannst du prüfen, indem du dich per SSH auf die Synology verbindest und ein netstat -nlp ausführst und schaust, ob TCP 8080 auf Listening steht.
      2) Per SSH auf die Synology und im openHAB Log mal schauen, was da so drin steht. Normalerweise sind die Einträge aussagekräftig und man findet bei Google was dazu.
      3) Ich weiß, eigentlich eine blöde Frage, aber du hast nicht zufällig eine Firewall zwischen Client und Synology. Glaub mir, da bin ich schon oft auf die Schn… gefallen.
      Gruß
      Andreas

  4. Hannes sagt:

    Hallo Andreas, ich komme leider auch nicht auf den Server. Habe die gleiche openHAB Version wie du installiert, aber auch schon eine Neuere getestet. Die Ports habe ich auch schon geändert… Der Server kann nicht geladen werden 🙁 Hast du noch eine Idee? Grüße

    • Hallo Hannes.
      Wie unten geschrieben verwende ich aktuell die Synology-Installation nicht mehr. Bei mir hat’s allerdings damals reibungslos funktioniert. Ich tippe wie bei René auf einen Port-Konflikt. Hast du die Default-Ports bei der Installation geändert oder läuft noch was anderes auf den Ports? Ist openHAB generell gestartet (läuft ein Prozess)? Kannst du dich auf die openHAB CLI verbinden (ssh -p 8101 openhab@localhost)? Was sagt das Log?
      Gruß
      Andreas

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.