Automatisierung durch textbasierte Konfiguration

Da fragt sich sicherlich der ein oder andere, warum. Nun ich möchte testen können. Das kann ich am einfachsten, indem ich meine Konfiguration oder vor allem Teile (z.B. nur ein bestimmtes Binding) der Konfiguration in meiner Testumgebung bearbeiten kann. Wenn die Änderung dort läuft, wird es in die produktive Umgebung übertragen.
Ich bin überzeugt, das ein Elektriker oder jemand der am "Fließband" solche Installationen umsetzen soll, sehr effektiv mit dieser Methode seine Arbeit erledigen kann.

Dieses Script mit dem ich die Konfiguration verteile bzw. dieser Ansatz soll eine einfache und automatisierte Installation für openHAB ermöglichen. Das dann ohne immer wieder das Betriebssystem auf einer PI neu installieren zu müssen. Idee dahinter war ursprünglich eine schnelle und effektive Installation einer Testumgebung. Um eine Testumgebung bereit zu stellen, müssen natürlich die Daten der „produktiven“ Installation übernommen werden (backup).  

Vorbereitung der Umgebung

Damit ein Einlesen und späte die automatische Installation möglich ist, müssen einige Regeln beachtet werden.

a) Jedes .item und jedes .things file hat den Namen z.b. des Binding (der Name ist aber beliebig).

b) Je Binding gibt es einen Unterordner mit den Namen „binding-<name>“

c) In den Ordner der jeweiligen Bindings gibt es eine install.bash und eine backup.bash Datei. Dort müssen die Namen der zugehörigen Dateien angegeben werden. Um Ordnung zu schaffen, sollten alle Dateien mit den Namen des Bindings Anfangen. Das bringt dann auch eine gewisse Übersicht über die ggf. vielen Bindings die man nutzt. 

d) Aus dem Verzeichnis /var/lib/openhab/config/org/openhab/addons.config sollte die Datei addons.cfg gesichert bzw. in das Verzeichnis "config" abgelegt werden. Die Datei sieht z.B. so aus:

binding=astro,squeezebox,tr064,avmfritz,modbus,lcn,comfoair,mail,mqtt,network
misc=package=standard
persistence=jdbc-mariadb,rrd4j
service.pid=org.openhab.addons
transformation=xslt,xpath,scale,regex,map,jsonpath,exec,javascript
ui=basic,habpanel,habmin

In meinem Fall nutze ich für die Langzeitspeicherung die Maria DB als persistence. rrd4 ist nur für Daten die ich nicht "ewig" speichern möchte.

e) Analog zur addons.cfg, kann auch die runtime.cfg als Default verteilt werden. Dazu diese auch in das config Verzeichnis ablegen.

f) Auch die Einstellungen für Pages etc. in openHAB können "übertragen" werden. Das ist jedoch explizite nicht von openHAB supported! Ich habe es getestet und bislang geht es. Dazu nehmen ich aus dem Ordner /var/lib/openhab/jsondb die Datei uicomponents_ui_page.json mit und packen diese in den Ordner config.

e) Auch die Einstellungen für "habmin" in openhab 3 können "übertragen" werden. Auch das ist nicht von openhab supported! Ich habe es getestet und bislang geht es. Dazu nehmen wir aus dem Ordner /var/lib/openhab/jsondb die Datei uicomponents_habpanel_panelconfig.json mit und packen diese in den Ordner config.

g) In der Installation wird als persistenz mit MariaDB bzw RRD4 gearbeitet. Dazu wird ein Datenbank mit dem Namen "openhab3" verwendet. Diese kann mit inst-db installiert werden. 

1-setup.bash

Diese Datei ist das primäre Script, welches gestartet wird. Ohne Angabe von Parametern, wird nur die Hilfe ausgegeben.

Am besten setzt man über die /etc/profile die beiden folgenden Variablen:

export OPENHAB_SETUP_CONF=/etc/openhab
export OPENHAB_SETUP_SOURCE=/data/install/openhab

Das Verzeichnis "OPENHAB_SETUP_SOURCE" ist das Verzeichnis, wo das Script selbst und die andern Daten "binding-..." usw. liegen

Hier mal ein Stand (März 2023) http://www.berhorst.net/files/openhab-text-install.tgz den Ihr als Grundlage nutzen könnt. Natürlich ist alles ohne Gewähr. Am bessten fangt Ihr mit dem "astro" Binding an und schaut mal wie das so tickt.

Please publish modules in offcanvas position.