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