openHAB 2 Konfiguration mit Visual Studio Code
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.
Im folgenden Beitrag möchte ich auf die schöne Möglichkeit eingehen, die openHAB 2 Konfigurationen per Visual Studio Code (VSCode) und openHAB Extension zu bearbeiten und zu validieren.
Installation
Für die Installation werden 2 Komponenten benötigt, die von folgenden URLs heruntergeladen werden können:
- Visual Studio Code: https://code.visualstudio.com/Download
- openHAB Extension: https://marketplace.visualstudio.com/items?itemName=openhab.openhab
Die Installation von VSCode ist recht einfach. Das heruntergeladene Setup kann mit den Standardeinstellungen installiert werden. Die Extension kann danach über die Extension Marketplace Funktion nachinstalliert werden:

VSCode Extension Installation
Alternativ kann die Extension Datei von obiger URL heruntergeladen und manuell installiert werden:

VSCode Extension Installation per VSIX Datei-Import
Nach einem Neustart von VSCode ist die Extension aktiv.
openHAB Server Verbindungskonfigurationen
Netzwerkfreigabe: Konfigurationsdateien
Um im Anschluss an die Installation die openHAB Konfigurationsdateien in VSCode zu editieren, muss in VSCode die entsprechende Netzwerkfreigabe auf dem openHAB Server als Ordner eingebunden werden. Entgegen dem Screenshot muss die Netzwerk-Freigabe als Netzlaufwerk eingebunden werden, nicht als UNC-Pfad.

VSCode Einrichtung openHAB Konfigurationsverzeichnis
Danach kann auf die einzelnen Unterverzeichnisse der openHAB Konfiguration direkt zugegriffen und Dateien darin bearbeitet und gespeichert werden.
REST-API: Konfigurationsvorschau
Für die Vorschau der Konfiguration mit den UIs von openHAB in VSCode ist ein Zugriff per REST-API auf den Server erforderlich. Die Konfiguration dafür muss in der VSCode Konfigurationsdatei angelegt werden. Dies kann entweder manuell in der Datei %APPDATA%\Code\User\settings.json
gemacht werden oder in den Settings von VSCode.

openHAB Konfiguration: settings.json
Folgende Parameter sind für die REST-API einzutragen:
{ ... "openhab.host": "<openHAB-Server-IP/Hostname>", "openhab.port": <openHAB-Server http-Port (Default: 8080)>, "openhab.useRestApi": true, ... }
In neueren Versionen der openHAB Extension kann der Port auch in der Settings-GUI eingetragen werden.
LSP: Konfigurationsvalidierung/Syntaxprüfung
Die VSCode openHAB Extension ermöglicht neben der eigentlichen Konfiguration auch die Konfigurationsvalidierung/Syntaxprüfung . Diese funktioniert allerdings nicht direkt über den eingebundenen SMB-Share, sondern VSCode muss per Language Server Protokoll (LSP) an den openHAB Server angebunden werden. Dazu muss der openHAB Server mindestens auf Version 2.2.0 Build 1065 aktualisiert sein und falls sich zwischen Client und openHAB Server eine Firewall befindet, muss der Port tcp/5007 zum openHAB Server freigeschaltet sein.
Für die LSP-Konfiguration sind in der VSCode Konfigurationsdatei folgende Parameter anzugeben:
{ ... "openhab.remoteLspPort": 5007, "openhab.remoteLspEnabled": true, ... }
In neueren Versionen der openHAB Extension kann der LSP-Port auch in der Settings-GUI eingetragen werden.
karaf Console
Ein weiteres Feature ist der Zugriff auf die openHAB CLI (karaf Console) direkt aus VSCode heraus. Der Zugriff ermöglicht es, das Karaf Log live im VSCode Panel anzeigen zu lassen, sodass man sofort erkennen kann, ob die Konfiguration fehlerhaft ist. Hierzu ist folgender Konfigurationsparameter einzutragen:
"openhab.karafCommand": "ssh openhab@<openHAB-Server-IP/Hostname> -p 8101 -t 'log:tail'",
Fehler und Warnungen
Your openHAB environment is running in simple mode.

Your openHAB environment is running in simple mode.
Die o.g. Warnung tritt häufig nach Neuinstallationen von openHAB auf. Sie erscheint, obwohl in der PaperUI der Simple Mode deaktiviert ist. In meinem Fall hat es geholfen, den Simple Mode über die Paper UI einmal kurz zu aktivieren und wieder zu deaktivieren. Dabei jeweils bei jeder Änderung speichern.
Die Option findet sich im PaperUI Menü unter Configuration -> System -> Item Linking:

PaperUI: Configuration -> System -> Item Linking -> Simple Mode
Hi, super Anleitung. Danke! Die hat mich echt weiter gebracht. Aber eins ist mir noch ein Rätsel: Du beschreibst zwar welchen Parameter man eintragen muss, um auf die Karaf Konsole zuzugreifen, aber nicht, wie man das dann wirklich macht…
Was ich meine: Ich kann über die eingebaute Konsole in VSCode auch ohne diesen Eintrag auf die Konsole, wenn ich alles manuell eingebe. Der Eintrag in der Settings muss also irgendeinen Vorteil haben.. ein Shortcut? Aber wie nutze ich den?
Danke!
Servus.
Der
openhab.KarafConsole
Parameter dient nicht dazu, dich zur Eingabe von Befehlen direkt auf die Konsole zu verbinden, sondern dir ein Log-File deiner Änderungen in VSCode auszugeben.Dazu musst du mit
Ctrl+J
das VSCode Panel unten anzeigen lassen, auf den ReiterOutput
wechseln und im Panel Dropdown-Menü aufopenHab Server
wechseln.Aber du hast Recht, meine Beschreibung der Funktion im Beitrag war nicht ganz klar, ich hab das etwas angepasst.
Gruß. Andreas
Hallo,
ich hab das mit Rest Api gemacht aber es kam immer noch die error meldung. ich hab keine Ahnung mehr was ich machen soll.
Grüße