UNPKG

homebridge-loxone-proxy

Version:

Homebridge Dynamic Platform Plugin which exposes a Loxone System to Homekit.

83 lines 3.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecuritySystem = void 0; const BaseService_1 = require("./BaseService"); class SecuritySystem extends BaseService_1.BaseService { constructor() { super(...arguments); this.State = { level: 0, disabledMove: 1, SecuritySystemCurrentState: 3, SecuritySystemTargetState: 3, }; } setupService() { this.service = this.accessory.getService(this.platform.Service.SecuritySystem) || this.accessory.addService(this.platform.Service.SecuritySystem); this.service.getCharacteristic(this.platform.Characteristic.SecuritySystemCurrentState) .onGet(this.handleSecuritySystemCurrentStateGet.bind(this)); this.service.getCharacteristic(this.platform.Characteristic.SecuritySystemTargetState) .onGet(this.handleSecuritySystemTargetStateGet.bind(this)) .onSet(this.handleSecuritySystemTargetStateSet.bind(this)); } updateAlarmState() { if (this.State.level > 0) { this.State.SecuritySystemCurrentState = this.State.SecuritySystemTargetState = 4; } else if (this.State.SecuritySystemCurrentState === 1 && this.State.disabledMove === 1) { this.State.SecuritySystemCurrentState = this.State.SecuritySystemTargetState = 2; } this.service.getCharacteristic(this.platform.Characteristic.SecuritySystemTargetState) .updateValue(this.State.SecuritySystemTargetState); this.service.getCharacteristic(this.platform.Characteristic.SecuritySystemCurrentState) .updateValue(this.State.SecuritySystemCurrentState); } updateService(message) { this.platform.log.debug(`[${this.device.name}] Callback state update for SecuritySystem: ${message.state}: ${message.value}`); if (message.state === 'level') { this.State.level = message.value; } else if (message.state === 'disabledMove') { this.State.disabledMove = message.value; } else { this.State.SecuritySystemTargetState = this.State.SecuritySystemCurrentState = message.value; } this.updateAlarmState(); } handleSecuritySystemCurrentStateGet() { this.platform.log.debug('Triggered GET SecuritySystemCurrentState'); return this.State.SecuritySystemCurrentState; } handleSecuritySystemTargetStateGet() { this.platform.log.debug('Triggered GET SecuritySystemTargetState'); return this.State.SecuritySystemTargetState; } handleSecuritySystemTargetStateSet(value) { if (typeof value === 'number') { this.platform.log.debug('Triggered SET SecuritySystemTargetState:' + value); let command = ''; if (value === 0 || value === 3) { command = 'off'; } else if (value === 1) { command = 'delayedon/1'; } else if (value === 2) { command = 'delayedon/0'; } this.platform.log.debug(`[${this.device.name}] Send command to Loxone: ${command}`); this.platform.LoxoneHandler.sendCommand(this.device.uuidAction, command); this.State.SecuritySystemCurrentState = value; this.service.getCharacteristic(this.platform.Characteristic.SecuritySystemTargetState) .updateValue(this.State.SecuritySystemTargetState); } else { this.platform.log.error('Invalid value type for SecuritySystemTargetState'); } } } exports.SecuritySystem = SecuritySystem; //# sourceMappingURL=SecuritySystem.js.map