UNPKG

@shadman-a/homebridge-my-ac

Version:

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

90 lines 4.51 kB
import AirPurifier from './AirPurifier.js'; export var LightBrightness; (function (LightBrightness) { LightBrightness[LightBrightness["OFF"] = 0] = "OFF"; LightBrightness[LightBrightness["ON"] = 1] = "ON"; LightBrightness[LightBrightness["LEVEL_1"] = 8] = "LEVEL_1"; LightBrightness[LightBrightness["LEVEL_2"] = 9] = "LEVEL_2"; LightBrightness[LightBrightness["LEVEL_3"] = 10] = "LEVEL_3"; })(LightBrightness || (LightBrightness = {})); export default class AeroTower extends AirPurifier { platform; accessory; serviceTemperatureSensor; serviceHumiditySensor; serviceUVNano; constructor(platform, accessory, logger) { super(platform, accessory, logger); this.platform = platform; this.accessory = accessory; const { Service: { TemperatureSensor, HumiditySensor, Switch, }, Characteristic, } = this.platform; this.serviceTemperatureSensor = accessory.getService(TemperatureSensor) || accessory.addService(TemperatureSensor, 'Temperature Sensor'); this.serviceHumiditySensor = accessory.getService(HumiditySensor) || accessory.addService(HumiditySensor, 'Humidity Sensor'); this.serviceLight?.getCharacteristic(Characteristic.Brightness) .setProps({ maxValue: 3, // 3 level of light }) .onSet(this.setLightBrightness.bind(this)); this.serviceUVNano = accessory.getService(Switch) || accessory.addService(Switch, 'UV Purifier'); this.serviceUVNano.getCharacteristic(Characteristic.On).onSet(this.setUVMode.bind(this)); } async setLight(value) { if (!this.Status.isPowerOn) { return; } const device = this.accessory.context.device; const isLightOn = value ? 1 : 0; this.platform.ThinQ?.deviceControl(device.id, { dataKey: 'airState.lightingState.displayControl', dataValue: isLightOn, }).then(() => { device.data.snapshot['airState.lightingState.displayControl'] = isLightOn; this.updateAccessoryCharacteristic(device); }); } setUVMode(value) { const uvModeValue = value ? 1 : 0; this.platform.ThinQ?.deviceControl(this.accessory.context.device, { dataKey: 'airState.miscFuncState.Uvnano', dataValue: uvModeValue, }).then(() => { this.accessory.context.device.data.snapshot['airState.miscFuncState.Uvnano'] = uvModeValue; this.updateAccessoryCharacteristic(this.accessory.context.device); }); } setLightBrightness(value) { const brightnessValue = value - 1; const values = [LightBrightness.LEVEL_1, LightBrightness.LEVEL_2, LightBrightness.LEVEL_3]; if (typeof values[brightnessValue] !== 'undefined') { this.platform.ThinQ?.deviceControl(this.accessory.context.device, { dataKey: 'airState.lightingState.displayControl', dataValue: values[brightnessValue], }).then(() => { this.accessory.context.device.data.snapshot['airState.lightingState.displayControl'] = values[brightnessValue]; this.updateAccessoryCharacteristic(this.accessory.context.device); }); } } updateAccessoryCharacteristic(device) { super.updateAccessoryCharacteristic(device); const { Characteristic, } = this.platform; const snapshot = device.data.snapshot; // light brightness const values = [LightBrightness.LEVEL_1, LightBrightness.LEVEL_2, LightBrightness.LEVEL_3]; const brightnessValue = values.indexOf(snapshot['airState.lightingState.displayControl'] || 0); if (brightnessValue !== -1) { this.serviceLight?.updateCharacteristic(Characteristic.Brightness, brightnessValue + 1); } if (typeof snapshot['airState.tempState.current'] !== 'undefined') { this.serviceTemperatureSensor.updateCharacteristic(Characteristic.CurrentTemperature, snapshot['airState.tempState.current']); } if (typeof snapshot['airState.humidity.current'] !== 'undefined') { this.serviceHumiditySensor.updateCharacteristic(Characteristic.CurrentRelativeHumidity, snapshot['airState.humidity.current']); } // uv mode this.serviceUVNano.updateCharacteristic(Characteristic.On, !!(snapshot['airState.miscFuncState.Uvnano'] || 0)); } } //# sourceMappingURL=AeroTower.js.map