homebridge-plugin-gsav-virtual-switch-light
Version:
virtual light switch
54 lines (45 loc) • 1.77 kB
JavaScript
var Service, Characteristic;
module.exports = function(homebridge) {
Service = homebridge.hap.Service;
Characteristic = homebridge.hap.Characteristic;
homebridge.registerAccessory("homebridge-gsavbutton", "VirtualSwitchBinary", Virtual);
}
function Virtual(log, config) {
this.log = log;
this.name = config["name"];
this.area = config["area"];
this.channel = config["channel"];
this.state = 0; // init state, default is OFF
this.log(" GS AV '");
this.log(" / \ '");
this.log(" | SWITCH | '");
this.log(" \ / '");
this.log(" V0.1.73 '");
}
Virtual.prototype.getServices = function()
{
var lightSwitchService = new Service.Lightbulb(this.name);
var informationService = new Service.AccessoryInformation();
lightSwitchService
.getCharacteristic(Characteristic.On)
.on('get', this.getPowerOn.bind(this))
.on('set', this.setPowerOn.bind(this));
informationService
.setCharacteristic(Characteristic.Manufacturer, "GSAV")
.setCharacteristic(Characteristic.Model, "Switch-Binary")
.setCharacteristic(Characteristic.SerialNumber, "0");
return [lightSwitchService, informationService];
}
/************************************************************/
Virtual.prototype.getPowerOn = function(callback)
{
var powerOn = this.state > 0;
this.log("/ status / binary / state=%s / area=%s / %s", this.state, this.area, this.name);
callback(null, powerOn);
}
Virtual.prototype.setPowerOn = function(value, callback)
{
this.state = value ? 1 : 0;
this.log("/ set / binary / light=preset:%s:%s / %s", this.state, this.area, this.name);
callback(null);
}