openHAB 4.1.0
Upgrade von Openhab 3.4.5 auf 4.1.0
Neues Jahr 2024 soll auch in der Home Automation etwas Neues bringen, daher heißt es auf die aktuelle stable version von openHAB umzusteigen. Nach der Umstellung auf docker container sollte das ja auch einfacher verlaufen. Hier also ein Erfahrungsbericht.
Zuerst einmal neue Volumes für die neue Version anlegen, man möchte ja ein Backup Szenario haben. Da ich alle meine Volumes am gleichen Platz haben möchte, lege ich sie extern an:
docker volume create openhab4_addons
docker volume create openhab4_conf
docker volume create openhab4_userdata
Im nächsten Schritt werden alle files aus den alten OH3 volumes in die entsprechenden neuen OH4 Verzeichnisse kopiert. (Berechtigungen kontrollieren)
Nun heißt es den OH3 container zu stoppen und den OH4 container zu deployen. Hier das YAML file für docker compose bzw. so wie bei mir für den portainer.io
version: '3.8'
services:
openhab4:
image: openhab/openhab:4.1.0
restart: always
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
- "openhab4_conf:/openhab/conf"
- "openhab4_addons:/openhab/addons"
- "openhab4_userdata:/openhab/userdata"
environment:
CRYPTO_POLICY: "unlimited"
EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
OPENHAB_USER: "openhab"
OPENHAB_GROUP: "openhab"
OPENHAB_HTTP_PORT: "8080"
OPENHAB_HTTPS_PORT: "8443"
# If you need more memory
#EXTRA_JAVA_OPTS: "-Xms1024m -Xmx2048m -Duser.timezone=${TZ}"
USER_ID: 9001
GROUP_ID: 9001
labels:
- "com.centurylinklabs.watchtower.enable=true"
network_mode: host
volumes:
openhab4_conf:
external: true
openhab4_addons:
external: true
openhab4_userdata:
external: true
Nach dem Starten des OH4 containers dauert es eine Weile, den OH beginnt automatisch die Update Routinen zu starten und dann: alles läuft, ich kann es gar nicht glauben. Irgendetwas muss doch noch zu ändern sein. Also beginnt einmal der check:
- Die neue OH Oberfläche auf port 8080
- Alle Things online und idle
- Die Sitemaps der BasicUI (zeigen jetzt mehr Spalten an, wenn das Fenster breiter gemacht wird)
- MQTT devices ein- und ausschalten
- Regeln starten
- Telegramm Nachricht schicken
- eMail Nachricht schicken
- Daten im Grafana darstellen
Alle checks einwandfrei, also muss ein neuer Workspace im VisualCode angelegt werden und mit den neuen files befüllt werden. Siehe an, da gibt es eine Fehlermeldung:
The method getRed() from the type HSBType is deprecated
Statt in OH3:
val Number num_red = (ColorPicker.state as HSBType).red.intValue * 2.55
val int red = num_red.intValue
val int green = (ColorPicker.state as HSBType).green.intValue
val int blue = (ColorPicker.state as HSBType).blue.intValue
jetzt in OH4:
val rgb = hsbToRgb(ClorPicker.state as HSBType) // ret array of int values
val Number num_red = rgb.get(0).intValue * 2.55
val int red = num_red.intValue
val int green = rgb.get(1).intValue
val int blue = rgb.get(2).intValue
Mehr war dann aber auch schon wieder nicht zu machen, alles läuft.
In der Standard Umgebung von openhab gibt es die cli-console. Diese ist im container nicht vorhanden. Um die Konsole trotzdem verwenden zu können, braucht man folgenden Befehl.
docker exec -ti openhab4-openhab4-1 /openhab/runtime/bin/client
user: openhab
password: habopen