Umstellung openHAB 2 auf 3.0.1 – Tipps & Tricks

Die letzten Wochen habe ich mich mit der Umstellung auf openHAB 3.x beschäftigt. Die erste Idee war eine „schleichende Umstellung“ per Remote openHAB Binding. Diesen Pfad habe ich dann wegen der Gesamtumstellung und dem Hardwarwechsel auf einem neuen Raspberry Pi 4 doch ausgeschlossen. Es war für mich einfacher beide Systeme parallel zu betreiben und Schritt für Schritt die notwendigen Konfigurationen zu übernehmen.

Den Aufwand der kompletten Übernahme und des kompletten Refactorings unserer eingesetzten Systeme habe ich dann doch etwas unterschätzt. Wir hatten noch viele openHAB 1.x Elemente im Betrieb, die nicht mehr mit der neuen Version kompatibel sind.

Der erste große Tipp: Im Idealfall gleich vorab die openHAB 2.x Systeme um die 1.x Bindings „bereinigen“.

Ich habe dann gleich auf auf openHAB 3.0.1 aktualisiert. Die Release Notes zur 3.0.1 findet ihr hier.

Ich hatte erst openHAB 3.0 im Testbetrieb und habe dann ca. 6 Wochen eine Testphase für die Umstellung aller Funktionen aus openHAB 2.x immer mal Abends und nebenbei vollzogen. Es wurden alle bestehenden Funktionen noch einmal kontrolliert und vor der Übernahme auf Notwendigkeit bzw. Weiterverwendung geprüft. Über die Jahre sammeln sich doch einige Altlasten an. 🙂

Der zweite große Tipp: Aufräumen wo es geht und nicht genutzte Funktionen aus dem Gesamtsystem entfernen.

Übernahme unserer Funktionen

  1. Die Persistence ist jetzt im Standard dabei d.h. alle Items werden langfristig in der rrd4j Round-Robin-Database gespeichert. Die Übernahme der gespeicherten Datenbankdateien geht einfach per Copy & Paste.
  2. Die KNW-Umstellung von 1.x auf 3.x hat am meisten Zeit benötigt. Wir haben im eine KNX-Installation vorhanden. Da hier etwas mehr Aufwand in der Umstellung notwendig war, habe ich das etwas länger vor mir hergeschoben. Mit ruhigen 2 Std. und etwas Konzentration war es aber dann doch nicht so aufwändig. Ich habe mich an diesen Umstellungspfad gehalten.
  3. Das Amazon Echo Control Binding verwenden wir recht intensiv. Hier hatten wir wegen diverser Umstellungen immer noch den SnapShot von 2.x im Einsatz. Jetzt hat der Wechsel auf die Release Version einfach funktioniert.
  4. Die Hue Emulation mit openHAB 3.x ist für Alexa / Amazon zwingend notwendig. Das hier jetzt NGINX auf Port 80 benötigt wird war mir unklar. Da hab ich etwas länger gesucht 🙂
  5. MQTT musste ich nur von 2.x auf 3.x umziehen. Aber man benötigt jetzt einen externen MQTT-Broker. Ich habe also auf Mosquitto gewechselt, da der „Embedded“ nicht mehr vorhanden ist.
  6. Das Weather-Binding gab es auch nicht mehr. Hier habe ich auf  Darksky-Binding umgestellt.
  7. Das FritzBox-Binding war auch noch aus alter Welt. In der neuen Welt benötigt man jetzt das TR-064-Binding und AVM FRITZ! Binding.
  8. Das CalDAV-Binding aus 1.x ist auch nicht mehr vorhanden – auf iCalendar-Binding kann man einfach umstellen

Fazit der Umstellung

Für die Umstellung hatte ich viele kleine Zwischenschritte und aufwändige Tests wegen meinem Umzug und dem kompletten Refactoring geplant. Für die meisten sollte das Update ohne Hardwarewechsel direkt und einfach möglich sein.

Viele Bindings und Funktionen die ich nicht explizit erwähne gingen sehr schnell und einfach bei der Umstellung.

Beim Einsatz von alten 1.x-Funktionen (Legacy-Bindings) sollte man auf alle Fälle vorab den Aufwand beim Wechsel auf openHAB 3.x investieren.

Mittlerweile auch schon wieder neue Erweiterungen eingebaut:

  • Tankerkönig mit Telgram-Anbindung
  • Speedtest des Glasfaseranschlusses im Up- und Download

Von den neuen openHAB 3.x Funktionen habe ich noch wenig genutzt. Mich interessiert sehr das neue „Model“ und die verbesserte Visualisierung. Habt Ihr das schon im Einsatz?

