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