UNPKG

homebridge-texecom-connect

Version:

A Homebridge plugin to integrate with Texecom Connect SmartCom.

65 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecuritySystemAccessory = void 0; const messages_1 = require("../interfaces/messages"); const requests_1 = require("../interfaces/requests"); const texecom_area_accessory_1 = require("./texecom-area-accessory"); /** * Security System Accessory */ class SecuritySystemAccessory extends texecom_area_accessory_1.TexecomAreaAccessory { constructor(platform, accessory) { super(platform, accessory, platform.service.SecuritySystem, platform.characteristic.SecuritySystemCurrentState, platform.characteristic.SecuritySystemCurrentState.DISARMED); // Status - Armed this.platform.accessoryEvent.addListener(messages_1.Messages.systemArmed, this.statusAlarmed.bind(this)); // Status - Disarmed this.platform.accessoryEvent.addListener(messages_1.Messages.systemDisarmed, this.statusDisarmed.bind(this)); // Event - Arming this.platform.accessoryEvent.addListener(this.platform.getAccessoryId(this.config, messages_1.Messages.armingUpdate), this.listenerArming.bind(this)); // Event - Armed this.platform.accessoryEvent.addListener(this.platform.getAccessoryId(this.config, messages_1.Messages.armUpdate), this.listenerArmed.bind(this)); // Event - Triggered this.platform.accessoryEvent.addListener(messages_1.Messages.intruderUpdate, this.listenerTriggered.bind(this)); } getCharacteristic() { if (this.platform.connection?.writable === true) { this.platform.connection.write(requests_1.Request.alarmStatus); } return super.getCharacteristic(); } listener() { // D00?,1 // N this.statusDisarmed(); } listenerArmed(value) { // A00?,0 this.setServiceState(value > 1 ? this.platform.characteristic.SecuritySystemCurrentState.STAY_ARM : this.platform.characteristic.SecuritySystemCurrentState.AWAY_ARM); } listenerArming() { // X00?,0 this.statusDisarmed(); } listenerTriggered() { // L00?,0 this.setServiceState(this.platform.characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED); } statusAlarmed() { // Y if (this.characteristic.value !== this.platform.characteristic.SecuritySystemCurrentState.DISARMED) { return; } this.setServiceState(this.platform.characteristic.SecuritySystemCurrentState.AWAY_ARM); } statusDisarmed() { // N this.setServiceState(this.platform.characteristic.SecuritySystemCurrentState.DISARMED); } setServiceState(current) { this.characteristic.setValue(current); } } exports.SecuritySystemAccessory = SecuritySystemAccessory; //# sourceMappingURL=security-system-current-accessory.js.map