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:
- Z-Stick - Ein USB-Stick, welcher dann unter verschiedenen Betriebssystemen und Umgebungen angesteuert werden kann
- Z-Box - Eine fertige Hardware mit 500 Mhz Prozessor und Linux vorinstalliert
- RaZberry - Aufsteckmodul für das Raspberry Pi
- 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:
1 |
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:
- "http://192.168.100.145:8083" - Die IP Adresse des Raspberry Pi und der Port des Z-Way-Servers
- "/ZWaveAPI/Run/" - der Aufruf der API. Je nach Umgebung stehen auch noch andere zur Verfügung, uns soll erst einmal dieser genügen.
- "devices[4].instances[0].commandClasses[37].Set(255)" - "device" wird der Steckdose Automatisch zugeordnet beim Verbinden. Sichtbar auch in der Z-Way Weboberfläche. "instances" bleibt hier vorerst 0. "commandClasses" sind die Verschiedenen Parameter einer Z-Wave Komponente. Verschiedene Sensorwerte usw. haben ihre eigenen Register. In unserem Beispiel ist die Nr. 37 für Binärschalter (Ein-Aus) zuständig. Das ist einheitlich, egal von welchem Hersteller die Z-Wave zertifizierte Steckdose ist. Mit "Set" schalten wir die Steckdose hier ein. Es geht jeder Wert ungleich 0. In einem 8-Bit Register (2 hoch 8) ist dies aber der höchste Wert und macht daher am ehesten Sinn.
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 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:
1 2 3 4 5 6 7 |
"<strong>devices.4</strong>.instances.0.<strong>commandClasses.37</strong>.data.level": { "name": "level", "<strong>value": false</strong>, "type": "bool", "invalidateTime": 1410786473, "updateTime": <strong>1410786474</strong> }, |
"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!
Ich habe da eine Frage zu... wenn die Zustände gepollt werden, ist Echtzeit-Schalten damit nicht praktikabel oder? Ich meine, wenn man einen Schalter umlegt möchte man nicht unbedingt erst 10 Sekunden warten bis eine eigens definierte Aktion ausgeführt wird. Oder geht das doch irgendwie?
Hallo Patrick,
du hast komplett recht. Es soll erst einmal nur verdeutlicht werden, dass sich jmd. bei Z-Wave Gedanken über die Umsetzung gemacht hat. Es gibt z.B. die Möglichkeit Devices direkt zu assoziieren. Das geht selbst dann noch, wenn die Zentrale nicht verfügbar ist. Es gibt auch die Möglichkeit per JavaScript Werte "bei Änderung" zu aktualisieren. Das passiert dann auch in Echtzeit, ist aber schon deutlich aufwändiger. Hier ein Codeschnipsel aus der Doku von Z-Way:
9 zway.devices[3].SensorMultilevel.data[1].level.bind(function(){
10 debugPrint(’CHANGED\n’);
11 });
Gruß Daniel
Hallo!
Auch wenn der Artikel schon etwas älter ist, ist er im Moment ein ziemlich häufig geöffneter Tab bei mir in Firefox!
Habe vor ein paar Tagen mir das RPi 2 gekauft und nun dazu passend das RaZberry-Modul bestellt.
Jetzt bin ich wie hin und her gerissen mit welcher Software ich anfange.
Entweder FHEM oder die direkt auf das Modul zugeschnittene Z-Way Software.
Hat da jemand vielleicht einen Tipp?
Das Ding ist, dass FHEM sich echt gut anhört, mir aber auch eine "schöne" GUI (in Form einer iOS App) relativ wichtig ist.
Eigentlich wollte ich auf Fibaro setzen, aber direkt zu Einstieg finde ich die Hürde beim HC2 (noch) etwas zu hoch [HCL -> wenn schon (Fibaro) denn schon (HC2) Ausschluss!].
Naja um nicht abzuschweifen mir ist halt auch relativ wichtig, dass das System softwaremäßig nicht zu beschnitten ist.
Ich möchte selbst die möglichkeit haben kleinere Änderungen vorzunehmen und externe (nicht Z-Wave) Geräte wie Phillips Hue über API oä. einzubinden.
Liebe Grüße
Frank
Hallo Frank, also FHEM kenne ich nicht und habe nur gehört, dass hier wohl alles recht reibungslos läuft. Ich habe vor 3 Monaten mir dem Razberry angefangen und der Weg ist recht steinig. Viel lesen, viele Enttäuschungen und viele nicht kompatible Sensoren und Aktoren. Auch die Razberry Software ist alles andere als ausgereift und reibungslos anzuwenden. Bis dato habe ich gute Erfahrungen gemacht mit den Fibaro Schaltern und Dimmern. Schlecht Erfahrung gemacht mit Gen 5 Sensoren von Vision und Philio. Ich wollte unbedingt ausschließlich auch die Gen 5 Technologie im Batterie betriebenen Bereich setzen. Bis heute werden meine Sensoren nicht unterstützt. Willst du eine schnell funktionierendes System glaube ich Z-Wave ist noch nicht die Lösung. LG Thaui
Hey Thaui,
was für Software verwendest du da? Das RaZberry ist mit allen zertifizierten Z-Wave Komponenten kompatibel. By the Way, inzwischen ist auch die neue Oberfläche "Smart Home UI" als Download verfügbar. Gleiche Software wird auf der WD NAS laufen (http://siio.de/connected-home/z-wave-mini-usb-stick-verwandelt-wd-my-cloud-nas-in-smart-home-zentrale/)
Also ich nehme die Original Software vom Razberry um meine Devices zu integrieren und mein System läuft dann ausschließlich unter Domoticz. Da habe ich bisher die besten Erfahrungen gemacht. Läuft stabil und zuverlässige. Leider muss ich bei der Kompatibilität widersprechen. Da läuft bei weitem nicht Alles was Z-Wave zertifiziert ist. Der Gen5 Sensor von Vision ZD2102EU-5 oder der Philio PST02-1B lassen den Zway Server kalt.
Hi,
wie hast du denn die Domoticz Software parallel installiert?
Deaktivierst du Z-Way oder laufen beide gleichzeitig?
Ich habe aktuell Z-Way installiert und bin auf der Suche nach einer umfangreicheren Software-Lösung.
Danke und VG,
Torsten
Sehr schöner Artikel! Ich beschäftige mich seit etwa 5 Monaten mit dem Thema Smart Home. Da ich schon eine RPi habe, wird es wohl eine RPi-Razberry-Zentrale werden. Die Gründe: günstig, programmiertechnisch alles möglich und gute Kompatibilität. Z.B. Homee und Fibaro gefallen mir auch sehr gut, aber entweder zu teuer oder "softwaremäßig zu beschnitten". Bei Homee bin ich mir auch nicht sicher, ob es die noch in einem oder zwei Jahren noch gibt, obwohl im Moment alles sehr vielversprechend ist... Da möchte man einfach in das "Richtige" investieren und gut für die Zukunft gerüstet zu sein. Mit RPi und Razberry kann man sicherlich anfangen, ohne dabei Angst zu haben aufs "falsche Pferd" gesetzt zu haben.
VG
Alex
Alex ich sehe das ähnlich wie du, aber manchmal muss man eben warten bis das System so richtig läuft weil das Ein oder Andere noch nicht implementiert ist.. Habe bisher 8 Aktoren wie Fibaro Switches, Düwi Dimmer, Fibaro Dimmer, Stella Z Ventilsteuerung und 2 Switchplugs in Betrieb, nur die Sensoren funktionieren nicht. Somit ist eine brauchbares Smart Home System noch Zukunftsmusik.
Hallo,
wie bekomme ich denn Zugriff auf den Z-WAVE Stick under Windows?
Oder muss ich noch was einstellen?
Patrick
-d +t