Website-Icon Dein Smart Home Blog

Z-Way auf dem Raspberry - Die Software und ihre Möglichkeiten Teil1

Bild:http://www.z-wave.com/

z-wave logo

Z-Way ist der Name der Software, welche mit dem Z-Wave Modul oder auch transceiver Chip zusammenarbeitet. In erster Linie ist es eine Kommunikationsschnittstelle für das Z-Wave Netzwerk, welche frei zur Verfügung steht. Die Software wurde bereits im März 2011 von der Z-Wave Alliance lizenziert und hat sich seit dem zu einer stabilen und auch Einsteigerfreundlichen Software entwickelt. Wir haben bereits HIER die Installation und die grundlegenden Bausteine der Software aufgezeigt und wollen nun etwas weiter ins Detail gehen. Vor allem soll uns hier einmal die Möglichkeit der Automatisierung interessieren und auch der Umgang mit der sogenannten API. Was das ist und wie uns diese weiter hilft, will ich hier klären.

Z-Way im Überblick

Aktuell wird Z-Way in verschiedenen Varianten zugänglich gemacht:

  1. Z-Stick - Ein USB-Stick, welcher dann unter verschiedenen Betriebssystemen und Umgebungen angesteuert werden kann
  2. Z-Box - Eine fertige Hardware mit 500 Mhz Prozessor und Linux vorinstalliert
  3. RaZberry - Aufsteckmodul für das Raspberry Pi
  4. Z-Cloud - Die Software in einer Cloud. Zuhause wird dann nur die Hardware (z.B. Stick) benötigt und eine minimale Softwareanbindung zum Kommunikationsaufbau

Alle Varianten bieten Vor- und Nachteile, alle Varianten kosten Geld. Die Z-Wave Firmware, welche auf den Modulen läuft wird von der Z-Wave Alliance verkauft und ermöglicht erst die Anbindung an die Z-Way Software. Wenn man sich aber die Preise fertiger Zentralen anschaut, bekommt man hier doch einen recht attraktiven Einstieg in die Welt von Z-Wave geboten.

Was ist diese API von Z-Way?

DIe API ist die sogenannte Programmschnittstelle für das Z-Wave Netzwerk. Solange der Z-Way-Server auf dem Raspberry läuft, können Z-Wave Komponenten darüber gesteuert werden. Der Sinn ist, das Z-Wave nun ohne großartige Programmierkenntnisse in jede andere Software Lösung eingebunden werden kann. Wenn also eine beliebige Zentrale die Möglichkeit bietet, diese API aufzurufen, kann diese dann auch Z-Wave Komponenten steuern.

Wir schauen uns ein Beispiel an:

http://192.168.100.145:8083/ZWaveAPI/Run/devices[4].instances[0].commandClasses[37].Set(255)

Dieser Aufruf im Browser schaltet eine Steckdose an. Dafür muss ich die URL nur ausführen. Es müssen keine Schalter gedrückt werden. Das Gerät muss nur in der Lage sein, diesen Aufruf auszuführen. Für dieses Beispiel würde auch ein 8 Mhz AVR Controller im wert von 3€ genügen, wenn er richtig programmiert wird.

Im Detail:

Wir haben uns bereits virtuelle Module in anderen Zentralen angeschaut. Damit ist es ein Leichtes solche zu erstellen.

Was gibt es alles für Möglichkeiten der API Steuerung?

Es gibt natürlich eine Dokumentation der kompletten Z-Way Schnittstelle, diese kann man HIER als pdf downloaden. Wer noch keine Lust hat ein über 100 Seiten langes englisches Dokument zu studieren, dem möchte ich hier eine andere Möglichkeit zeigen.

Steuern von Aktoren

Das Auslesen der HTTP Kommandos für Z-Way via grafischer Oberfläche

Das schalten von Geräten geht, wie wir oben gesehen haben, sehr einfach via HTTP Aufruf. Jede Linux basierte Plattform beherrscht diese und damit eigentlich auch fast jede Zentrale, wenn es der Hersteller zulässt. Man könnte den Faden weiter spinnen und auch NAS Systeme oder Router zur Steuerung verwenden. Die Hardware ist ausreichend und würde mit dem Z-Wave Gateway gute Arbeit leisten. Wie aber kommen wir nun an die richtigen Kommandos? Gerade wenn wir 10 oder auch 20 verschiedene Geräte integrieren, könnte es kompliziert werden. Z-Way kommt von Haus aus mit einer Grafischen Oberfläche, in welche die API integriert wurde. Wie man Komponenten einbindet, habe ich HIER gezeigt. In dieser Oberfläche können wir Aktoren auch über das Menü Gerätesteuerung -> Aktoren bedienen. Das nutzen wir aus und zeichnen einfach mit dem Browser auf, was genau passiert. Beim Drücken des "EIN" Buttons für eine entsprechende Steckdose wird genau das passende Kommando ausgeführt, welches wir später auch verwenden können. Wie das im Detail geht, habe ich schon einmal HIER erklärt.

