UNPKG

@homenet/plugin-zway

Version:

Homenet plugin for Z-Way connected Z-Wave devices

158 lines 4.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const events_1 = require("events"); const CLASS_LOCK = 98; class ZwayLock extends events_1.EventEmitter { constructor(id, controller, deviceId) { super(); this.controller = controller; controller.onLockEvent(deviceId, this.onLockEvent.bind(this)); controller.onAlarmEvent(deviceId, this.onAlarmEvent.bind(this)); this.controller = controller; this.device = controller.getLockDevice(deviceId); } set(value) { if (value) { this.device.DoorLock.lock(); } else { this.device.DoorLock.unlock(); } } get() { return this.device.DoorLock.isLocked(); } onLockEvent(e) { if (e.event === 'mode') { this.emit('update', e.data === 0 ? false : true); } } onAlarmEvent(event) { this.emit('alert', { message: alarmEventAsString(event.data) }); this.device.DoorLock.refresh(); } } exports.ZwayLock = ZwayLock; function alarmEventAsString(eventData) { let major; let minor; switch (eventData.alarmType) { case 9: major = 'Deadbolt'; minor = 'jammed'; break; case 18: major = 'Locked with code'; minor = 'by user ' + (eventData.level + 1); break; case 19: major = 'Unlocked with code'; minor = 'by user ' + (eventData.level + 1); break; case 21: major = 'Manually locked'; switch (eventData.level) { case 1: minor = 'by thumb turn or key'; break; case 2: minor = 'by outside pad'; break; default: minor = 'by ' + eventData.level; break; } break; case 22: major = 'Manually unlocked'; switch (eventData.level) { case 1: minor = 'by thumb turn or key'; break; default: minor = 'by ' + eventData.level; break; } break; case 24: major = 'Locked via software'; switch (eventData.level) { case 1: minor = 'by RF module'; break; default: minor = 'by ' + eventData.level; break; } break; case 25: major = 'Unlocked via software'; switch (eventData.level) { case 1: minor = 'by RF module'; break; default: minor = 'by ' + eventData.level; break; } break; case 25: major = 'Lock automatically'; switch (eventData.level) { case 1: minor = 'locked'; break; default: minor = eventData.level; break; } break; case 33: major = 'Deleted user'; minor = eventData.level; break; case 112: major = 'Added or updated user'; minor = eventData.level; break; case 113: major = 'Duplicate code for user'; minor = eventData.level; break; case 130: major = 'RF module power'; minor = 'cycled'; break; case 161: major = 'Tamper alarm -'; switch (eventData.level) { case 1: minor = 'keypad attempts exceed code entry limit'; break; case 2: minor = 'front escutcheon removed from main'; break; default: minor = eventData.level; break; } break; case 167: major = 'Low'; minor = 'battery'; break; case 168: major = 'Critical'; minor = 'battery'; break; case 169: major = 'Insufficient'; minor = 'battery'; break; default: major = eventData.alarmType + ' :'; minor = eventData.level; } return `${major} ${minor}`; } //# sourceMappingURL=lock.js.map