homebridge-lg-ac
Version:
A Homebridge plugin for controlling/monitoring LG AirConditioning device via LG ThinQ platform.
75 lines • 3.72 kB
JavaScript
"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