Den Status auslesen - ein Ansatz

Etwas komplizierter, aber auch interessanter wird es beim Auslesen der Status verschiedener Sensoren. Wie oben können wir nicht vorgehen, das hat einen einfachen Grund: Wenn wir den Wert eines Sensors erfassen, was durchaus auch via HTTP möglich ist, sehen wir den aktuellen Zustand. Das ganze passiert in einem vorgegebenen Intervall, welches bei HTTP größer 10 Sekunden sein sollte. Wenn nun in diesen 10 Sekunden die Tür auf und wieder zu gemacht wird, bemerken wir auf diese Weise KEINEN Unterschied. Das wäre fatal, denn das Licht im Treppenhaus würde nicht angehen. Noch schlimmer: Der Alarm löst nicht aus, wenn der Einbrecher die Tür vorbildlich und schnell wieder verschließt!

Z-Way bietet eine Möglichkeit diesen Umstand zu umgehen. Es gibt die Möglichkeit alle Änderungen seit Zeitpunkt X aufzulisten. Das spart Datenverkehr und nun wird auch kein Event mehr verpasst. Das Ganze funktioniert wie folgt:

"http://192.168.100.145:8083/ZWaveAPI/Data/0" -> Zeigt uns alle Änderungen seit dem Start. Das sind, je nach Anzahl der Komponenten, natürlich sehr, sehr viele! Die Liste umfasst auch interne Änderungen in der Firmware und diverse Änderungen, welche beim Starten der Z-Wave Hardware auftreten. Wenn wir die "0" am Ende nun in den Aktuellen UNIX-Zeitstempel, oder besser 20 Minuten früher setzen, sehen wir die letzten Änderungen. Den Unix-Zeitstempel kann man sich HIER berechnen.  Uns interessiert bei unserer Steckdose natürlich der Wert, also ob AN oder AUS geschaltet. Die "commandclass" ist auch wieder "37", die gleich wie auch bei der Steuerung. Die passende Ausgabe sieht wie folgt aus:

    "devices.4.instances.0.commandClasses.37.data.level": {
      "name": "level",
      "value": false,
      "type": "bool",
      "invalidateTime": 1410786473,
      "updateTime": 1410786474
    },

"devices.4" ist die Zuordnung bei der Vernetzung, "commandClasses.37" das entsprechende Register. Aktuell steht es auf ""value": false", die Steckdose ist also aus. Die Letzte Änderung laut Unixzeit: 1410786474 -> "15.09.2014 15:07:54". Beim entwickeln einer Software oder eines LUA Scripts für eine Zentrale kann man sich also den Wert "false" beim Aufrufen ausgeben lassen und den Zeitstempel speichern. Wenn in nun erneut abfrage, würde ich prüfen, ob der Zeitstempel größer geworden ist. Wenn nicht, gibt es keine Rückmeldung oder auch "Wert nicht geändert" wenn doch, dann den aktuellen Wert. Es reicht also diesen Aufruf aller 10 Sekunden auszuführen, denn wenn sich in diesen 10 Sekunden etwas geändert hat, bekommen wir es angezeigt.

Zusammenfassung

Wir können nun also über den Z-Way Gateway, das Razberry Modul, Komponenten schalten und sinnvoll auslesen. Das ist erst einmal zu 95% alles, was man für eine sinnvolle Hardware Implementierung bei Heimautomatisierung braucht. Wir brauchen uns hier auch nur damit beschäftigen, denn Z-Way übernimmt den Rest. Ob das Signal z.B. ankommt überprüft die Firmware selbst und wir brauchen nur noch "AN" oder "AUS" zu schalten. Was nicht geht: Eigene Hardware entwickeln. Z-Wave ist ein geschlossener Standard und wer nicht der Z-Wave Alliance beitreten möchte, hat keine Chance auf den "Low-Level" Kommunikationsstandard zuzugreifen.

Z-Way bietet auch noch eine weitere Komponente: Die Automatisierung. Es können virtuelle Module erstellt werden und Assoziationen auf Softwareebene programmiert werden. Sprich: Die Automatisierung der bereits gezeigten Steuerung. Wie das aussieht und ein paar Möglichkeiten gibt es dann in Teil 2. 

Also bleibt dabei!

Die mobile Version verlassen