UNPKG

homebridge-tahoma-fork

Version:

Sample Platform plugin for TaHoma and Cozytouch services (Somfy,Atlantic,Thermor,Sauter): https://github.com/Stuard40/homebridge-tahoma

123 lines 6.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Platform_1 = require("../../Platform"); const overkiz_client_1 = require("overkiz-client"); const HeatingSystem_1 = __importDefault(require("../HeatingSystem")); class SomfyThermostat extends HeatingSystem_1.default { constructor() { super(...arguments); this.MIN_TEMP = 0; this.MAX_TEMP = 26; this.TARGET_MODES = [ Platform_1.Characteristics.TargetHeatingCoolingState.AUTO, Platform_1.Characteristics.TargetHeatingCoolingState.HEAT, Platform_1.Characteristics.TargetHeatingCoolingState.COOL, Platform_1.Characteristics.TargetHeatingCoolingState.OFF, ]; this.lastRefresh = Date.now(); } registerMainService() { var _a; const service = super.registerMainService(); (_a = this.targetState) === null || _a === void 0 ? void 0 : _a.onGet(this.refreshStates.bind(this)); return service; } async refreshStates() { var _a, _b; if (this.lastRefresh < Date.now() - (60 * 1000)) { this.lastRefresh = Date.now(); await this.executeCommands(new overkiz_client_1.Command('refreshState')); } return (_b = (_a = this.targetState) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : Platform_1.Characteristics.TargetHeatingCoolingState.OFF; } getTargetStateCommands(value) { switch (value) { case Platform_1.Characteristics.TargetHeatingCoolingState.AUTO: return new overkiz_client_1.Command('exitDerogation'); case Platform_1.Characteristics.TargetHeatingCoolingState.HEAT: return new overkiz_client_1.Command('setDerogation', ['atHomeMode', 'further_notice']); case Platform_1.Characteristics.TargetHeatingCoolingState.COOL: return new overkiz_client_1.Command('setDerogation', ['sleepingMode', 'further_notice']); case Platform_1.Characteristics.TargetHeatingCoolingState.OFF: return new overkiz_client_1.Command('setDerogation', ['awayMode', 'further_notice']); } } getTargetTemperatureCommands(value) { return new overkiz_client_1.Command('setDerogation', [value, 'further_notice']); } onStateChanged(name, value) { switch (name) { case 'core:TargetTemperatureState': case 'core:DerogatedTargetTemperatureState': case 'core:DerogationActivationState': case 'somfythermostat:DerogationHeatingModeState': this.postpone(this.computeStates); break; default: super.onStateChanged(name, value); break; } } computeStates() { var _a, _b, _c; let targetState; let targetTemperature; const derog = this.device.get('core:DerogationActivationState') === 'active'; const mode = this.device.get(derog ? 'somfythermostat:DerogationHeatingModeState' : 'somfythermostat:HeatingModeState'); switch (mode) { case 'atHomeMode': case 'geofencingMode': case 'manualMode': (_a = this.currentState) === null || _a === void 0 ? void 0 : _a.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.HEAT); targetState = derog ? Platform_1.Characteristics.TargetHeatingCoolingState.HEAT : Platform_1.Characteristics.TargetHeatingCoolingState.AUTO; break; case 'sleepingMode': case 'suddenDropMode': (_b = this.currentState) === null || _b === void 0 ? void 0 : _b.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.COOL); targetState = derog ? Platform_1.Characteristics.TargetHeatingCoolingState.COOL : Platform_1.Characteristics.TargetHeatingCoolingState.AUTO; break; case 'awayMode': case 'freezeMode': (_c = this.currentState) === null || _c === void 0 ? void 0 : _c.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.OFF); targetState = Platform_1.Characteristics.TargetHeatingCoolingState.OFF; break; } switch (mode) { case 'atHomeMode': targetTemperature = this.device.get('somfythermostat:AtHomeTargetTemperatureState'); break; case 'geofencingMode': targetTemperature = this.device.get('somfythermostat:GeofencingModeTargetTemperatureState'); break; case 'manualMode': targetTemperature = this.device.get('somfythermostat:ManualModeTargetTemperatureState'); break; case 'sleepingMode': targetTemperature = this.device.get('somfythermostat:SleepingModeTargetTemperatureState'); break; case 'suddenDropMode': targetTemperature = this.device.get('somfythermostat:SuddenDropModeTargetTemperatureState'); break; case 'awayMode': targetTemperature = this.device.get('somfythermostat:AwayModeTargetTemperatureState'); break; case 'freezeMode': targetTemperature = this.device.get('somfythermostat:FreezeModeTargetTemperatureState'); break; } if (targetTemperature === undefined || targetTemperature === null) { targetTemperature = this.device.get(derog ? 'core:DerogatedTargetTemperatureState' : 'core:TargetTemperatureState'); } if (this.targetTemperature !== undefined && targetTemperature !== undefined) { this.targetTemperature.updateValue(targetTemperature); } if (this.targetState !== undefined && targetState !== undefined && this.isIdle) { this.targetState.updateValue(targetState); } } } exports.default = SomfyThermostat; //# sourceMappingURL=SomfyThermostat.js.map