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.