extern crate enum_primitive;
extern crate rzw;
use std::{thread, time};
static DEVICE: &'static str = "/dev/cu.usbmodem1411";
fn main() {
if DEVICE == "" {
println!("Please define a path to your controller in the source code");
return;
}
let mut zwave = rzw::open(DEVICE).unwrap();
fn handler(msg: rzw::driver::serial::SerialMsg) {
println!("message {:?}", msg);
let parsed = rzw::cmds::Message::parse(&msg.data);
println!("message parsed {:?}", parsed);
}
zwave.handle_messages(Box::new(handler));
for node_id in zwave.nodes() {
println!(
"Node {:?} available Command Classes:\n{:?}\n",
node_id,
zwave.node(node_id).map(|n| n.get_commands())
);
zwave
.node(node_id)
.map(|n| n.basic_set(0x00))
.unwrap()
.unwrap();
println!(
"Node 3 Status: {:?}",
zwave.node(node_id).map(|n| n.basic_get())
);
}
loop {
let duration = time::Duration::from_millis(50);
thread::sleep(duration);
}
}