whizzosoftware / WZWave

A native Java library for interfacing with Z-Wave PC controllers
Eclipse Public License 1.0
33 stars 22 forks source link

Build Status Coverage Status

Overview

The goal of this project is to create a Java-native, open-source library for controlling Z-Wave PC controllers.

Z-Wave is a wireless protocol used for home automation. It use low-power RF to control smart devices such as lights, power outlets, thermostats and more. A PC controller (e.g. a USB dongle) provides applications a gateway to the wireless Z-Wave device network. More information can be found at this Wikipedia article.

WZWave was primarily created to add Z-Wave support to the open source Hobson automation hub.

Why Z-Wave?

The Z-Wave alliance has over 250 independent manufacturers as of 2014 (source: Wikipedia) including big names like GE, ADT, Ingersoll-Rand and Trane. The smart devices are relatively inexpensive, readily available and interoperable between manufacturers (something that can't be said for some other wireless home automation technologies out there).

Why WZWave?

The biggest drawback with Z-Wave is the PC controller serial protocol is not freely available. ~~To obtain official information requires signing an NDA and paying a hefty fee to get the Z-Wave SDK. As I understand it, software developed under the NDA cannot be made freely available.~~ Hence the need for projects like this.

Update: Sigma Designs has made a good portion of the Z-Wave API public and available without requiring an NDA. It is available from the Z-Wave Public Specification website.

In my research, I was unable to find any native Java libraries that would interface with a Z-Wave controller. Granted, there were libraries that used JNI to wrapper the excellent open-zwave library but that meant deferring most of the work to a binary library. Thus, WZWave was created to be a fully Java-native solution.

WZWave was created using a combination of studying online resources, studying the open-zwave project as well as copious amounts of reverse engineering.

Note: The project is not affiliated or endorsed by Sigma Designs and only publicly available resources were used in its creation.

Status

WZWave is still very early days and is under active development. Only a limited subset of devices have been tested but support will continue to grow over time.

I encourage anyone that wants to get involved to please do so. The project really needs developers to get involved to help increase robustness and device support!

Please see the project's wiki page for more information.