homebridge-loxone-proxy
Version:
Homebridge Dynamic Platform Plugin which exposes a Loxone System to Homekit.
83 lines • 3.76 kB
JavaScript
"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