UNPKG

homebridge-tessie

Version:

Connect Homebridge to your Tessie account.

59 lines 3.24 kB
// https://developers.homebridge.io/#/service/Thermostat import { BaseService } from "./base.js"; export class ClimateService extends BaseService { displayUnits = 0; // Celsius by default assumedState = 0; constructor(parent) { super(parent, parent.platform.Service.Thermostat, "Climate", "climate"); const currentState = this.service .getCharacteristic(this.parent.platform.Characteristic.CurrentHeatingCoolingState); const targetState = this.service .getCharacteristic(this.parent.platform.Characteristic.TargetHeatingCoolingState) .onSet(async (value) => { targetState.updateValue(value ? this.parent.platform.hap.Characteristic.TargetHeatingCoolingState.AUTO : this.parent.platform.hap.Characteristic.TargetHeatingCoolingState.OFF); await this.parent.wakeUpAndWait() .then(() => value ? this.vehicle.auto_conditioning_start() .then(() => currentState.updateValue(this.assumedState)) .catch((e) => this.log.error(`${this.name} vehicle auto_conditioning_start failed: ${e}`)) : this.vehicle.auto_conditioning_stop() .then(() => currentState.updateValue(this.parent.platform.hap.Characteristic.CurrentHeatingCoolingState.OFF)) .catch((e) => this.log.error(`${this.name} vehicle auto_conditioning_stop failed: ${e}`))); }); const currentTemp = this.service .getCharacteristic(this.parent.platform.Characteristic.CurrentTemperature); const targetTemp = this.service .getCharacteristic(this.parent.platform.Characteristic.TargetTemperature) .onSet(async (value) => { await this.parent.wakeUpAndWait() .then(() => this.vehicle.set_temps(value, value)) .then(() => targetTemp.updateValue(value)); }); this.service .getCharacteristic(this.parent.platform.Characteristic.TemperatureDisplayUnits) .onSet((value) => { this.displayUnits = value; }); this.parent.emitter.on("vehicle_data", (data) => { this.assumedState = data.climate_state.inside_temp < data.climate_state.driver_temp_setting ? this.platform.hap.Characteristic.CurrentHeatingCoolingState.HEAT : this.platform.hap.Characteristic.CurrentHeatingCoolingState.COOL; if (data.climate_state.is_climate_on) { // On currentState.updateValue(this.assumedState); targetState.updateValue(this.platform.hap.Characteristic.TargetHeatingCoolingState.AUTO); } else { // Off currentState.updateValue(this.platform.hap.Characteristic.CurrentHeatingCoolingState.OFF); targetState.updateValue(this.platform.hap.Characteristic.TargetHeatingCoolingState.OFF); } currentTemp.updateValue(data.climate_state.inside_temp); targetTemp.updateValue(data.climate_state.driver_temp_setting); }); } } //# sourceMappingURL=climate.js.map