UNPKG

homebridge-lg-ac

Version:

A Homebridge plugin for controlling/monitoring LG AirConditioning device via LG ThinQ platform.

75 lines 3.72 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MainUnit = void 0; const events_1 = __importDefault(require("events")); class MainUnit extends events_1.default { constructor(controller, platform, accessory, config) { super(); this.controller = controller; this.platform = platform; this.accessory = accessory; this.config = config; const { Service: { Thermostat }, Characteristic, } = this.platform; this.ThinQ = this.platform.ThinQ; this.device = this.accessory.context.device; this.service = this.accessory.getService(Thermostat) || this.accessory.addService(Thermostat, this.device.name); this.service.setPrimaryService(); this.service .getCharacteristic(Characteristic.TargetHeatingCoolingState) .setProps({ validValues: [Characteristic.TargetHeatingCoolingState.AUTO, Characteristic.TargetHeatingCoolingState.OFF], }) .onSet((value) => { this.controller.setActive(value === Characteristic.TargetHeatingCoolingState.AUTO ? 1 : 0); }); this.service .getCharacteristic(Characteristic.CurrentHeatingCoolingState) .updateValue(this.currentHeatingCoolingState); this.service.updateCharacteristic(Characteristic.CurrentTemperature, this.controller.currentTemperature); this.service.updateCharacteristic(Characteristic.TemperatureDisplayUnits, Characteristic.TemperatureDisplayUnits.CELSIUS); const targetTemperatureCharacteristic = this.service.getCharacteristic(Characteristic.TargetTemperature); if (this.controller.targetTemperatureRange) { targetTemperatureCharacteristic.setProps({ minValue: this.controller.targetTemperatureRange.min, maxValue: this.controller.targetTemperatureRange.max, minStep: 0.01, }); } targetTemperatureCharacteristic.onSet((value) => { this.controller.setTargetTemperature(value); }); } update(device) { const { Characteristic, Characteristic: { TargetHeatingCoolingState, }, } = this.platform; this.service.updateCharacteristic(Characteristic.TargetHeatingCoolingState, this.controller.isPowerOn ? TargetHeatingCoolingState.AUTO : TargetHeatingCoolingState.OFF); this.service.updateCharacteristic(Characteristic.CurrentHeatingCoolingState, this.currentHeatingCoolingState); if (this.controller.currentTemperature) { this.service.updateCharacteristic(Characteristic.CurrentTemperature, this.controller.currentTemperature); } if (this.controller.targetTemperature) { this.service.updateCharacteristic(Characteristic.TargetTemperature, this.controller.targetTemperature); } } get currentHeatingCoolingState() { switch (this.controller.currentMode) { case 2 /* CurrentMode.OFF */: return this.platform.Characteristic.CurrentHeatingCoolingState.OFF; case 0 /* CurrentMode.COOL */: return this.platform.Characteristic.CurrentHeatingCoolingState.COOL; case 1 /* CurrentMode.HEAT */: return this.platform.Characteristic.CurrentHeatingCoolingState.HEAT; } } link(service) { this.service.addLinkedService(service); } remove() { this.accessory.removeService(this.service); } } exports.MainUnit = MainUnit; //# sourceMappingURL=MainUnit.js.map