EM2019WSP11/Grundlagen

Aus Verteilte Systeme - Wiki
Zur Navigation springen Zur Suche springen

openHAB

Die openHAB-Plattform stellt das zentrale Element dieses Projektes dar und hat das Ziel verschiedene Technologien wie Z-Wave oder Zigbee, die für die Heimautomatisierung genutzt werden, komfortabel nebeneinander zu verwenden. Dabei sind Nutzer nicht auf fertige Produkte wie beispielsweise die Hue-Lampen von Philips beschränkt, welche mit wenigen Mausklicks eingebunden werden, sondern es können über MQTT auch individuelle, komplexere Lösungen genutzt werden. Zur Steuerung kann im Browser von allen Geräten im Netzwerk auf verschiedene Tools wie die Paper UI oder den Event Log zugegriffen werden.

Raspberry Pi

OpenHAB kann auf vielen verschiedenen Systemen installiert werden, wobei sich dafür besonders ein Raspberry Pi anbietet. Normalerweise soll ein Heimsystem rund um die Uhr laufen, um immer genutzt werden zu können, wodurch der Stromverbrauch durchaus eine Rolle spielt. Dadurch ist ein Raspberry Pi gegenüber einem üblichen Desktop-PC deutlich im Vorteil. Auch beim Platzverbrauch macht sich dies bemerkbar. Für die nötigen Aufgaben bringt der Pi genug Leistung mit und kann alles problemlos erledigen. Aufgrund der großen Beliebtheit dieser Plattform wird von openHAB ein Image angeboten, das installiert werden kann und ein komplettes Betriebssystem bereitstellt. Es handelt sich dabei um openHABian, welches komplett über die Kommandozeile bedient werden muss, der Zugriff erfolgt dabei über SSH.

MQTT

Bei MQTT handelt es sich um ein beliebtes Publisher-/Subscriber-Protokoll. Dabei werden alle Nachrichten im Topics organisiert, unter denen zum einen ein Client seine Nachrichten veröffentlichen kann. Zum anderen können die Clients Topics abonnieren, an denen sie unteressiert sind bzw. dessen Informationen benötigt werden. Ein Client kann dabei mehrere Topics auf einmal abonnieren und ein Topic kann gleichzeitig von mehreren Clients abonniert werden. Durch die zuverlässige Zustellung von Nachrichten an alle Abonnenten kann damit sehr bequem die Kommunikation mehrerer Teilnehmer organisiert werden. Zur Organisation wird ein Broker benötigt, mit dem sich alle Clients verbinden und der die Zustellung der Nachrichten organisiert. Die Übertragung kann sowohl verschlüsselt als auch unverschlüsselt stattfinden.

Z-Wave

Bei Z-Wave handelt es sich um eine drahtlose Kommunikationstechnologie, mit der Sensoren und andere eingebette Systeme angesteuert werden können. Der Fokus liegt dabei auf der Interoperabilität der Produkte verschiedener Hersteller, dessen problemloses Zusammenspiel garatiert ist. Die Geräte werden vor ihrer Veröffentlichtung darauf geprüft und zertifiziert. Es gibt mittlerweile mehrere tausend unterstützte Geräte von vielen verschiedenen Herstellern. Es ist sehr einfach diese Geräte in openHAB einzubinden, da durch die Interoperabilität jedes die gleiche Schnittstelle nutzt. Dafür gibt es ein Binding, welches nach der Installation alle Geräte in Reichweite erkennen kann, wenn das System über eine Bridge verfügt.

Zigbee

Zigbee ist ein ähnlicher Standard wie Z-Wave, wobei im Detail schnell einige Unterschiede auffallen. Beispielsweise wird die Einhaltung des Standards hinsichtlich der Interoperabilität nicht so stark geprüft, weshalb es in den einzelnen Implementierungen durchaus einige Unterschiede geben kann. Das hat zur Folge, dass die Einbindung der Geräte nicht immer so einfach wie bei Z-Wave ist. Bei vielen Geräten kann zwar das entsprechende Binding verwendet werden, oft ist dies aber auch nicht möglich. Daher bieten viele Hersteller für ihre Produktreihe eigene Bindings an, über die das entsprechende Gerät dann mit wenig Arbeit eingebunden werden kann. Allerdings gibt es auch Geräte auf die keine der beiden Lösungen zutrifft. Hier kann aber das Projekt Zigbee2mqtt Abhilfe schaffen.

Zigbee2mqtt

Um Zigbee-Geräte einbinden zu können, die nicht vom offiziellen Binding unterstützt werden und deren Hersteller auch keine Lösung bereitstellt, kann Zigbee2mqtt genutzt werden. Wie der Name bereits verrät werden die entsprechenden Zigbee-Signale eines Gerätes in MQTT-Nachrichten umgewandelt. Dafür braucht das System Zugriff auf eine Bridge, die Zigbee-kompatibel ist. Es wird ein CC2531 USB-Stick verwendet, der mit der vom Entwickler bereitgestellten Firmware geflasht wird. Außerdem braucht der USB-Stick noch Zugriff auf einen MQTT-Broker, über den die Nachrichten veröffentlicht werden.

Jython

Jython ist eine Programmiersprache, die die beliebten Sprachen Java und Python als Vorbild nimmt, um deren Konzepte zu vereinen. Zum einen ist dies die Java Virtual Machine (JVM) durch die Java-Programme prinzipiell plattformunabhängig entwickelt werden können. Aus dem vom Programmier geschriebenen Code wird kein Maschinencode sondern Java Byte Code generiert der im der JVM lauffähig ist. Dadurch muss für jede Plattform nur einmal die JVM angepasst werden, um anschließend jedes Java-Programm auf dieser ausführen zu können. Auch Jython generiert Java Byte Code, der auf jeder von openHAB unterstützten Plattform ausgeführt werden kann. Im Gegensatz zu normalen Python-Programmen wird der Code kompiliert statt interpretiert und kann dadurch deutlich schneller und ressourcenschonender ausgeführt werden. Das andere wichtige Konzept ist die intuitive und angenehme Syntax von Python, die zum Einsatz kommt. Dies macht es dem Anwender möglich in wenigen Zeilen Abläufe zu definieren, die das Zusammenspiel der einzelnen Geräte regeln. Bei der von openHAB eingesetzten JSR223-Scripting-Engine werden in der Regel eventbasierte Skripte geschrieben.