# Rusty Z-Wave The `rzw` crate provides a native functionality to control a Z-Wave network over a USB Z-Wave dongle. It's completely written in Rust to ensure safety and performance. --- ## Compatibility The `rzw` crate depends on the serial create, which is compatible with Windows and any Unix operating system that implements the termios API. The following platforms are confirmed to be compatible: * Linux (x86_64, armv6l) * OS X (x86_64) * FreeBSD (amd64) * OpenBSD (amd64) * Windows (x86_64) Compiling the `rzw` crate requires Rust 1.9 or later. --- ## Usage Add `rzw` as a dependency in `Cargo.toml`: ```toml [dependencies] rzw = { git = "https://github.com/Roba1993/rzw" } ``` Use the `rzw::Controller` as starting point to communicate, with the Z-Wave network. ```rust extern crate rzw; fn main() { // Access the zwave network let zwave = rzw::open("/dev/tty.usbmodem1411").unwrap(); // get all node ids let nodes = zwave.nodes(); // loop over the nodes for node in nodes { // print the available command classes for each node println!("{:?}" zwave.node(node).map(|n| n.get_commands())); // set the basic value on all nodes // for binary switch this means, turn them on zwave.node(node_id).map(|n| n.basic_set(0xFF)).unwrap(); } } ``` ## Resources - [zwave info compilation](https://github.com/yepher/RaZBerry) - [zwave official specifications](http://zwavepublic.com/specifications) - https://clemovernet.wordpress.com/2015/08/26/z-wave-definition-des-trames-partie-1/ --- ## Thanks * To the [serial-rs](https://github.com/dcuddeback/serial-rs) team - who made this crate possible. --- ## License Copyright © 2016 Robert Schütte Distributed under the [MIT License](LICENSE).