Node.js implementation of HDL SmartBus protocol http://hdlautomation.com
Create instance of SmartBus connector
var SmartBus = require('smart-bus');
var bus = new SmartBus({
subnet: 1,
id: 50, // Device id for connector
gateway: '192.168.1.250', // HDL SmartBus gateway IP
port: 6000 // Listening port, default: 6000
});
Add handler to intercept all commands across bus
bus.on('command', function(command) {
// Integer with command operation code
command.code;
// Device objects
command.sender;
command.target;
// Object with decoded data or raw buffer
// if data can not be parsed automatically
command.data;
});
Handlers can be added for broadcast messages or specific commands
bus.on('broadcast', function(command) { ... });
bus.on(0x0032, function(command) { ... });
Listen for commands from specific device
var sensor = bus.device('1.20');
sensor.on(0x1647, function(data, target) { ... });
Use connector to send commands
bus.send('1.4', 0x0031, { channel: 1, level: 100 }, function(err) { ... });
Or use device object
var logic = bus.device('1.10');
logic.send(0xE01C, { switch: 1, status: 1 }, function(err) { ... });
Both send
methods accepts raw Buffer
as data object. In case if
data object can not be encoded error will be passed into callback.
Initialize channel object
var dimmer = bus.device('1.4');
var spotlights = dimmer.channel(2);
Listen to channel status event
spotlights.on('status', function() {
console.log('Spotlights level is %s', spotlights.level);
});
Set device channel level value to 100 in 5 seconds
spotlights.control(100, { time: 5 }, function(err) { ... });
control
function will send 0x0031
command into bus.