openHAB auf einem QNAP-NAS betreiben
Der Artikel beschäftigt sich mit dem Aufsetzen von openHAB auf einem QNAP TS-J231P HAB. Inklusive der Einrichtung von Bindings von Pilips Hue, Google Chromecast (inkl. Google-Home-Lautsprechern), Sony-Lautsprechern und einer Homematic CCU3.
Erstmalige Installation am QNAP
- Freigabeordner anlegen
- Systemsteuerung > Rechte > Freigabeordner anwählen,
- Auf Erstellen > Freigabeordner klicken,
- Ordnername: "openHAB" eintragen und bestätigen;
- Nun die qpkg-Datei manuell im App Center installieren.
Alternative, die auf meinem TS-231P stabiler läuft (Version 2.4.0): openHAB direkt über den QNAP Club installieren. - Erstmaliges Setup
- App im QNAP-App-Verzeichnis auswählen,
- OpenHAB-Package auswählen: am besten wählt man "Standard" aus, damit werden folgende User Interfaces (kurz "UI") installiert: HABPANEL, HOME BUILDER, BASIC UI, PAPER UI (dieses UI benötigt man als erstes),
- Nach erfolgreicher Installation klickt man auf das "PAPER UI", um die ersten Konfigurationen für das Smart Home durchzuführen;
Mögliches Problem mit openHAB auf dem QNAP: Nach ausschalten bzw. Restart des QNAP-NAS kann die openHAB-Seite nicht mehr erreicht werden.
Changes to make openHAB restart more reliably.
I found under Qnap 4.3.4 there were 2 reasons that openHAB 2.0.0 won't start.
First reason would show up in logs as: "Java not found! Please read the documentation about details."
Second reason was issues with instance.properties file was both looked for in wrong path, and also not being removed. 3 changes were made:
- The old -d check for JAVA_HOME doesn't always work if directory is a link, use -e instead.
- Actual path to instance.properties file changed it seems, karaf was dropped from pathname.
- Removes instance.properties file after verifying process is not running.
Quelle: https://github.com/openhab/openhab-qnap-qpkg/pull/50 (10.11.2019)
Meine Lösung: Ich installierte das openHAB direkt über die App-Konsole des NAS beim QNAP Club.
Konfiguration des PAPER UI
Vorab muss ich darauf hinweisen, das folgende Systeme bereits unabhängig von openHAB jeweils mit deren eigenen Apps installiert und konfiguriert wurden:
- Homematic CCU3 samt aller Komponenten (z.B. Schaltaktoren, Durchgangssensoren etc.)
- Philips hue Bridge mit allen Leuchten
- Sony-Lautsprecher
- Google-Home-Lautsprecher und Google Chromecast
Das PAPER UI benötigt man, um das Smart-Home (z.B. mit Bindings, die man installiert) und die openHAB-Instanz zu konfigurieren. Hier beginnt man mit den Einstellungen.
Beim PAPER UI installiert man die notwendigen Bindings, mit deren Hilfe man die intelligenten Dinge (z.B. die Hue-Leuchten) des Haushaltes in der Plattform sichtbar und ansprechbar macht. Diese Dinge kann man dann mit Channels (Kanäle), Services und Regeln verbinden, so programmiert man sein Zuhause in relativ einfachen Schritten.
Im Zuge der sehr guten (englischsprachigen) Dokumentation von openHAB wird u.a. das Network-Binding besprochen. Dieses sollte man gleich am Beginn durchführen, da man damit die IP-Adressen der im selben Netzwerk aktiven Geräte herausfindet.
Folgende Bindings habe ich derzeit aktiviert:
- Network-Binding: Damit analysiere ich (mit einem Ping) mein lokales Netz, welche Geräte online erreichbar sind und welche IP diese haben. Einen Speedtest kann man damit ebenfalls durchführen.
- Netzwerkanalyse: Inbox > auf das "+" klicken > "Network Binding" auswählen >> nun wird nach den einzelnen Geräten im lokalen Netzwerk gesucht.
Achtung! Mit "ADD MANUALY" kann man Geräte auch manuell hinzufügen, wenn man deren IP-Adresse kennt. - Das Ergebnis findet man danach im Posteingang.
- Klickt man das Häckchen jeweils neben den gefundenen Geräten in der Inbox an, fügt man dieses Gerät in den Bereich "Configuration > Things" hinzu. Und genau das muss nun getan werden!
- Netzwerkanalyse: Inbox > auf das "+" klicken > "Network Binding" auswählen >> nun wird nach den einzelnen Geräten im lokalen Netzwerk gesucht.
- Chromecast Binding: Mit diesem Binding kann ich sowohl den Google Chromecast, als auch die Google-Lautsprecher suchen und als "Things" meinem openHAB-System hinzufügen. Zusätzlich werden auch die Gruppen in Google gefunden und als "Things" angezeigt. Das ist besonders praktisch. So kann ich z.B. meine "Ess-Wohnzimmergruppe", die Audiogeräte im Wohnzimmer und in der Küche zusammenfasst, direkt als (Gruppen)-"Thing" wie ein normales Gerät ansprechen und z.B. gleichzeitig Radio hören.
- Netzwerkanalyse: Inbox > auf das "+" klicken > "Chromecast Binding" auswählen >> nun wird (mittels UPnP) nach den einzelnen Google-Geräten im lokalen Netzwerk gesucht.
- Das Ergebnis findet man danach im Posteingang.
- Klickt man das Häckchen jeweils neben den gefundenen Google-Geräten in der Inbox an, fügt man diese in den Bereich "Configuration > Things" hinzu.
- Hue Binding: Geniale Ergänzung. Hier werden praktisch alle Hue-Komponenten, aber auch OSRAM- und IKEA-Leuchten unterstützt. In der Wohnung habe ich nur Hue-Leuchten, im Gartenhaus werde ich dieses Binding mit Osram-Leuchten ausprobieren und meine Erfahrungen dann hier wiedergeben.
- Homematic Binding:
- SonyAudio Binding:
- Weather Binding: Mit Hilfe dieses Add-ons binde ich mir die mir wichtigen Wetterdaten in mein Basic-UI ein. Als Provider wählte ich ForecastIo (jetzt darksky.net). Um die Services nutzen zu können, muss man sich bei den einzelnen Providern (gratis) registrieren, dann erhält man API key für seine eigene persönliche Wetterabfrage. Bei diesem Binding gibt es keine direkte grafische Benutzeroberfläche zur Initialisierung.
Man arbeitet mit zwei neuen Dateien: weather.cfg (neu zu erstellen im Ordner /share/CACHEDEV#_DATA/.qpkg/OpenHab/conf/services), diese enthält die gesamte Konfiguration dieses Bindings und weather.items (neu zu erstellen im Ordner /share/CACHEDEV#_DATA/.qpkg/OpenHab/conf/items). Die letztere Datei beinhaltet die Konfiguration der benötigten Wetter-Items. In der Datei #name#.sitemap (#name# steht für einen beliebigen gewählten Dateinamen) muss noch ein eigenes Label für den Wetterbereich angelegt werden, der dann entsprechend im Basic-UI erscheint.
Tipp: Man sollte den einzelnen gefundenen Geräten bereits eine "Location" zuweisen (z.B. "Wohnzimmer"). Damit erspart man sich das spätere umständliche Aufrufen der einzelnen Geräte über Configuration > Things >> "Location". Und der Bereich "Control" wird damit übersichtlicher und strukturierter, denn jede eingegebene Location wird dort als einzelner Karteireiter mit den zugewiesenen Geräten dargestellt.
Konfiguration des HomeBuilder
Dabei handelt es sich um ein Tool für die Erstellung einer s.g. Boilerplate für Items, Sitemap-Dateien und dem HABPanel dashboard. Das bedeutet, man kann hier im User Interface ganz einfach die Grundstruktur des eigenen Zuhauses mit den einzelnen Etagen und den verschiedenen Zimmern einrichten. Sehr informatives YouTube-Video zu diesem Thema: https://www.youtube.com/watch?v=epqMHS-m2hs (19.11.2019)
Einstellungen auf der linken Seite des Panels:
- Auswahl der Sprache (z.B. "German")
- Home Setup Name (z.B. "Testwohnung")
- Floors (= Etagen): Mehrfachnennungen sind möglich
- Rooms (= Räume): Mehrfachnennungen sind möglich
Auf der rechten Bildschirmhälfte werden in den blauen Container-Darstellungen ("Items", "Sitemap" und "Dashboard") der entsprechende Code gebildet. Dieser Code wird nach Fertigstellung in eigene Dateien kopiert.
Der Code wird jeweils in ein leeres Dokument kopiert (z.B. mittels Windows-Editor, Dreamweaver etc.), danach wird die jeweilige Datei abgespeichert und per FTP auf das NAS in den entsprechenden Ordner übertragen.
- Items: Bevor man das Eigenheim in der Sitemap übersichtlich darstellen kann, muss man die einzelnen Items (Etagen und Räume) definieren, dies geschieht in dieser Datei.
/share/CACHEDEV#_DATA/.qpkg/OpenHab/conf/items
Der Name der Datei kann beliebig gewählt werden, muss jedoch IMMER mit der Endung .items versehen werden!
Beispielcode (die Benamsung ist bei mehr als einer Etage etwas anders):
Die deutschen Namen stehen zwischen den Apostrophen (""), in den spitzen Klammern findet man die Namen der vorinstallierten Icons, in den runden Klammen stehen die übergeordneten Gruppeninstanzen (hier ist dies jeweils Home). In der Datei kann man jederzeit Änderungen vornehmen.
Group Home "Meine Testwohnung" <house> ["Building"]
Group GF "Erdgeschoss" <groundfloor> (Home) ["GroundFloor"]
Group Balcony "Balkon" (Home) ["Outdoor"]
Group Bathroom "Badezimmer" <bath> (Home) ["Bathroom"]
Group Bedroom "Schlafzimmer" <bedroom> (Home) ["Bedroom"]
Group Corridor "Gang" <corridor> (Home) ["Corridor"]
Group Kitchen "Küche" <kitchen> (Home) ["Kitchen"]
Group LivingRoom "Wohnzimmer" <sofa> (Home) ["LivingRoom"]
Group Office "Büro" <office> (Home) ["Room"]
Group StorageRoom "Lagerraum" <suitcase> (Home) ["Room"]
Group Toilet "Toilette" <toilet> (Home) ["Bathroom"]
- Sitemap: In diesem Bereich legt man fest, wie sich das Zuhause im UI später darstellen soll. So kann man hier u.a. auch die Reihenfolge der Räume festlegen.
/share/CACHEDEV#_DATA/.qpkg/OpenHab/conf/sitemaps
Der Name der Datei muss gleich lauten, wie der Home Setup Name, und sie muss IMMER mit der Endung .sitemap versehen werden!
Beispielcode: Das Label erscheint als Titel in der späteren Übersicht. Frames sind optische Container, die eine bessere Unterscheidung zwischen den Etagen ermöglichen.
sitemap testwohnung label="Meine Testwohnung" {
Frame {
Group item=LivingRoom
Group item=Corridor
Group item=Office
Group item=Kitchen
Group item=Bathroom
Group item=StorageRoom
Group item=Bedroom
Group item=Toilet
Group item=Balcony
}
}
Features
- Classifies the objects within each room and creates groups for them
- Optionally adds icons from Classic Icon Set to the items
- Optionally adds Tags to the items - convenient for HomeKit/Hue Emulation add-ons users
- Automatically aligns the items vertically
- Generates a Sitemap file
- Generates a set of HABPanel Dashboards corresponding with the Items