homebridge-tahoma
Version:
Sample Platform plugin for TaHoma and Cozytouch services (Somfy,Atlantic,Thermor,Sauter): https://github.com/dubocr/homebridge-tahoma
124 lines • 6.15 kB
JavaScript
"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 AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint extends HeatingSystem_1.default {
constructor() {
super(...arguments);
this.THERMOSTAT_CHARACTERISTICS = ['prog'];
this.MIN_TEMP = 7;
this.MAX_TEMP = 28;
this.TARGET_MODES = [
Platform_1.Characteristics.TargetHeatingCoolingState.AUTO,
Platform_1.Characteristics.TargetHeatingCoolingState.OFF,
];
}
registerMainService() {
if (this.device.get('io:NativeFunctionalLevelState') === 'Top') {
this.TARGET_MODES.push(Platform_1.Characteristics.TargetHeatingCoolingState.HEAT);
}
return super.registerMainService();
}
getTargetStateCommands(value) {
var _a, _b;
switch (value) {
case Platform_1.Characteristics.TargetHeatingCoolingState.AUTO:
if (this.device.get('io:NativeFunctionalLevelState') === 'Top') {
return new overkiz_client_1.Command('setOperatingMode', 'auto');
}
else {
return new overkiz_client_1.Command('setOperatingMode', ((_a = this.prog) === null || _a === void 0 ? void 0 : _a.value) ? 'internal' : 'basic');
}
case Platform_1.Characteristics.TargetHeatingCoolingState.HEAT:
if (this.device.get('io:NativeFunctionalLevelState') === 'Top') {
return new overkiz_client_1.Command('setOperatingMode', ((_b = this.prog) === null || _b === void 0 ? void 0 : _b.value) ? 'internal' : 'basic');
}
break;
case Platform_1.Characteristics.TargetHeatingCoolingState.OFF:
return new overkiz_client_1.Command('setOperatingMode', 'standby');
}
return [];
}
getTargetTemperatureCommands(value) {
var _a;
if ((_a = this.prog) === null || _a === void 0 ? void 0 : _a.value) {
return new overkiz_client_1.Command('setDerogatedTargetTemperature', value);
}
else {
return new overkiz_client_1.Command('setTargetTemperature', value);
}
}
onStateChanged(name, value) {
switch (name) {
case 'core:TemperatureState':
this.onTemperatureUpdate(value);
break;
case 'io:EffectiveTemperatureSetpointState':
case 'core:TargetTemperatureState':
case 'io:TargetHeatingLevelState':
case 'core:OperatingModeState':
this.postpone(this.computeStates);
break;
default:
super.onStateChanged(name, value);
break;
}
}
computeStates() {
var _a, _b, _c, _d, _e, _f, _g;
let targetState;
let targetTemperature;
targetState = Platform_1.Characteristics.TargetHeatingCoolingState.AUTO;
switch (this.device.get('core:OperatingModeState')) {
case 'off':
case 'away':
case 'frostprotection':
case 'standby':
targetState = Platform_1.Characteristics.TargetHeatingCoolingState.OFF;
(_a = this.currentState) === null || _a === void 0 ? void 0 : _a.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.OFF);
targetTemperature = this.device.get('core:TargetTemperatureState');
break;
case 'auto':
(_b = this.prog) === null || _b === void 0 ? void 0 : _b.updateValue(false);
if (this.device.get('io:TargetHeatingLevelState') === 'eco') {
(_c = this.currentState) === null || _c === void 0 ? void 0 : _c.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.COOL);
}
else {
(_d = this.currentState) === null || _d === void 0 ? void 0 : _d.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.HEAT);
}
targetTemperature = this.device.get('io:EffectiveTemperatureSetpointState');
break;
case 'prog':
case 'program':
case 'internal':
case 'comfort':
case 'eco':
case 'manual':
case 'basic':
if (this.device.get('io:NativeFunctionalLevelState') === 'Top') {
targetState = Platform_1.Characteristics.TargetHeatingCoolingState.HEAT;
}
(_e = this.prog) === null || _e === void 0 ? void 0 : _e.updateValue(['prog', 'program', 'internal'].includes(this.device.get('core:OperatingModeState')));
if (this.device.get('io:TargetHeatingLevelState') === 'eco') {
(_f = this.currentState) === null || _f === void 0 ? void 0 : _f.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.COOL);
}
else {
(_g = this.currentState) === null || _g === void 0 ? void 0 : _g.updateValue(Platform_1.Characteristics.CurrentHeatingCoolingState.HEAT);
}
targetTemperature = this.device.get('io:EffectiveTemperatureSetpointState');
break;
}
if (this.targetTemperature !== undefined && targetTemperature !== undefined && targetTemperature !== null) {
this.targetTemperature.updateValue(targetTemperature);
}
if (this.targetState !== undefined && targetState !== undefined && this.isIdle) {
this.targetState.updateValue(targetState);
}
}
}
exports.default = AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint;
//# sourceMappingURL=AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint.js.map