Du bist ja lustig... openHAB3 ist schon seit über einem Jahr stable draußen, und Du hast davon noch nichts mitbekommen?
Vorweg: Was hast Du nun tatsächlich laufen, Deine Angaben sind teils widersprüchlich (bzw. ich steige nicht durch)... Pi4 oder Pi3?
Zu 1.: Die drängendste Frage ist, welchen Stand Dein OS hat. Seit ~ Juni ist debian bullseye die stable Version, Raspberry Pi OS für den Pi4 basiert auf bullseye, weil der Pi4 mit buster nicht läuft (der Kernel passt nicht).
Weiter wäre zu klären, wie Dein System bootet. Tut es das direkt von SSD? Wie hast Du das damals eingerichtet?
1.a: Ja, ein Upgrade sollte eigentlich normal funktionieren. Aber vor einem Sprung der Major Version (eigentlich auch bei kleinen Updates) sollte man seinen Datenbestand sichern. Das bezieht sich ausdrücklich auch auf Daten auf "unbeteiligten" Partitionen. Das ist einer der Gründe, warum eine große SSD eher suboptimal ist.
Was die Räume betrifft (wäre besser gewesen, Du hättest Deine Fragen etwas strukturiert...

) so macht openHAB nichts selbst. Das gesamte Thema lässt sich unter dem Begriff semantic Model zusammenfassen. Man kann Items über das semantic Model organisieren. Man muss das nicht tun, kann es aber jederzeit machen und auch ändern. Das Konzept des semantic Model baut auf bestehenden Strukturen auf und es gab auch unter openHAB1(!) schon die Möglichkeit, seine Items nach dem semantic Model anzulegen. Nur gab es den Begriff dafür nicht und man hatte dadurch nur sehr begrenzt Vorteile.
1.b: Das Hauptproblem ist das OS. Der Pi3 verwendet andere Hardware als der Pi4. Mit einem aktuellen Image (Raspberry Pi OS lite oder openHABian) kannst Du Glück haben, aber das ist nicht garantiert. Ich würde eher davon abraten.
1.c:? Das funktioniert exakt so, wie auch schon unter openHAB2. Du kannst unter /etc/openhab/ in der gewohnten Ordnerstruktur die Konfiguration über Textdateien erledigen oder die Main UI verwenden. Du kannst beide Verfahren mischen, auch wenn davon eher abzuraten ist. Es ist exakt wie schon bei openHAB2 so, dass Daten, die in der UI angelegt werden, nicht in den Textdateien auftauchen. Umgekehrt taucht zwar die Konfiguration der Textdateien in der UI auf, ist dort aber nur lesbar (die Einträge sind dann mit einem Schloss markiert und lassen sich über die UI nicht speichern).
Dokumentiert ist das ganz
hervorragend.
2.: Du hast zwei getrennte openHAB Systeme auf zwei getrennten Rechnern. Erst mal haben die beiden nichts miteinander zu tun. Je nach verwendeten Bindings und Hardware kann es sogar sein, dass beide Systeme parallel auf alles zugreifen können. Wenn openHAB korrekt konfiguriert ist (das heißt, jeder Schaltvorgang wird mit einem passenden Status vom Bus beantwortet), sollten sogar beide Systeme jederzeit korrekt arbeiten, auch nebeneinander. Änderst Du in dem einen System eine Schaltstellung, so wird das auf dem anderen System als Statusänderung wahrgenommen und umgekehrt. Einzig Rules könnten hier problematisch sein, je nach Funktionsweise und Aufgabe der Rule.
3. Wenn Du vorher ein Backup machst, kannst Du das wieder einspielen.
4. Es gibt eigentlich nur zwei Dinge, solange Du die Rules identisch zu openHAB2 nutzt (also über rules Dateien in /etc/openhab/rules/).
Das eine ist eine Änderung, die impliziten Variablen betreffend. in openHAB2 gibt es die implizite Variable
triggeringItem, welche ein Objekt darstellt, welches dem triggernden Item der Rule entspricht. Diese implizite Variable steht in openHAB2 immer zur Verfügung, solange die Rule durch ein Item getriggert wurde. Unter openHAB3 steht triggeringItem nur noch zur Verfügung, wenn die Rule durch den Trigger
Member of... getriggert wurde. Wurde die Rule hingegen durch
Item ... getriggert, so steht die (neue) implizite Variable
triggeringItemName zur Verfügung, welche auch nur den Namen des Items als String enthält. (sehr schade, damit sind dann dort keine Konstrukte wie
triggeringItem.state möglich)
Der zweite (größere) Punkt ist die Umstellung von Joda Time auf JavaTime. Beide Varianten nutzen now(), aber danach wird es anders. Die Unterschiede sind teilweise klein (z.B. .getHour statt getHourOfDay), teilweise aber auch schwerwiegend, weil eine Funktion so überhaupt nicht oder nur in völlig anderer Form zur Verfügung steht. Mir ist leider keine direkte Gegenüberstellung der beiden Bibliotheken bekannt, was konkrete Funktionen betrifft. Konzepte kann man hier vergleichen:
https://blog.joda.org/2014/11/convertin ... atime.html und
https://www.it-swarm.com.de/de/java/unt ... 046710409/ macht das in Textform.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet