UNPKG

homebridge-hilo

Version:

Plugin Homebridge (non officiel) pour la passerelle et les appareils Hilo de Hydro-Québec | Unofficial Homebridge plugin for Hydro-Québec Hilo bridge and devices

126 lines 7.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Thermostat = void 0; const axios_1 = __importDefault(require("axios")); const HiloDevice_1 = require("./HiloDevice"); const hiloApi_1 = require("../hiloApi"); class Thermostat extends HiloDevice_1.HiloDevice { constructor(accessory, api) { var _a, _b, _c, _d; super(accessory, api); this.service = accessory.getService(this.api.hap.Service.Thermostat) || accessory.addService(this.api.hap.Service.Thermostat); this.service.setCharacteristic(this.api.hap.Characteristic.Name, this.accessory.context.device.name); this.service .getCharacteristic(this.api.hap.Characteristic.CurrentHeatingCoolingState) .onGet(this.getCurrentHeatingCoolingState.bind(this)) .setProps({ validValues: [ this.api.hap.Characteristic.CurrentHeatingCoolingState.OFF, this.api.hap.Characteristic.CurrentHeatingCoolingState.HEAT, ], maxValue: this.api.hap.Characteristic.CurrentHeatingCoolingState.HEAT, }); this.service .getCharacteristic(this.api.hap.Characteristic.TargetHeatingCoolingState) .onGet(this.getTargetHeatingCoolingState.bind(this)) .onSet(this.setTargetHeatingCoolingState.bind(this)) .setProps({ validValues: [ this.api.hap.Characteristic.TargetHeatingCoolingState.OFF, this.api.hap.Characteristic.TargetHeatingCoolingState.HEAT, ], maxValue: this.api.hap.Characteristic.TargetHeatingCoolingState.HEAT, }); this.service .getCharacteristic(this.api.hap.Characteristic.CurrentTemperature) .onGet(this.getCurrentTemperature.bind(this)); this.service .getCharacteristic(this.api.hap.Characteristic.TargetTemperature) .onGet(this.getTargetTemperature.bind(this)) .onSet(this.setTargetTemperature.bind(this)) .setProps({ minValue: (_b = (_a = this.device.minAmbientTempSetpoint) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 5, minStep: 0.5, maxValue: (_d = (_c = this.device.maxAmbientTempSetpoint) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : 30, }); this.service .getCharacteristic(this.api.hap.Characteristic.TemperatureDisplayUnits) .onGet(this.getTemperatureDisplayUnits.bind(this)) .onSet(this.setTemperatureDisplayUnits.bind(this)); } updateDevice(device) { var _a, _b, _c, _d, _e, _f, _g, _h, _j; super.updateDevice(device); if ("ambientTemperature" in device && device.ambientTemperature !== undefined && device.ambientTemperature !== null) { (_b = (_a = this.service) === null || _a === void 0 ? void 0 : _a.getCharacteristic(this.api.hap.Characteristic.CurrentTemperature)) === null || _b === void 0 ? void 0 : _b.updateValue((_c = device.ambientTemperature.value) !== null && _c !== void 0 ? _c : 20); } if ("ambientTempSetpoint" in device && device.ambientTempSetpoint !== undefined && device.ambientTempSetpoint !== null) { (_e = (_d = this.service) === null || _d === void 0 ? void 0 : _d.getCharacteristic(this.api.hap.Characteristic.TargetTemperature)) === null || _e === void 0 ? void 0 : _e.updateValue((_g = (_f = device.ambientTempSetpoint) === null || _f === void 0 ? void 0 : _f.value) !== null && _g !== void 0 ? _g : 20); } if ("power" in device && device.power !== undefined && device.power !== null && "value" in device.power && device.power.value !== null && device.power.value !== undefined) { (_j = (_h = this.service) === null || _h === void 0 ? void 0 : _h.getCharacteristic(this.api.hap.Characteristic.CurrentHeatingCoolingState)) === null || _j === void 0 ? void 0 : _j.updateValue(device.power.value > 0 ? this.api.hap.Characteristic.CurrentHeatingCoolingState.HEAT : this.api.hap.Characteristic.CurrentHeatingCoolingState.OFF); } } async getCurrentHeatingCoolingState() { this.logger.debug(`Getting ${this.accessory.context.device.name} currentHeatingCoolingState`); return this.device.power && this.device.power.value !== null && this.device.power.value !== undefined && this.device.power.value > 0 ? this.api.hap.Characteristic.CurrentHeatingCoolingState.HEAT : this.api.hap.Characteristic.CurrentHeatingCoolingState.OFF; } async getTargetHeatingCoolingState() { this.logger.debug(`Getting ${this.accessory.context.device.name} targetHeatingCoolingState`); return this.api.hap.Characteristic.TargetHeatingCoolingState.HEAT; } async setTargetHeatingCoolingState(value) { this.logger.debug(`Setting ${this.accessory.context.device.name} targetHeatingCoolingState to ${value}`); } async getTargetTemperature() { var _a, _b; this.logger.debug(`Getting ${this.accessory.context.device.name} target temperature`); return (_b = (_a = this.device.ambientTempSetpoint) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 20; } async setTargetTemperature(value) { var _a; const targetTemperature = value; this.logger.debug(`Setting ${this.accessory.context.device.name} target temparature to ${targetTemperature}`); try { await hiloApi_1.hiloApi.put(`/Automation/v1/api/Locations/${this.accessory.context.device.locationId}/Devices/${this.accessory.context.device.id}/Attributes`, { TargetTemperature: targetTemperature }); } catch (error) { this.logger.error("Failed to set target temperature", axios_1.default.isAxiosError(error) ? (_a = error.response) === null || _a === void 0 ? void 0 : _a.data : error); } } async getCurrentTemperature() { var _a, _b; this.logger.debug(`Getting ${this.accessory.context.device.name} current temperature`); return (_b = (_a = this.device.ambientTemperature) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 20; } async getTemperatureDisplayUnits() { this.logger.debug(`Getting ${this.accessory.context.device.name} temperature display units`); return this.api.hap.Characteristic.TemperatureDisplayUnits.CELSIUS; } async setTemperatureDisplayUnits(value) { this.logger.debug(`Setting ${this.accessory.context.device.name} temperature display units to ${value}`); } } exports.Thermostat = Thermostat; //# sourceMappingURL=Thermostat.js.map