Client library for the Z-Way Device API, allows for easy polling for changes, running commands, and events.
var zway = require('node-zway');
// without password
var deviceApi = new zway.DeviceApi('192.168.0.123');
// with password
var deviceApi = new zway.DeviceApi({ host: '192.168.0.123', user: 'admin', password: 'mypass' });deviceApi.refresh()
.then(() => {
console.log('Done!');
});Rather than manually refreshing for updates you can just start polling at a defined interval.
var interval = 1000; // ms
deviceApi.poll(interval);The main reason to poll is to receive events. The client uses EventEmitter2 that supports wildcard events. The event format is device_id.command_class_id.eventname.
deviceApi.on('5.98.*', data => {
console.log('event data:', data);
});For debugging:
deviceApi.onAny(() => {
console.log('event data:', data);
});var device1 = deviceApi.getDevice(1, 98);
console.log(device1.DoorLock.get('mode'));var device1 = deviceApi.getDevice(1, 98);
console.log(device1.DoorLock.lock());Commands:
- activate();
- deactivate();
- toggle();
- refresh();
Queries:
- TODO: isActivated();
Events:
- onChange();
Queries:
- getItems();
Commands:
- refresh();
Events:
- onChange();
Queries:
- getItems();
Commands:
- lock();
- unlock();
- refresh();
Queries:
- isLocked();
Events:
- on();
Have also looked at using the JS API (/ZAutomation) but the authentication system for this is limited and impractical.
- Make it more flexible to reference everything by either command class name or ID (decimal or hex).
- Add more command class info