UNPKG

@pietrolubini/homebridge-ecoflow

Version:
57 lines 3.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OutletServiceBase = void 0; const config_1 = require("@ecoflow/config"); const serviceBase_1 = require("@ecoflow/services/serviceBase"); class OutletServiceBase extends serviceBase_1.ServiceBase { additionalCharacteristics; state = false; constructor(ecoFlowAccessory, additionalCharacteristics, serviceSubType) { super(ecoFlowAccessory.platform.Service.Outlet, ecoFlowAccessory, serviceSubType); this.additionalCharacteristics = additionalCharacteristics; } updateState(state) { this.state = state; this.updateCharacteristic(this.platform.Characteristic.On, 'State', state); } updateOutputConsumption(watt) { this.updateCharacteristic(this.platform.Characteristic.OutletInUse, 'InUse', watt > 0); this.updateCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputConsumptionWatts, 'Output Consumption, W', () => watt, config_1.AdditionalOutletCharacteristicType.OutputConsumptionInWatts); } updateOutputVoltage(volt) { this.updateCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputVoltage, 'Output Voltage, V', () => volt, config_1.AdditionalOutletCharacteristicType.OutputVoltage); } updateOutputCurrent(ampere) { this.updateCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputCurrent, 'Output Current, A', () => ampere, config_1.AdditionalOutletCharacteristicType.OutputCurrent); } 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)); })); const characteristics = [ this.addCharacteristic(this.platform.Characteristic.OutletInUse), onCharacteristic, this.tryAddCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputVoltage, config_1.AdditionalOutletCharacteristicType.OutputVoltage), this.tryAddCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputCurrent, config_1.AdditionalOutletCharacteristicType.OutputCurrent), this.tryAddCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputConsumptionWatts, config_1.AdditionalOutletCharacteristicType.OutputConsumptionInWatts), ]; this.service.setCharacteristic(this.platform.Characteristic.Name, this.serviceName); return characteristics.filter(characteristic => characteristic !== null); } tryAddCustomCharacteristic(characteristic, characteristicType) { if (this.additionalCharacteristics?.includes(characteristicType)) { return this.addCharacteristic(characteristic); } return null; } updateCustomCharacteristic(characteristic, name, valueFunc, characteristicType) { if (this.additionalCharacteristics?.includes(characteristicType)) { this.updateCharacteristic(characteristic, name, valueFunc()); } } } exports.OutletServiceBase = OutletServiceBase; //# sourceMappingURL=outletServiceBase.js.map