UNPKG

@petro-kushchak/homebridge-ch-gree-ac-eve-platform

Version:

Cooper&Hunter (based on Gree AC API) AC plugin for Homebridge (Homekit) with Web Hook/MQTT Data Sharing

151 lines 6.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = require("stream"); const acStatus_1 = __importDefault(require("../utils/acStatus")); const acSender_1 = __importDefault(require("../utils/acSender")); class HeaterCooler { constructor(platform, accessory) { this.platform = platform; this.accessory = accessory; this.currentTemp = 45; this.EVENT = 'action'; this.eventEmitter = new stream_1.EventEmitter(); this.service = this.accessory.getService(this.platform.Service.HeaterCooler) || this.accessory.addService(this.platform.Service.HeaterCooler); this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.context.device.Name); this.getStatus = (0, acStatus_1.default)(this.accessory.context.device); this.sendData = (0, acSender_1.default)(this.accessory.context.device); this.activeChar = this.service .getCharacteristic(this.platform.Characteristic.Active) .onGet(this.handleActiveGet.bind(this)) .onSet(this.handleActiveSet.bind(this)); this.service .getCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState) .onGet(this.handleCurrentHeaterCoolerStateGet.bind(this)); this.service .getCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState) .onGet(this.handleTargetHeaterCoolerStateGet.bind(this)) .onSet(this.handleTargetHeaterCoolerStateSet.bind(this)); this.service .getCharacteristic(this.platform.Characteristic.CurrentTemperature) .onGet(this.handleCurrentTemperatureGet.bind(this)); this.service .getCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits) .onGet(this.handleTemperatureDisplayUnitsGet.bind(this)) .onSet(this.handleTemperatureDisplayUnitsSet.bind(this)); this.service .getCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature) .setProps({ minValue: this.platform.config.coolingMinTemp, maxValue: this.platform.config.coolingMaxTemp, minStep: 1 }) .onGet(this.handleThresholdTemperatureGet.bind(this)) .onSet(this.handleThresholdTemperatureSet.bind(this)); this.service .getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature) .setProps({ minValue: this.platform.config.heatingMinTemp, maxValue: this.platform.config.heatingMaxTemp, minStep: 1 }) .onGet(this.handleThresholdTemperatureGet.bind(this)) .onSet(this.handleThresholdTemperatureSet.bind(this)); } // Getters async handleActiveGet() { const status = await this.getStatus(); return status.Pow; } async handleCurrentHeaterCoolerStateGet() { const status = await this.getStatus(); if (!status.Pow) { return this.platform.Characteristic.CurrentHeaterCoolerState.INACTIVE; } switch (status.Mod) { case 1: case 2: case 3: return this.platform.Characteristic.CurrentHeaterCoolerState.COOLING; case 4: return this.platform.Characteristic.CurrentHeaterCoolerState.HEATING; default: return this.platform.Characteristic.CurrentHeaterCoolerState.IDLE; } } async handleTargetHeaterCoolerStateGet() { const status = await this.getStatus(); switch (status.Mod) { case 1: case 2: case 3: return this.platform.Characteristic.TargetHeaterCoolerState.COOL; case 4: return this.platform.Characteristic.TargetHeaterCoolerState.HEAT; default: return this.platform.Characteristic.TargetHeaterCoolerState.AUTO; } } async handleCurrentTemperatureGet() { // let temp = this.platform.config.defaultCurrentTemp ?? 45; // // if (this.platform.config.dhtService) { // // temp = (await this.readDHTData())?.temperature ?? temp; // // } return this.currentTemp; } async handleThresholdTemperatureGet() { const status = await this.getStatus(); return status.SetTem; } async handleTemperatureDisplayUnitsGet() { const status = await this.getStatus(); return status.TemUn; } // Setters async handleActiveSet(value) { await this.sendData({ Pow: parseInt(value.toString()) }); this.eventEmitter.emit(this.EVENT, 'Pow', parseInt(value.toString())); } async handleTargetHeaterCoolerStateSet(value) { const { TargetHeaterCoolerState } = this.platform.Characteristic; let readValue; switch (parseInt(value.toString())) { case TargetHeaterCoolerState.HEAT: readValue = 4; break; case TargetHeaterCoolerState.COOL: readValue = 1; break; default: readValue = 0; break; } await this.sendData({ Mod: readValue }); this.eventEmitter.emit(this.EVENT, 'Mod', parseInt(value.toString())); } async handleThresholdTemperatureSet(value) { await this.sendData({ SetTem: parseInt(value.toString()) }); this.eventEmitter.emit(this.EVENT, 'SetTem', parseInt(value.toString())); } handleTemperatureDisplayUnitsSet() { return undefined; } updateCurrentTemp(value) { this.currentTemp = value; this.service .getCharacteristic(this.platform.Characteristic.CurrentTemperature) .updateValue(this.currentTemp); } } exports.default = HeaterCooler; //# sourceMappingURL=HeaterCooler.js.map