UNPKG

homebridge-plugin-gsav-virtual-switch-light

Version:

virtual light switch

54 lines (45 loc) 1.77 kB
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); }