UNPKG

@pietrolubini/homebridge-ecoflow

Version:
48 lines 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LightBulbServiceBase = void 0; const serviceBase_1 = require("@ecoflow/services/serviceBase"); class LightBulbServiceBase extends serviceBase_1.ServiceBase { ecoFlowAccessory; maxBrightness; state = false; brightnessPercents = 0; brightness = 0; brightnessCharacteristic = null; constructor(ecoFlowAccessory, maxBrightness, serviceSubType) { super(ecoFlowAccessory.platform.Service.Lightbulb, ecoFlowAccessory, serviceSubType); this.ecoFlowAccessory = ecoFlowAccessory; this.maxBrightness = maxBrightness; } addCharacteristics() { const onCharacteristic = this.addCharacteristic(this.platform.Characteristic.On) .onGet(() => this.processOnGet(this.state)) .onSet(value => this.processOnSet(this.platform.Characteristic.On.name, () => { this.state = value; this.processOnSetOn(this.state, () => this.updateState(!this.state)); })); this.brightnessCharacteristic = this.addCharacteristic(this.platform.Characteristic.Brightness) .onGet(() => this.processOnGet(this.brightnessPercents)) .onSet(percents => this.processOnSet(this.platform.Characteristic.Brightness.name, () => { this.brightnessPercents = percents; const prevBrightness = this.brightness; this.brightness = this.covertPercentsToValue(this.brightnessPercents, this.maxBrightness); this.processOnSetBrightness(this.brightness, () => this.updateBrightness(prevBrightness)); })); return [onCharacteristic, this.brightnessCharacteristic]; } updateState(state) { this.state = state; this.updateCharacteristic(this.platform.Characteristic.On, 'State', state); } updateBrightness(value) { this.brightnessPercents = this.covertValueToPercents(value, this.maxBrightness); this.updateCharacteristic(this.platform.Characteristic.Brightness, 'Brightness', this.brightnessPercents); this.brightness = value; } setBrightness(value) { this.brightnessCharacteristic?.setValue(value); } } exports.LightBulbServiceBase = LightBulbServiceBase; //# sourceMappingURL=lightBulbServiceBase.js.map