In diesem Beitrag wird erklärt, wie ihr eure openHAB 2 Installation auf openHAB 3 aktualisiert. Ich zeige hier die Migration durch Parallelinstallation einer neuen openHAB 3 Instanz mit anschließendem Anbinden des alten Systems als Vorbereitung der Übernahme auf das neue System.
Version
Zum Zeitpunkt des Erscheinens dieses Artikels ist die Version openHAB 3.0 gerade ganz neu erschienen. Solltet ihr das hier später lesen kann es sein, dass sich mit einer neuen Version etwas geändert hat. Hinterlasst einfach einen Kommentar, ich aktualisiere die Anleitung dann.
Verwendetes Material / Lizenzen
- Raspberry Pi (z.B. der Raspberry Pi 4 mit 4GB RAM bei amazon.de als Komplettkit, ca. 95 EUR. Die 8GB RAM Version macht aktuell noch Probleme und wird nicht empfohlen).
- Eine für den Raspberry Pi geeignete microSD Karte, am besten mit 16GB oder mehr Speicher. Alleine 2020 habe ich 5 günstige Karten wegen Schreib-/ Lesefehlern verloren und verwende nun nur noch die Samsung PRO Endurance 64GB (z.B. bei amazon.de, ca. 14 EUR).
- Kartenleser für die microSD Karte (z.B. Transcend TS-RDF9K2 bei amazon.de, ca. 14 EUR).
Vorüberlegungen
Es ist soweit: Die neue Version openHAB 3.0 ist final erschienen. Damit stellt sich nun die Frage, wie diese in die bestehende Hausinfrastruktur zu integrieren ist. Prinzipiell gibt es zwei Möglichkeiten:
- In-Place Upgrade / Big Bang
- Parallelinstallation und langsame Migration
Während der Betaphase von openHAB 3 habe ich die erste Variante (Big Bang) ausprobiert und nach einem vollständigen Backup der SD Karte testweise meinen Raspberry mit openHAB 2 einfach auf openHAB 3 aktualisiert.
Wenn ihr eine sehr einfache Installation (wenige Bindings etc.) habt, dann kann das gutgehen. Zumindest bei mir und meiner doch eher umfangreichen openHAB Anlage sind dabei allerdings allerlei allerlei Probleme aufgetreten, die verdammt schwer zu lokalisieren waren, da alles auf einmal umgestellt ist. Und bis dann erst einmal alles läuft steht das Haus erst einmal ein paar Tage lang (je nachdem wie viel Zeit ihr habt für die Migration) dumm da, was auch eventuelle Mitbewohner*innen nicht unbedingt erfreut.
Mit dem Erscheinen der finalen Version werde ich daher nun den zweiten Ansatz verfolgen und hier beschreiben: Das Update per Parallelinstallation. Das Prinzip ist ganz einfach: Es wird eine zweite openHAB Instanz aufgebaut und die bestehenden Inhalte werden nach und nach von der alten Version in die neue verlagert und dabei wird nach jedem Schritt getestet, dass immer noch alles funktioniert.
Die openHAB Entwickler haben für dieses Szeenario ein sehr nützliches Binding bereitgestellt: Remote openHAB. Damit können zwei (oder mehrere) openHAB Instanzen miteinander verbunden werden. Sollte eine Komponente noch nicht vollstänständig funktionieren unter openHAB 3 (was bei einem so großen Update immer mal vorkommen kann), dann kann einfach die alte openHAB 2 Instanz hierfür weiter verwendet werden. Auch ganz alte openHAB 1 Bindings (die mit Version 3 nun nicht mehr unterstützt werden) können so weiterverwendet werden.
Einen Nachteil hat die Methode allerdings auch (zumindest wenn ihr openHAB wie ich auf einem Raspberry laufen lasst und nicht per Docker o.ä.): Es wird ein zweiter Raspberry Pi benötigt, da beide Versionen parallel laufen. Erst wenn alles migriert ist kann dann der alte Raspberry abgeschaltet werden. Wer genug Smarthome Komponenten im Einsatz hat um eine umfangreichere openHAB Installation zu betreiben, hat aber vermutlich ohnehin immer den ein oder anderen Ersatz Raspi herumliegen oder die Teile ohnehin schon im Amazon Spar-Abo…
Installation der neuen openHAB 3 Instanz
Wenn ihr also auch diesem Ansatz folgen wollt, dann beginnt alles mit der parallelen Installation einer neuen, frischen openHAB 3 Instanz. Wie das geht beschreibe ich in diesem Beitrag hier.
Verbinden mit dem alten openHAB 2 System
Um die frische openHAB 3 Installation nun mit der alten openHAB 2 Installation zu verbinden ist das Remote openHAB Binding auf dem neuen openHAB 3 zu installieren:
Nach der Installation findet sich in der Inbox – die sich jetzt an einem Ort unterhalb der Things befindet – der alte openHAB 2 Server ein und kann übernommen werden:
Anschließend befindet es sich unter Things und die Items des bisherigen openHAB 2 Systems können als Channel dieses Things angesprochen werden:
Die Things aus dem alten openHAB System sind ebenfalls verfügbar und können über einen „Scan“ auf dem neu angelegten Remote Thing gefunden werden:
Achtung: Diese so herübersynchronisierten Things enthalten keine Channel. Sie dienen lediglich dazu, den Status den Things sowie die Trifgger Channel vom alten openHAB System auf das neue zu synchronisieren, so dass dort dann darauf reagiert werden kann und der Status in der Oberfläche zu sehen ist. Es werden nur die Statuswerte ONLINE, OFFLINE und UNKNOWN unterstützt, alles andere wird ebenfalls als OFFLINE angezeigt. Das sieht beispielsweise so aus:
Item basierte Aktionen müssen über die Synchronisierten Items ausgeführt werden, diese spiegeln exakt die Items des alten openHAB Systems wieder. Das Anlegen funktioniert im Tab „Channels“ des openHAB 2 Things. Im Beispiel unten habe ich die Items vorher per .items Datei angelegt, sie können aber auch bei dem Schritt in der Weboberfläche erstellt werden:
Die Statusevents des Items werden nun synchronisiert und auch Senden von Befehlen an das Item funktioniert wie die folgenden Logeinträge zeigen:
Schlusswort
Damit sind nun die beiden openHAB Systeme verbunden und es können nach und nach die Add-Ons auf dem neuen System eingerichtet und auf dem alten abgeschaltet werden. Da das je nach Haustechnik und Binding recht unterschiedlich abläuft gehe ich an dieser Stelle nicht weiter darauf ein. Wenn ihr konkrete Fragen habt, stelle sie mir gerne oder noch besser der allwissenden openHAB Community (Forum).
Ich freue mich über eure Kommentare, ob euch der Beitrag weitergeholfen hat. Schreibt auch gerne, wenn ihr Fragen habt oder doch etwas unklar geblieben ist. Oder wenn ihr aufbauend darauf spannende weitere Automatisierungs-Projekte umsetzen konntet 🙂
Freiberuflicher IT Berater, Open Source Entwickler und begeisterter Smarthome Nutzer. Das hier ist mein Braindump für Technikthemen, die mich beschäftigen.
Danke Eiko, hat mir sehr geholfen!
Hallo Eiko,
super Erklärung/Beschreibung. Ich bin genau an dem Punkt, wo ich OH2 nun mit OH3 remote verbunden habe. Wie ich nun beginne mit dem „Umzug“ hab ich noch keine Ahnung. Vielleicht kannst du mal eines exemplarisch erklären? Eventuell auch mit einer Rule Verbindung?
Danke
Hallo zusammen,
ich bin in der gleichen Situation wie Erwin und würde mich auch über den einen oder anderen Denkanstoß freuen. Außer den Things liegt bei mir noch alles in Dateiform vor und wurde auch so von mir per Visual Studio Code in OH2.5 gepflegt. Hierzu hätte ich auch eine konkrete Frage: Kann man die einzelnen items-Dateien Schritt für Schritt ins neue System importieren oder muss man die Items jetzt alle komplett neu aufbauen?
Kleines Update von mir:
Man kann seine ganzen Files weiterverwenden aber am Ende steht man wieder vor der Entscheidung wie bei OH2. Pflege ich alles über Dateien oder direkt in openHAB? Bei OH2 hatte ich die Things in OH2 direkt angelegt und den Rest über Files gemacht.
Ich denke, dass ich diesmal alles in OH3 direkt aufbauen werde. Ist zwar viel Arbeit aber nur so kann man von den neuen Features profitieren…
Hey Timo, ich hoffe meine Antwort an Erwin (s.u.) hilft dir auch ein Stück weiter. Ich persönlich pflege auch in OH3 immer noch alles außer den Things in den Dateien (.items, .rules, …) und finde das einfach viel übersichtlicher und schneller als über die UI. Die UI ist zwar besser geworden, aber gerade was z.B. das massenhafte Umbenennen, Kopieren etc. von Items angeht ist die dateibasierte Vorgehensweise meiner Meinung nach viel besser. Und zumindest mir ist nicht bekannt, was für Funktionen dadurch verloren gehen bzw. welche neuen Features davon abhängig sein sollten. Aber insgesamt ist es sicher einfach Geschmackssache, welchen Weg man bevorzugt.
Hey Erwin, wie aus dem OH3 die Items des OH2 genutzt werden können, ist unter „Verbinden mit dem alten openHAB 2 System“ beschrieben. Aber ich nehme mal an, das hast du gelesen. Wenn es dir um den Schritt der eigentlichen Migration geht (also nicht mehr über den Umweg OH3 > OH2 > Gerät), dann ist das eigentlich auch ganz intuitiv, aber auch etwas aufwändig:
1) Binding auf dem OH3 für das Gerät installieren
2) Things auf dem OH3 anlegen und konfigurieren
3) Items auf dem OH3, die bisher auf das OH2 Remote gezeigt haben, nun auf diese neu konfigurierten Things bzw. deren Channel zeigen lassen
Das geht beides sowohl über die Konfiguration per .items Datei als auch über die UI. Mit Dateien ist es natürlich leichter, weil man dann mehr aus dem OH2 einfach Copy&Pasten kann.