homebridge-texecom-connect
Version:
A Homebridge plugin to integrate with Texecom Connect SmartCom.
51 lines • 2.04 kB
JavaScript
;
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