Skip to content
This repository

A daemon exposing the OpenZWave API via Apache Thrift (and some useful tools)

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 gen-cpp patch dummy ping() method to squelch useless message March 31, 2013
Octocat-spinner-32 gen-csharp Removed unnecessary _new files. (original patch worked after installi… March 23, 2013
Octocat-spinner-32 gen-erl Removed unnecessary _new files. (original patch worked after installi… March 23, 2013
Octocat-spinner-32 gen-go Removed unnecessary _new files. (original patch worked after installi… March 23, 2013
Octocat-spinner-32 gen-js Removed unnecessary _new files. (original patch worked after installi… March 23, 2013
Octocat-spinner-32 gen-perl Removed unnecessary _new files. (original patch worked after installi… March 23, 2013
Octocat-spinner-32 gen-php Recreated patch for ozw_types.h due to failure March 23, 2013
Octocat-spinner-32 gen-py Removed unnecessary _new files. (original patch worked after installi… March 23, 2013
Octocat-spinner-32 gen-rb
Octocat-spinner-32 license Added LGPL licence headers December 27, 2011
Octocat-spinner-32 INSTALL.txt updated docs April 01, 2013
Octocat-spinner-32 Main.cpp 1st attempt to streamline ozwd deployment April 01, 2013
Octocat-spinner-32 Makefile
Octocat-spinner-32 README-OpenZWave.txt updated docs April 01, 2013
Octocat-spinner-32 README-ThriftServerCreator.txt
Octocat-spinner-32 README.java added java jar makefile rule April 02, 2013
Octocat-spinner-32 README.txt
Octocat-spinner-32 RemoteManager_server.cpp.patch patch dummy ping() method to squelch useless message March 31, 2013
Octocat-spinner-32 compilation-log.txt added java jar makefile rule April 02, 2013
Octocat-spinner-32 create_server.rb
Octocat-spinner-32 ekarak-notes.txt More OpenZWave compatibility fixes December 12, 2011
Octocat-spinner-32 mattinbits-notes.txt Added file of my own install notes March 23, 2013
Octocat-spinner-32 ozw-headers.rb
Octocat-spinner-32 ozw-monitor.rb
Octocat-spinner-32 ozw.thrift some spring-time refactoring... March 16, 2013
Octocat-spinner-32 ozw_types.h.patch some spring-time refactoring... March 16, 2013
Octocat-spinner-32 ozwd added java jar makefile rule April 02, 2013
Octocat-spinner-32 ozwthrift.rb 1) fix openZwave config path (move up one directory) March 23, 2013
Octocat-spinner-32 test.rb some testing code January 03, 2012
Octocat-spinner-32 zwave-command-classes.rb helper ruby scripts added December 22, 2011
README.txt
----------
Thrift4OZW
----------

This project aims to be a multi-lingual interface to the OpenZWave library 
( http://code.google.com/p/open-zwave/ ), a C++ library for the ZWave wireless
home automation protocol, using two enabling technologies, which are:

1) Apache Thrift ( http://thrift.apache.org ) as the RPC abstraction service
2) STOMP ( http://stomp.codehaus.org ) as a means to store & transmit 
OpenZWave's notifications over the network (since Thrift lacks asynchronous
calls other than exceptions)

The project, after successful compilation, creates an "OpenZWave daemon" (ozwd)
which opens up 1) a server port for Thrift in order to receive commands and pass
them through OpenZWave to your ZWave controller (usually a USB stick) and 2) a
client port to a STOMP server so as to publish notifications on asynchronous 
events that the OpenZWave library generates.

Thus you can have access to the wonderful world of ZWave with the help of 
OpenZWave from all languages currently supported by Apache Thrift which are,
at the time of this writing: C++, Java, Python, PHP, Ruby, Erlang, Perl, 
Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi.

This is a simple diagram to illustrate the idea behind Thrift4OZW:
<pre>
+---------------+ Thrift API	+---------------+ Open	+---------------+
| Zwave  	| ------------> | Zwave daemon 	| ZWave	| Zwave     	|
| application	| (commands)    | (ozwd) - C++ 	|=======| Controller	|
| 		|		+---------------+ (C++)	| (USB or	| 
|		|			^ v		| HIDAPI)	|
|		| 		+---------------+	|		|
|		| notifications	| STOMP Server	|	|		|
+---------------+ <------------ +---------------+  	+---------------+
		 via STOMP subscription
</pre>

These are the side-projects I'm using for this project:

Thrift Server Creator (create_server.rb)
----------------------------------------
A hackity Ruby script I wrote to automatically create useful Thrift server 
bindings (instead of silly "your code goes here", as produced by Thrift). 
Uses RbGCCXML ( http://rbplusplus.rubyforge.org/rbgccxml/ ) to parse both 
source + target and then tries to create compilable & working code.

	See: README-ThriftServerCreator.txt

BoostStomp - a C++ STOMP client:
------------------------------------
A homegrown C++ client for STOMP, built using only the Boost libraries.
Makes use of Boost's ASIO (Asynchronous I/O) model as well as some other 
useful Boost facilities. It provides the asynchronous notification mechanism 
used to pass OpenZWave notifications to Thrift4OZW. For more info about 
BoostStomp, check out its homepage:

	https://github.com/ekarak/BoostStomp
Something went wrong with that request. Please try again.