@pietrolubini/homebridge-ecoflow
Version:
Homebridge plugin for EcoFlow devices
115 lines • 6.54 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ThermostatFridgeServiceBase = void 0;
const characteristicContracts_1 = require("@ecoflow/characteristics/characteristicContracts");
const serviceBase_1 = require("@ecoflow/services/serviceBase");
class ThermostatFridgeServiceBase extends serviceBase_1.ServiceBase {
minTemperature;
maxTemperature;
currentTemperature = 0;
targetTemperature = 0;
currentHeatingCoolingStateType = characteristicContracts_1.CurrentHeatingCoolingStateType.Off;
targetHeatingCoolingStateType = characteristicContracts_1.TargetHeatingCoolingStateType.Off;
targetFridgeState = characteristicContracts_1.FridgeStateType.Off;
temperatureDisplayUnits = 0;
constructor(ecoFlowAccessory, minTemperature, maxTemperature, serviceSubType) {
super(ecoFlowAccessory.platform.Service.Thermostat, ecoFlowAccessory, serviceSubType);
this.minTemperature = minTemperature;
this.maxTemperature = maxTemperature;
}
updateCurrentTemperature(value) {
this.currentTemperature = value;
this.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, 'Current Temperature', value);
}
updateTargetTemperature(value) {
this.targetTemperature = value;
this.updateCharacteristic(this.platform.Characteristic.TargetTemperature, 'Target Temperature', value);
}
updateCurrentState(value) {
this.currentHeatingCoolingStateType =
value === characteristicContracts_1.FridgeStateType.On ? characteristicContracts_1.CurrentHeatingCoolingStateType.Cool : characteristicContracts_1.CurrentHeatingCoolingStateType.Off;
this.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, 'Current State', this.currentHeatingCoolingStateType);
}
updateTargetState(value) {
this.targetHeatingCoolingStateType =
value === characteristicContracts_1.FridgeStateType.On ? characteristicContracts_1.TargetHeatingCoolingStateType.Cool : characteristicContracts_1.TargetHeatingCoolingStateType.Off;
this.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, 'Target State', this.targetHeatingCoolingStateType);
}
updateTemperatureDisplayUnits(value) {
this.temperatureDisplayUnits = value;
this.updateCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits, 'Temperature Display Units', value);
}
addCharacteristics() {
const characteristics = [
this.addCurrentTemperatureCharacteristic(),
this.addTargetTemperatureCharacteristic(),
this.addCurrentHeatingCoolingStateCharacteristic(),
this.addTargetHeatingCoolingStateCharacteristic(),
this.addTemperatureDisplayUnitsCharacteristic(),
];
this.service.setCharacteristic(this.platform.Characteristic.Name, this.serviceName);
return characteristics;
}
addCurrentTemperatureCharacteristic() {
const characteristic = this.addCharacteristic(this.platform.Characteristic.CurrentTemperature)
.setProps({
minValue: this.minTemperature,
maxValue: this.maxTemperature,
minStep: 0.1,
})
.onGet(() => this.processOnGet(this.currentTemperature));
return characteristic;
}
addTargetTemperatureCharacteristic() {
const characteristic = this.addCharacteristic(this.platform.Characteristic.TargetTemperature)
.setProps({
minValue: this.minTemperature,
maxValue: this.maxTemperature,
minStep: 0.1,
})
.onGet(() => this.processOnGet(this.targetTemperature))
.onSet((value) => this.processOnSet(this.platform.Characteristic.TargetTemperature.name, () => {
const prevTargetTemperature = this.targetTemperature;
this.targetTemperature = value;
this.processOnSetTargetTemperature(this.targetTemperature, () => this.updateTargetTemperature(prevTargetTemperature));
}));
return characteristic;
}
addCurrentHeatingCoolingStateCharacteristic() {
const characteristic = this.addCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState)
.setProps({
validValues: [characteristicContracts_1.TargetHeatingCoolingStateType.Off, characteristicContracts_1.TargetHeatingCoolingStateType.Cool],
})
.onGet(() => this.processOnGet(this.currentHeatingCoolingStateType));
return characteristic;
}
addTargetHeatingCoolingStateCharacteristic() {
const characteristic = this.addCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState)
.setProps({
validValues: [characteristicContracts_1.TargetHeatingCoolingStateType.Off, characteristicContracts_1.TargetHeatingCoolingStateType.Cool],
})
.onGet(() => this.processOnGet(this.targetHeatingCoolingStateType))
.onSet((value) => this.processOnSet(this.platform.Characteristic.TargetHeatingCoolingState.name, () => {
this.targetHeatingCoolingStateType = value;
const prevTargetFridgeState = this.targetFridgeState;
this.targetFridgeState =
this.targetHeatingCoolingStateType === characteristicContracts_1.TargetHeatingCoolingStateType.Cool
? characteristicContracts_1.FridgeStateType.On
: characteristicContracts_1.FridgeStateType.Off;
this.processOnSetTargetState(this.targetFridgeState, () => this.updateTargetState(prevTargetFridgeState));
}));
return characteristic;
}
addTemperatureDisplayUnitsCharacteristic() {
const characteristic = this.addCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits)
.onGet(() => this.processOnGet(this.temperatureDisplayUnits))
.onSet((value) => this.processOnSet(this.platform.Characteristic.TemperatureDisplayUnits.name, () => {
const prevTemperatureDisplayUnits = this.temperatureDisplayUnits;
this.temperatureDisplayUnits = value;
this.processOnSetTemperatureDisplayUnits(this.temperatureDisplayUnits, () => this.updateTemperatureDisplayUnits(prevTemperatureDisplayUnits));
}));
return characteristic;
}
}
exports.ThermostatFridgeServiceBase = ThermostatFridgeServiceBase;
//# sourceMappingURL=thermostatFridgeServiceBase.js.map