@pietrolubini/homebridge-ecoflow
Version:
Homebridge plugin for EcoFlow devices
48 lines • 2.31 kB
JavaScript
"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