6 Kommentare
  1. Avatar
    Flo sagte:

    Hallo Reinhard,

    hast du die Hue Emulation dann nur mit der Basis Config durchgeführt?
    Bei mir gehts soweit, aber ich habe auch im openHAB Forum deine Fragen entdeckt,
    – dass bei dir die Frage bzgl. 3.0.0 oder 3.1 Snapshot offen war. Was hast denn Final gewählt? Ich hab 3.0.1 laufen.
    – 16:A4:F3:xx: openHAB Hue Emulation (192.168.178.xx), war das der Fehler? Wird nämlich bei mir auch nicht ganz angezeigt.
    – der Service ist bei mir auch als „service not registered“. Spielt das eine Rolle?

    Wäre nett, wenn du mir Infos zukommen lassen könntest, was genau bei dir unter 3.x wieder zur einwandfreien Funktionalität führte.

    Gruß Flo

  2. Reinhard Eidelsburger
    Reinhard Eidelsburger sagte:

    Hallo Flo,

    ich habe die HueEmulation 3.0.1 bei mir im Einsatz (und keinen Snapshot). Bei mir war der Fehler das NGINX auf Port 80 nicht installiert war (da habe ich länger gesucht).

    Den Teil hatte ich in der Dokumentation übersehen: https://www.openhab.org/addons/integrations/hueemulation/

    Funktionieren die folgenden Aufrufe bei dir:
    http://IP/api/status
    http://IP/description.xml

    Die haben bei mir nicht funktioniert.

    Beim Start von openHAB 3 bekomme ich noch Fehlermeldungen wenn sich die HueEmulation auf falsche IP-Adressen verbinden will (das habe ich noch nicht lösen können – liegt wohl am Betriebssystem). Wo bekommst du „service not registered“?

    Vielleicht reichen die vorherigen Infos schon oder du schickst mal ein Log durch …

  3. Avatar
    Flo sagte:

    Hallo Reinhard,

    danke für deine Antwort.
    Ich habe nochmal etwas rumprobiert, aber mir ist vieles noch nicht klar.

    Ich habe ebenfalls NGINX installiert und unter etc/nginx/sites-enabled die Default Datei mit einer Datei names openhab ersetzt.
    Der Inhalt ist folgender:
    server {
    listen 80;
    location / {
    proxy_pass http://localhost:8080/;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }
    }
    1. Frage:
    NGINX ist auf dem OpenHABian RasPi installiert. Muss ich das „localhost“ nun umbenennen in openhabiandevice:8080? Unter openhabiandevice:8080 erreiche ich meine openHAB Konfiguration.

    2. die beiden Seiten „http://IP/api/status“ und „http://IP/description.xml“ kann ich nur erreichen wenn ich den Port mit :8080 ergänze. Kann es daran liegen, dass NGINX erst manuell nach einem Reboot gestartet werden muss? „sudo systemctl start nginx“ klappt allerdings nicht… 🙁

    ● nginx.service – A high performance web server and a reverse proxy server
    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Tue 2021-03-30 18:08:49 CEST; 26s ago
    Docs: man:nginx(8)
    Process: 1710 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)

    Mar 30 18:08:49 openHABianDevice systemd[1]: Starting A high performance web server and a reverse proxy server…
    Mar 30 18:08:49 openHABianDevice nginx[1710]: nginx: [alert] could not open error log file: open() „/var/log/nginx/error.log“ failed (2: No such file o
    Mar 30 18:08:49 openHABianDevice nginx[1710]: 2021/03/30 18:08:49 [emerg] 1710#1710: open() „/var/log/nginx/access.log“ failed (2: No such file or dire
    Mar 30 18:08:49 openHABianDevice nginx[1710]: nginx: configuration file /etc/nginx/nginx.conf test failed
    Mar 30 18:08:49 openHABianDevice systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
    Mar 30 18:08:49 openHABianDevice systemd[1]: nginx.service: Failed with result ‚exit-code‘.
    Mar 30 18:08:49 openHABianDevice systemd[1]: Failed to start A high performance web server and a reverse proxy server.

    Kannst du vielleicht beschreiben wie du bei der Installation von NGINX vorgegangen bist? Muss danach noch irgendein Kommando ausgeführt werden?

    Danke vorab!
    Gruß Flo

  4. Reinhard Eidelsburger
    Reinhard Eidelsburger sagte:

    Hallo Flo,

    meine default-Datei sieht so aus:

    server {
    listen 80;

    location /api {
    proxy_pass http://localhost:8080/api/;
    }

    location / {
    proxy_pass http://localhost:8080/;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }
    }

    zu 1.) Müsste so passen, siehe meine obige Konfiguration.

    zu 2.) Das muss funktionieren, ansonsten hat die HueEmulation bei mir nicht funktioniert. Unter /var/log/nginx sind die Log-Dateien von NGINX – vielleicht steht da was. Der Start des Daemon muss ja auf alle Fälle funktionieren.

    Ich habe die Installation wie folgt vorgenommen:

    – sudo apt-get update && sudo apt-get install nginx
    http://IP/ – Aufruf muss möglich sein
    – Konfiguration default vornehmen (siehe oben)
    – sudo nginx -t (Konfiguration testen)
    – sudo service nginx restart

  5. Avatar
    Flo sagte:

    Hallo Reinhard,

    besten Dank für deine Hilfe!
    Ich habe die Konfiguration von dir übernommen. Etwas komisch war, dass ich ja die Probleme hatte NGINX zu starten…
    Dein Hinweis: „Unter /var/log/nginx sind die Log-Dateien von NGINX – vielleicht steht da was“ brachte die Lösung.
    Die war prinzipiell recht einfach. Bei mir gab es weder den Ordner noch die beiden Log Dateien. Diese habe ich dann erstellt. Ab dann funktionierte auch der Restart und die beiden Abrufe:
    http://IP/api/status
    http://IP/description.xml

    Dann habe ich den Hue Emulation Service gestartet und die Geräte wurden sofort gefunden!

    Besten Dank nochmals! 🙂

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.