openHAB

Als Middleware setze ich auf openHAB.

Kurz zusammengefasst dient es dazu alle unterschiedlichen Bussysteme (KNX,Funk,USB,Serial,Netzwerk etc) über "Bindings" anzusteuern. Über eine Rulesengine können selbst komplexe Steuerungsszenarien abgebildet werden. Es können Daten erfasst, protokolliert und grafisch aufbereitet werden. Visualisiert wird das ganze entweder über eine Weboberfläche oder über Android/iOS Apps. Zusätzlich gibt es auch noch eine REST API zum System.

Von der technischen Seite her ist es ein in Java geschriebenes auf OSGI basierenden System, welches seit kurzen als Eclipse Projekt akzeptiert wurde. In meinen Augen ist es das mit Abstand sauberste und zukunftsträchtigste System.

Meine aktuellen Konfigurationsdateien (Items, Rules, Sitemaps etc.) und Shell-Scripte finden Sie im Downloadbereich.

Migration zu Openhab 2.x

Nach ersten Versuchen vor knapp einem Jahr habe ich in meinem letztem Urlaub meine komplette OpenHab 1.x Installation auf OpenHab 2.x migriert. Openhab 2 bietet insgesamt einige sehr interessante neue Dinge an. z.B. eine komplett überarbeitete Oberflächen, Device Discovery, Performance Improvements (z.b. in Verbindung mit Seriellen Schnittstellen), mehr Bindings und der Einführung von "Things" als eine weitere Abstraktion.

Ein guter Einstieg ist schonmal die Seite Migration from openHAB 1.x to openHAB 2

Zusätzlich bin ich auf einige Stolpersteine gestoßen welche ich im nachfolgenden Auflisten möchte um anderen eventuell die Migration bzw. Fehlersuche zu erleichtern.

  • In den Rules "Uninitialized" zu NULL geändert
  • Mein Iconset komplett auf lowercase umgestellt
  • Die Verwendung einer map translation in Verbindung mit %d wird nicht mehr unterstützt. Eine Änderung zu %s löst das Problem. Die Schwierigkeit war das man nahezu keinerlei Fehlermeldung erhalten hat. Im Anschluss müssen aber noch die map files geändert werden.
  • Openhab2 ist wesentlich striker was das rule parsing angeht. Dadurch sind viele kleinere Syntaxfehler aufgefallen die vorher einfach übergangen wurden
  • Primitive types werden in Rule-Functionsparametern nicht mehr unterstützt
  • Entfernen von wildcard imports in den Rules. In allen Fällen hat das einfache löschen der Zeile geholfen da die Rules inzwischen vieles automatisch importieren
  • Migration des s300th Bindings. Ich konnte es einfach vom OpenHab 1.x addons Ordner rüber kopieren
  • Der Trigger "received command" verhält sich jetzt anders. Er wird getriggert wenn das Item ein Command empfängt aber noch bevor der State des Items geändert wird. Braucht man diesen State sollte man die Variable "receivedCommand" benutzen