UNPKG

homebridge-vwconnectid

Version:
73 lines 4.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClimatisationAccessory = void 0; class ClimatisationAccessory { constructor(platform, accessory) { this.platform = platform; this.accessory = accessory; this.accessory.getService(this.platform.Service.AccessoryInformation) .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Volkswagen') .setCharacteristic(this.platform.Characteristic.Model, this.platform.vwConn.vehicles.data.find(({ vin }) => vin === this.platform.config.weconnect.vin).model) .setCharacteristic(this.platform.Characteristic.SerialNumber, this.platform.config.weconnect.vin); this.service = this.accessory.getService(this.platform.Service.Thermostat) || this.accessory.addService(this.platform.Service.Thermostat); this.service.setCharacteristic(this.platform.Characteristic.Name, this.accessory.displayName); this.service.getCharacteristic(this.platform.Characteristic.TargetTemperature) .onSet(this.setTargetTemperature.bind(this)) .onGet(this.getTargetTemperature.bind(this)); this.service.getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState) .onSet(this.setCurrentHeatingCoolingState.bind(this)) .onGet(this.getCurrentHeatingCoolingState.bind(this)); this.service.getCharacteristic(this.platform.Characteristic.CurrentTemperature) .onGet(this.getTargetTemperature.bind(this)); this.platform.idStatusEmitter.on('climatisationHeatingStarted', () => { this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.platform.Characteristic.CurrentHeatingCoolingState.HEAT); this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.platform.Characteristic.TargetHeatingCoolingState.HEAT); }); this.platform.idStatusEmitter.on('climatisationCoolingStarted', () => { this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.platform.Characteristic.CurrentHeatingCoolingState.COOL); this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.platform.Characteristic.TargetHeatingCoolingState.COOL); }); this.platform.idStatusEmitter.on('climatisationStopped', () => { this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.platform.Characteristic.CurrentHeatingCoolingState.OFF); this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.platform.Characteristic.TargetHeatingCoolingState.OFF); }); this.platform.idStatusEmitter.on('climatisationTemperatureUpdated', () => { this.service.updateCharacteristic(this.platform.Characteristic.TargetTemperature, this.platform.vwConn.idData.climatisation.climatisationSettings.value.targetTemperature_C); this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.platform.vwConn.idData.climatisation.climatisationSettings.value.targetTemperature_C); }); } async setTargetTemperature(value) { value = Math.round(value * 2) / 2; this.platform.vwConn.setClimatisation(value); this.platform.log.info('Set Characteristic TargetTemperature ->', value); } async getCurrentHeatingCoolingState() { const state = this.platform.vwConn.idData.climatisation.climatisationStatus.value.climatisationState; let ret = 0; this.platform.log.debug('Get Characteristic CurrentHeatingCoolingState ->', state); if (state === 'cooling') { ret = this.platform.Characteristic.CurrentHeatingCoolingState.COOL; } else if (state === 'heating') { ret = this.platform.Characteristic.CurrentHeatingCoolingState.HEAT; } return ret; } async setCurrentHeatingCoolingState(value) { if (value === this.platform.Characteristic.CurrentHeatingCoolingState.OFF) { this.platform.vwConn.stopClimatisation(); } else { this.platform.vwConn.startClimatisation(); } this.platform.log.info('Set Characteristic CurrentHeatingCoolingState ->', value); } async getTargetTemperature() { const targetTemperature = this.platform.vwConn.idData.climatisation.climatisationSettings.value.targetTemperature_C; this.platform.log.debug('Get Characteristic TargetTemperature ->', targetTemperature); return targetTemperature; } } exports.ClimatisationAccessory = ClimatisationAccessory; //# sourceMappingURL=climatisationAccessory.js.map