UNPKG

@pietrolubini/homebridge-ecoflow

Version:
115 lines 6.54 kB
"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