UNPKG

homebridge-texecom-connect

Version:

A Homebridge plugin to integrate with Texecom Connect SmartCom.

51 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecuritySystemTargetAccessory = void 0; const util_1 = require("util"); const requests_1 = require("../interfaces/requests"); const texecom_area_accessory_1 = require("./texecom-area-accessory"); /** * Security System Target Accessory */ class SecuritySystemTargetAccessory extends texecom_area_accessory_1.TexecomAreaAccessory { constructor(platform, accessory) { super(platform, accessory, platform.service.SecuritySystem, platform.characteristic.SecuritySystemTargetState, platform.characteristic.SecuritySystemTargetState.DISARM); } listener() { return; } async setCharacteristic(value) { if (this.config.userCode === undefined) { return; } super.setCharacteristic(value); let state = "Off"; switch (value) { case this.platform.characteristic.SecuritySystemTargetState.STAY_ARM: state = "Home"; break; case this.platform.characteristic.SecuritySystemTargetState.AWAY_ARM: state = "Away"; break; case this.platform.characteristic.SecuritySystemTargetState.NIGHT_ARM: state = "Night"; break; default: } this.platform.log.info("%s : Security System Mode Changed : %s", this.config.name, state); await this.processKeys(this.config.userCode); } async processKeys(keys) { if (this.platform.connection?.writable !== true) { return; } const keyDelay = 500; for (const key of keys) { this.platform.connection.write(`${requests_1.Request.key}${key}`); await (0, util_1.promisify)(global.setTimeout)(keyDelay); } this.platform.connection.write(requests_1.Request.panelStatus); } } exports.SecuritySystemTargetAccessory = SecuritySystemTargetAccessory; //# sourceMappingURL=security-system-target-accessory.js.map