openHAB: Wie du erfolgreich von 3.4.1 auf 4.1.2 aktualisierst
Im Mai 2024 habe ich mein SmartHome-System openHAB auf die aktuelle Version 4.1.2 aktualisiert. Damit habe ich ein Major Release übersprungen. Die Neuerungen von openHAB 4.0 habe ich bereits hier beschrieben. Die Neuerungen sind in diesem diesem Blogbeitrag dokumentiert.
Installationsvoraussetzungen prüfen
In den letzten Versionen sind mehr Infrastrukturänderungen auf Java- und Betriebssystembasis enthalten. Es sind also mehr Vorarbeiten und Prüfungen notwendig!
Im ersten Fall muss das zugehörige Pi-OS wie folgt kontrolliert werden:
cat /etc/os-release
In meinem Fall ist Raspbian GNU/Linux 10 (buster) nicht mehr direkt unterstützt und es müssen manuelle Schritte durchgeführt werden.
Die Prüfung der Java-Version kann wie folgt durchgeführt werden:
java -version
Auf meine openjdk version “11.0.16” 2022-07-19 muss manuell auf Version 17 aktualisiert werden.
Mit diesem Befehl prüft man die Architektur des Gesamtsystems:
uname -m
Für meine Architektur armv7l – 32 Bit gibt es auch keine aktuellen Updates mehr. Auch hier muss ich manuelle Tätigkeiten einplanen.
Da ich bei Buster bleiben möchte, eine alte OpenJDK-Version und eine 32-Bit-Architektur habe, war der Standard-Update-Pfad für mich nicht geeignet. In diesem Video wird ein ähnliches Szenario wie bei mir beschrieben:
Aufgaben vor dem Update
Ich hatte noch individuelle Anpassungen und Bindings. Diese müssen zuerst überprüft werden, z.B. wurde mein Fix für das HTTP-Binding von SmartHome/J bereits in den Release-Zweig aufgenommen.
Es ist auch möglich, die Formate für das UoM vor dem Update zu überprüfen und alle Integer-Items entsprechend anzupassen. Hier sind die Breaking Changes dazu.
Außerdem wird empfohlen, vor dem Update die SmartHome/J-Addons zu deinstallieren und nach dem erfolgreichen Update von openHAB wieder zu installieren.
Nun kann das System mit folgendem Befehl heruntergefahren werden:
sudo systemctl stop openhab.service
Java 17 Installation mit Buster
Java 17 benötigt mindestens Debian 11 (Bullseye). Daher ist eine einfache Installation mit “apt-get” nicht möglich. Außerdem muss ich auf meinem System eine 32-Bit-Version von Java verwenden.
Ein entsprechendes OpenJDK kann wie folgt bezogen werden:
https://www.azul.com/downloads/#downloads-table-zulu Java Version: Java 17 (LTS) Architecture: ARM 32-bit HF https://cdn.azul.com/zulu-embedded/bin/zulu17.48.15-ca-hl-jdk17.0.10-linux_aarch32hf.tar.gz
Bestehende Java-Versionen werden entfernt:
sudo apt remove openjdk-11-jre-headless sudo apt remove java*
Die Installation von Azul Java 17 kann wie folgt durchgeführt werden:
sudo mkdir /opt/java cd /opt/java sudo wget https://cdn.azul.com/zulu-embedded/bin/zulu17.48.15-ca-hl-jdk17.0.10-linux_aarch32hf.tar.gz sudo tar -xzvf zulu17.48.15-ca-hl-jdk17.0.10-linux_aarch32hf.tar.gz sudo update-alternatives --install /usr/bin/java java /opt/java/zulu17.48.15-ca-hl-jdk17.0.10-linux_aarch32hf/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /opt/java/zulu17.48.15-ca-hl-jdk17.0.10-linux_aarch32hf/bin/javac 1 sudo update-alternatives --config java
Das Ergebnis kann wie folgt überprüft werden:
sudo java -version openjdk version "17.0.10" 2024-01-16 LTS OpenJDK Runtime Environment Zulu17.48+15-CA (build 17.0.10+7-LTS) OpenJDK Server VM Zulu17.48+15-CA (build 17.0.10+7-LTS, mixed mode)
Update 3.4.1 auf 4.0 / 4.1
Ich habe nun mein System ohne größere Probleme von 3.4.1 auf 4.1.2 wie folgt umgestellt. Im ersten Schritt habe ich ein Backup mit der integrierten Backup-Funktion erstellt:
sudo $OPENHAB_RUNTIME/bin/backup /var/lib/openhab/backups/
Danach habe ich die Dateien manuell gesichert und ein komplettes Backup als Image erstellt.
Nun habe ich dann das eigentliche Update durchgeführt (vor dem Update musste ich noch das aktuelle Repository – dies wird hier beschrieben):
sudo apt-get update sudo apt-get upgrade
Anschließend wurde der Cache geleert und das System neu gestartet:
sudo systemctl stop openhab.service sudo openhab-cli clean-cache sudo shutdown -r now
Der Updatevorgang hat direkt auf die Version 4.1.2 aktualisiert und die Version 4.0 übersprungen. Die Version kann im Webinterface überprüft werden: ÜBER – HILFE. Nun können auch die zuvor deinstallierten SmartHomeJ-Addons wieder installiert werden.
Breaking Changes kontrollieren
Während der Installation werden die “Breaking Changes” des Updates visuell dargestellt. In meinem Fall musste ich die Release Notes von openHAB 4.0 und 4.1 entsprechend durcharbeiten und das System manuell überprüfen.
Folgende Anpassungen waren nach der Aktualisierung erforderlich:
- Units of Measurement (UoM) und hier die Dokumentation
- JavaScript NashornJS: Web-Oberfläche – Add-on Store – Automation – JavaScript Scripting (Nashorn) – INSTALL
Weitere Anpassungen in meinen Bindings waren nicht notwendig (Details sind aber immer in den entsprechenden Release Notes beschrieben).
Testen, Testen, Testen!
Nach jedem openHAB-Update führe ich in unserem SmartHome umfangreiche manuelle Tests durch. Zuerst kontrolliere ich das Log auf ERROR und WARN Meldungen. Danach werden alle Anwendungsfälle des Systems manuell getestet und gegebenenfalls Anpassungen vorgenommen.
Fazit
Das Update auf die aktuelle Version war diesmal in meiner Systemumgebung etwas aufwändiger. Der etwas ältere Raspberry Pi (32 Bit), damit die ältere Betriebssystemversion und die nicht mehr direkt verfügbare Java-Version haben etwas Aufwand verursacht. Ein Hardwarewechsel auf eine 64-Bit-Plattform und damit auf ein neues Pi-OS steht bei mir nun an.
Jetzt können die neuen Funktionen getestet und eingebaut werden. Für mich ist das ChatGPT-Binding und das PPT SMGW Binding interessant. Hierzu werde ich aber noch eigene Artikel schreiben.
Wie sind eure Updates auf openHAB 4.1 gelaufen? Gibt es Anpassungen, auf die ihr gewartet habt? Welche Optimierungen nehmt ihr in eurem SmartHome mit neuen Versionen vor?
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!