@zwave-js/cc 9.3.1-0-pr-4662-79458fb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cc/AlarmSensorCC.d.ts +54 -0
- package/build/cc/AlarmSensorCC.d.ts.map +1 -0
- package/build/cc/AlarmSensorCC.js +378 -0
- package/build/cc/AlarmSensorCC.js.map +1 -0
- package/build/cc/AssociationCC.d.ts +123 -0
- package/build/cc/AssociationCC.d.ts.map +1 -0
- package/build/cc/AssociationCC.js +615 -0
- package/build/cc/AssociationCC.js.map +1 -0
- package/build/cc/AssociationGroupInfoCC.d.ts +97 -0
- package/build/cc/AssociationGroupInfoCC.d.ts.map +1 -0
- package/build/cc/AssociationGroupInfoCC.js +530 -0
- package/build/cc/AssociationGroupInfoCC.js.map +1 -0
- package/build/cc/BarrierOperatorCC.d.ts +75 -0
- package/build/cc/BarrierOperatorCC.d.ts.map +1 -0
- package/build/cc/BarrierOperatorCC.js +492 -0
- package/build/cc/BarrierOperatorCC.js.map +1 -0
- package/build/cc/BasicCC.d.ts +51 -0
- package/build/cc/BasicCC.d.ts.map +1 -0
- package/build/cc/BasicCC.js +344 -0
- package/build/cc/BasicCC.js.map +1 -0
- package/build/cc/BatteryCC.d.ts +56 -0
- package/build/cc/BatteryCC.d.ts.map +1 -0
- package/build/cc/BatteryCC.js +417 -0
- package/build/cc/BatteryCC.js.map +1 -0
- package/build/cc/BinarySensorCC.d.ts +52 -0
- package/build/cc/BinarySensorCC.d.ts.map +1 -0
- package/build/cc/BinarySensorCC.js +321 -0
- package/build/cc/BinarySensorCC.js.map +1 -0
- package/build/cc/BinarySwitchCC.d.ts +55 -0
- package/build/cc/BinarySwitchCC.d.ts.map +1 -0
- package/build/cc/BinarySwitchCC.js +327 -0
- package/build/cc/BinarySwitchCC.js.map +1 -0
- package/build/cc/CRC16CC.d.ts +28 -0
- package/build/cc/CRC16CC.d.ts.map +1 -0
- package/build/cc/CRC16CC.js +109 -0
- package/build/cc/CRC16CC.js.map +1 -0
- package/build/cc/CentralSceneCC.d.ts +69 -0
- package/build/cc/CentralSceneCC.d.ts.map +1 -0
- package/build/cc/CentralSceneCC.js +443 -0
- package/build/cc/CentralSceneCC.js.map +1 -0
- package/build/cc/ClimateControlScheduleCC.d.ts +78 -0
- package/build/cc/ClimateControlScheduleCC.d.ts.map +1 -0
- package/build/cc/ClimateControlScheduleCC.js +417 -0
- package/build/cc/ClimateControlScheduleCC.js.map +1 -0
- package/build/cc/ClockCC.d.ts +40 -0
- package/build/cc/ClockCC.d.ts.map +1 -0
- package/build/cc/ClockCC.js +185 -0
- package/build/cc/ClockCC.js.map +1 -0
- package/build/cc/ColorSwitchCC.d.ts +98 -0
- package/build/cc/ColorSwitchCC.d.ts.map +1 -0
- package/build/cc/ColorSwitchCC.js +1045 -0
- package/build/cc/ColorSwitchCC.js.map +1 -0
- package/build/cc/ConfigurationCC.d.ts +315 -0
- package/build/cc/ConfigurationCC.d.ts.map +1 -0
- package/build/cc/ConfigurationCC.js +2257 -0
- package/build/cc/ConfigurationCC.js.map +1 -0
- package/build/cc/DeviceResetLocallyCC.d.ts +9 -0
- package/build/cc/DeviceResetLocallyCC.d.ts.map +1 -0
- package/build/cc/DeviceResetLocallyCC.js +28 -0
- package/build/cc/DeviceResetLocallyCC.js.map +1 -0
- package/build/cc/DoorLockCC.d.ts +116 -0
- package/build/cc/DoorLockCC.d.ts.map +1 -0
- package/build/cc/DoorLockCC.js +1112 -0
- package/build/cc/DoorLockCC.js.map +1 -0
- package/build/cc/DoorLockLoggingCC.d.ts +41 -0
- package/build/cc/DoorLockLoggingCC.d.ts.map +1 -0
- package/build/cc/DoorLockLoggingCC.js +288 -0
- package/build/cc/DoorLockLoggingCC.js.map +1 -0
- package/build/cc/EntryControlCC.d.ts +71 -0
- package/build/cc/EntryControlCC.d.ts.map +1 -0
- package/build/cc/EntryControlCC.js +492 -0
- package/build/cc/EntryControlCC.js.map +1 -0
- package/build/cc/FirmwareUpdateMetaDataCC.d.ts +148 -0
- package/build/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -0
- package/build/cc/FirmwareUpdateMetaDataCC.js +727 -0
- package/build/cc/FirmwareUpdateMetaDataCC.js.map +1 -0
- package/build/cc/HailCC.d.ts +6 -0
- package/build/cc/HailCC.d.ts.map +1 -0
- package/build/cc/HailCC.js +23 -0
- package/build/cc/HailCC.js.map +1 -0
- package/build/cc/HumidityControlModeCC.d.ts +47 -0
- package/build/cc/HumidityControlModeCC.d.ts.map +1 -0
- package/build/cc/HumidityControlModeCC.js +288 -0
- package/build/cc/HumidityControlModeCC.js.map +1 -0
- package/build/cc/HumidityControlOperatingStateCC.d.ts +24 -0
- package/build/cc/HumidityControlOperatingStateCC.d.ts.map +1 -0
- package/build/cc/HumidityControlOperatingStateCC.js +129 -0
- package/build/cc/HumidityControlOperatingStateCC.js.map +1 -0
- package/build/cc/HumidityControlSetpointCC.d.ts +103 -0
- package/build/cc/HumidityControlSetpointCC.d.ts.map +1 -0
- package/build/cc/HumidityControlSetpointCC.js +626 -0
- package/build/cc/HumidityControlSetpointCC.js.map +1 -0
- package/build/cc/IndicatorCC.d.ts +88 -0
- package/build/cc/IndicatorCC.d.ts.map +1 -0
- package/build/cc/IndicatorCC.js +758 -0
- package/build/cc/IndicatorCC.js.map +1 -0
- package/build/cc/IrrigationCC.d.ts +278 -0
- package/build/cc/IrrigationCC.d.ts.map +1 -0
- package/build/cc/IrrigationCC.js +2062 -0
- package/build/cc/IrrigationCC.js.map +1 -0
- package/build/cc/LanguageCC.d.ts +41 -0
- package/build/cc/LanguageCC.d.ts.map +1 -0
- package/build/cc/LanguageCC.js +220 -0
- package/build/cc/LanguageCC.js.map +1 -0
- package/build/cc/LockCC.d.ts +41 -0
- package/build/cc/LockCC.d.ts.map +1 -0
- package/build/cc/LockCC.js +185 -0
- package/build/cc/LockCC.js.map +1 -0
- package/build/cc/ManufacturerProprietaryCC.d.ts +31 -0
- package/build/cc/ManufacturerProprietaryCC.d.ts.map +1 -0
- package/build/cc/ManufacturerProprietaryCC.js +275 -0
- package/build/cc/ManufacturerProprietaryCC.js.map +1 -0
- package/build/cc/ManufacturerSpecificCC.d.ts +59 -0
- package/build/cc/ManufacturerSpecificCC.d.ts.map +1 -0
- package/build/cc/ManufacturerSpecificCC.js +285 -0
- package/build/cc/ManufacturerSpecificCC.js.map +1 -0
- package/build/cc/MeterCC.d.ts +100 -0
- package/build/cc/MeterCC.d.ts.map +1 -0
- package/build/cc/MeterCC.js +820 -0
- package/build/cc/MeterCC.js.map +1 -0
- package/build/cc/MultiChannelAssociationCC.d.ts +127 -0
- package/build/cc/MultiChannelAssociationCC.d.ts.map +1 -0
- package/build/cc/MultiChannelAssociationCC.js +883 -0
- package/build/cc/MultiChannelAssociationCC.js.map +1 -0
- package/build/cc/MultiChannelCC.d.ts +164 -0
- package/build/cc/MultiChannelCC.d.ts.map +1 -0
- package/build/cc/MultiChannelCC.js +1004 -0
- package/build/cc/MultiChannelCC.js.map +1 -0
- package/build/cc/MultiCommandCC.d.ts +28 -0
- package/build/cc/MultiCommandCC.d.ts.map +1 -0
- package/build/cc/MultiCommandCC.js +137 -0
- package/build/cc/MultiCommandCC.js.map +1 -0
- package/build/cc/MultilevelSensorCC.d.ts +83 -0
- package/build/cc/MultilevelSensorCC.d.ts.map +1 -0
- package/build/cc/MultilevelSensorCC.js +633 -0
- package/build/cc/MultilevelSensorCC.js.map +1 -0
- package/build/cc/MultilevelSwitchCC.d.ts +86 -0
- package/build/cc/MultilevelSwitchCC.d.ts.map +1 -0
- package/build/cc/MultilevelSwitchCC.js +774 -0
- package/build/cc/MultilevelSwitchCC.js.map +1 -0
- package/build/cc/NoOperationCC.d.ts +17 -0
- package/build/cc/NoOperationCC.d.ts.map +1 -0
- package/build/cc/NoOperationCC.js +50 -0
- package/build/cc/NoOperationCC.js.map +1 -0
- package/build/cc/NodeNamingCC.d.ts +57 -0
- package/build/cc/NodeNamingCC.d.ts.map +1 -0
- package/build/cc/NodeNamingCC.js +313 -0
- package/build/cc/NodeNamingCC.js.map +1 -0
- package/build/cc/NotificationCC.d.ts +127 -0
- package/build/cc/NotificationCC.d.ts.map +1 -0
- package/build/cc/NotificationCC.js +1193 -0
- package/build/cc/NotificationCC.js.map +1 -0
- package/build/cc/PowerlevelCC.d.ts +63 -0
- package/build/cc/PowerlevelCC.d.ts.map +1 -0
- package/build/cc/PowerlevelCC.js +262 -0
- package/build/cc/PowerlevelCC.js.map +1 -0
- package/build/cc/ProtectionCC.d.ts +94 -0
- package/build/cc/ProtectionCC.d.ts.map +1 -0
- package/build/cc/ProtectionCC.js +630 -0
- package/build/cc/ProtectionCC.js.map +1 -0
- package/build/cc/SceneActivationCC.d.ts +34 -0
- package/build/cc/SceneActivationCC.d.ts.map +1 -0
- package/build/cc/SceneActivationCC.js +170 -0
- package/build/cc/SceneActivationCC.js.map +1 -0
- package/build/cc/SceneActuatorConfigurationCC.d.ts +52 -0
- package/build/cc/SceneActuatorConfigurationCC.d.ts.map +1 -0
- package/build/cc/SceneActuatorConfigurationCC.js +368 -0
- package/build/cc/SceneActuatorConfigurationCC.js.map +1 -0
- package/build/cc/SceneControllerConfigurationCC.d.ts +61 -0
- package/build/cc/SceneControllerConfigurationCC.d.ts.map +1 -0
- package/build/cc/SceneControllerConfigurationCC.js +444 -0
- package/build/cc/SceneControllerConfigurationCC.js.map +1 -0
- package/build/cc/Security2CC.d.ts +213 -0
- package/build/cc/Security2CC.d.ts.map +1 -0
- package/build/cc/Security2CC.js +1124 -0
- package/build/cc/Security2CC.js.map +1 -0
- package/build/cc/SecurityCC.d.ts +109 -0
- package/build/cc/SecurityCC.d.ts.map +1 -0
- package/build/cc/SecurityCC.js +609 -0
- package/build/cc/SecurityCC.js.map +1 -0
- package/build/cc/SoundSwitchCC.d.ts +87 -0
- package/build/cc/SoundSwitchCC.d.ts.map +1 -0
- package/build/cc/SoundSwitchCC.js +548 -0
- package/build/cc/SoundSwitchCC.js.map +1 -0
- package/build/cc/SupervisionCC.d.ts +63 -0
- package/build/cc/SupervisionCC.d.ts.map +1 -0
- package/build/cc/SupervisionCC.js +239 -0
- package/build/cc/SupervisionCC.js.map +1 -0
- package/build/cc/ThermostatFanModeCC.d.ts +53 -0
- package/build/cc/ThermostatFanModeCC.d.ts.map +1 -0
- package/build/cc/ThermostatFanModeCC.js +359 -0
- package/build/cc/ThermostatFanModeCC.js.map +1 -0
- package/build/cc/ThermostatFanStateCC.d.ts +24 -0
- package/build/cc/ThermostatFanStateCC.d.ts.map +1 -0
- package/build/cc/ThermostatFanStateCC.js +131 -0
- package/build/cc/ThermostatFanStateCC.js.map +1 -0
- package/build/cc/ThermostatModeCC.d.ts +58 -0
- package/build/cc/ThermostatModeCC.d.ts.map +1 -0
- package/build/cc/ThermostatModeCC.js +370 -0
- package/build/cc/ThermostatModeCC.js.map +1 -0
- package/build/cc/ThermostatOperatingStateCC.d.ts +24 -0
- package/build/cc/ThermostatOperatingStateCC.d.ts.map +1 -0
- package/build/cc/ThermostatOperatingStateCC.js +127 -0
- package/build/cc/ThermostatOperatingStateCC.js.map +1 -0
- package/build/cc/ThermostatSetbackCC.d.ts +42 -0
- package/build/cc/ThermostatSetbackCC.d.ts.map +1 -0
- package/build/cc/ThermostatSetbackCC.js +237 -0
- package/build/cc/ThermostatSetbackCC.js.map +1 -0
- package/build/cc/ThermostatSetpointCC.d.ts +98 -0
- package/build/cc/ThermostatSetpointCC.d.ts.map +1 -0
- package/build/cc/ThermostatSetpointCC.js +707 -0
- package/build/cc/ThermostatSetpointCC.js.map +1 -0
- package/build/cc/TimeCC.d.ts +78 -0
- package/build/cc/TimeCC.d.ts.map +1 -0
- package/build/cc/TimeCC.js +373 -0
- package/build/cc/TimeCC.js.map +1 -0
- package/build/cc/TimeParametersCC.d.ts +40 -0
- package/build/cc/TimeParametersCC.d.ts.map +1 -0
- package/build/cc/TimeParametersCC.js +275 -0
- package/build/cc/TimeParametersCC.js.map +1 -0
- package/build/cc/TransportServiceCC.d.ts +101 -0
- package/build/cc/TransportServiceCC.d.ts.map +1 -0
- package/build/cc/TransportServiceCC.js +404 -0
- package/build/cc/TransportServiceCC.js.map +1 -0
- package/build/cc/UserCodeCC.d.ts +219 -0
- package/build/cc/UserCodeCC.d.ts.map +1 -0
- package/build/cc/UserCodeCC.js +1526 -0
- package/build/cc/UserCodeCC.js.map +1 -0
- package/build/cc/VersionCC.d.ts +91 -0
- package/build/cc/VersionCC.d.ts.map +1 -0
- package/build/cc/VersionCC.js +654 -0
- package/build/cc/VersionCC.js.map +1 -0
- package/build/cc/WakeUpCC.d.ts +67 -0
- package/build/cc/WakeUpCC.d.ts.map +1 -0
- package/build/cc/WakeUpCC.js +425 -0
- package/build/cc/WakeUpCC.js.map +1 -0
- package/build/cc/ZWavePlusCC.d.ts +40 -0
- package/build/cc/ZWavePlusCC.d.ts.map +1 -0
- package/build/cc/ZWavePlusCC.js +269 -0
- package/build/cc/ZWavePlusCC.js.map +1 -0
- package/build/cc/index.d.ts +64 -0
- package/build/cc/index.d.ts.map +1 -0
- package/build/cc/index.js +496 -0
- package/build/cc/index.js.map +1 -0
- package/build/cc/manufacturerProprietary/FibaroCC.d.ts +62 -0
- package/build/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -0
- package/build/cc/manufacturerProprietary/FibaroCC.js +247 -0
- package/build/cc/manufacturerProprietary/FibaroCC.js.map +1 -0
- package/build/index.d.ts +11 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +48 -0
- package/build/index.js.map +1 -0
- package/build/index_safe.d.ts +4 -0
- package/build/index_safe.d.ts.map +1 -0
- package/build/index_safe.js +30 -0
- package/build/index_safe.js.map +1 -0
- package/build/lib/API.d.ts +176 -0
- package/build/lib/API.d.ts.map +1 -0
- package/build/lib/API.js +325 -0
- package/build/lib/API.js.map +1 -0
- package/build/lib/CommandClass.d.ts +341 -0
- package/build/lib/CommandClass.d.ts.map +1 -0
- package/build/lib/CommandClass.js +1088 -0
- package/build/lib/CommandClass.js.map +1 -0
- package/build/lib/EncapsulatingCommandClass.d.ts +35 -0
- package/build/lib/EncapsulatingCommandClass.d.ts.map +1 -0
- package/build/lib/EncapsulatingCommandClass.js +53 -0
- package/build/lib/EncapsulatingCommandClass.js.map +1 -0
- package/build/lib/ICommandClassContainer.d.ts +9 -0
- package/build/lib/ICommandClassContainer.d.ts.map +1 -0
- package/build/lib/ICommandClassContainer.js +12 -0
- package/build/lib/ICommandClassContainer.js.map +1 -0
- package/build/lib/NotificationEventPayload.d.ts +11 -0
- package/build/lib/NotificationEventPayload.d.ts.map +1 -0
- package/build/lib/NotificationEventPayload.js +11 -0
- package/build/lib/NotificationEventPayload.js.map +1 -0
- package/build/lib/Security2/Extension.d.ts +87 -0
- package/build/lib/Security2/Extension.d.ts.map +1 -0
- package/build/lib/Security2/Extension.js +235 -0
- package/build/lib/Security2/Extension.js.map +1 -0
- package/build/lib/Security2/shared.d.ts +31 -0
- package/build/lib/Security2/shared.d.ts.map +1 -0
- package/build/lib/Security2/shared.js +37 -0
- package/build/lib/Security2/shared.js.map +1 -0
- package/build/lib/_Types.d.ts +1446 -0
- package/build/lib/_Types.d.ts.map +1 -0
- package/build/lib/_Types.js +1334 -0
- package/build/lib/_Types.js.map +1 -0
- package/build/lib/serializers.d.ts +24 -0
- package/build/lib/serializers.d.ts.map +1 -0
- package/build/lib/serializers.js +66 -0
- package/build/lib/serializers.js.map +1 -0
- package/build/lib/utils.d.ts +13 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +675 -0
- package/build/lib/utils.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,1112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var _a, _b;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DoorLockCCCapabilitiesGet = exports.DoorLockCCCapabilitiesReport = exports.DoorLockCCConfigurationSet = exports.DoorLockCCConfigurationGet = exports.DoorLockCCConfigurationReport = exports.DoorLockCCOperationGet = exports.DoorLockCCOperationReport = exports.DoorLockCCOperationSet = exports.DoorLockCC = exports.DoorLockCCAPI = exports.getDoorStatusValueId = exports.getBoltStatusValueId = exports.getLatchStatusValueId = exports.getDoorSupportedValueId = exports.getBoltSupportedValueId = exports.getLatchSupportedValueId = exports.getOperationTypeValueId = exports.getCurrentModeValueId = exports.getTargetModeValueId = void 0;
|
|
11
|
+
function __assertType(argName, typeName, boundHasError) {
|
|
12
|
+
const { ZWaveError, ZWaveErrorCodes } = require("@zwave-js/core");
|
|
13
|
+
if (boundHasError()) {
|
|
14
|
+
throw new ZWaveError(typeName ? `${argName} is not a ${typeName}` : `${argName} has the wrong type`, ZWaveErrorCodes.Argument_Invalid);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const __assertType__DoorLockMode = $o => {
|
|
18
|
+
function su__1__2__3__4__5__6__7__8_eu($o) {
|
|
19
|
+
return ![0, 1, 16, 17, 32, 33, 254, 255].includes($o) ? {} : null;
|
|
20
|
+
}
|
|
21
|
+
return su__1__2__3__4__5__6__7__8_eu($o);
|
|
22
|
+
};
|
|
23
|
+
const __assertType__DoorLockCCConfigurationSetOptions = $o => {
|
|
24
|
+
function _6($o) {
|
|
25
|
+
return $o !== 2 ? {} : null;
|
|
26
|
+
}
|
|
27
|
+
function _number($o) {
|
|
28
|
+
return typeof $o !== "number" ? {} : null;
|
|
29
|
+
}
|
|
30
|
+
function _2($o) {
|
|
31
|
+
if (typeof $o !== "object" || $o === null || Array.isArray($o))
|
|
32
|
+
return {};
|
|
33
|
+
if ("operationType" in $o && $o["operationType"] !== undefined) {
|
|
34
|
+
const error = _6($o["operationType"]);
|
|
35
|
+
if (error)
|
|
36
|
+
return error;
|
|
37
|
+
}
|
|
38
|
+
else
|
|
39
|
+
return {};
|
|
40
|
+
if ("lockTimeoutConfiguration" in $o && $o["lockTimeoutConfiguration"] !== undefined) {
|
|
41
|
+
const error = _number($o["lockTimeoutConfiguration"]);
|
|
42
|
+
if (error)
|
|
43
|
+
return error;
|
|
44
|
+
}
|
|
45
|
+
else
|
|
46
|
+
return {};
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function _boolean($o) {
|
|
50
|
+
return typeof $o !== "boolean" ? {} : null;
|
|
51
|
+
}
|
|
52
|
+
function st__boolean__boolean__boolean__boolean_et_9_9_9_9($o) {
|
|
53
|
+
if (!Array.isArray($o) || $o.length < 4 || 4 < $o.length)
|
|
54
|
+
return {};
|
|
55
|
+
{
|
|
56
|
+
const error = _boolean($o[0]);
|
|
57
|
+
if (error)
|
|
58
|
+
return error;
|
|
59
|
+
}
|
|
60
|
+
{
|
|
61
|
+
const error = _boolean($o[1]);
|
|
62
|
+
if (error)
|
|
63
|
+
return error;
|
|
64
|
+
}
|
|
65
|
+
{
|
|
66
|
+
const error = _boolean($o[2]);
|
|
67
|
+
if (error)
|
|
68
|
+
return error;
|
|
69
|
+
}
|
|
70
|
+
{
|
|
71
|
+
const error = _boolean($o[3]);
|
|
72
|
+
if (error)
|
|
73
|
+
return error;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
function _3($o) {
|
|
78
|
+
if (typeof $o !== "object" || $o === null || Array.isArray($o))
|
|
79
|
+
return {};
|
|
80
|
+
if ("outsideHandlesCanOpenDoorConfiguration" in $o && $o["outsideHandlesCanOpenDoorConfiguration"] !== undefined) {
|
|
81
|
+
const error = st__boolean__boolean__boolean__boolean_et_9_9_9_9($o["outsideHandlesCanOpenDoorConfiguration"]);
|
|
82
|
+
if (error)
|
|
83
|
+
return error;
|
|
84
|
+
}
|
|
85
|
+
else
|
|
86
|
+
return {};
|
|
87
|
+
if ("insideHandlesCanOpenDoorConfiguration" in $o && $o["insideHandlesCanOpenDoorConfiguration"] !== undefined) {
|
|
88
|
+
const error = st__boolean__boolean__boolean__boolean_et_9_9_9_9($o["insideHandlesCanOpenDoorConfiguration"]);
|
|
89
|
+
if (error)
|
|
90
|
+
return error;
|
|
91
|
+
}
|
|
92
|
+
else
|
|
93
|
+
return {};
|
|
94
|
+
if ("autoRelockTime" in $o && $o["autoRelockTime"] !== undefined) {
|
|
95
|
+
const error = _number($o["autoRelockTime"]);
|
|
96
|
+
if (error)
|
|
97
|
+
return error;
|
|
98
|
+
}
|
|
99
|
+
if ("holdAndReleaseTime" in $o && $o["holdAndReleaseTime"] !== undefined) {
|
|
100
|
+
const error = _number($o["holdAndReleaseTime"]);
|
|
101
|
+
if (error)
|
|
102
|
+
return error;
|
|
103
|
+
}
|
|
104
|
+
if ("twistAssist" in $o && $o["twistAssist"] !== undefined) {
|
|
105
|
+
const error = _boolean($o["twistAssist"]);
|
|
106
|
+
if (error)
|
|
107
|
+
return error;
|
|
108
|
+
}
|
|
109
|
+
if ("blockToBlock" in $o && $o["blockToBlock"] !== undefined) {
|
|
110
|
+
const error = _boolean($o["blockToBlock"]);
|
|
111
|
+
if (error)
|
|
112
|
+
return error;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
function si__2__3_ei($o) {
|
|
117
|
+
const conditions = [_2, _3];
|
|
118
|
+
for (const condition of conditions) {
|
|
119
|
+
const error = condition($o);
|
|
120
|
+
if (error)
|
|
121
|
+
return error;
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
function _13($o) {
|
|
126
|
+
return $o !== 1 ? {} : null;
|
|
127
|
+
}
|
|
128
|
+
function _undefined($o) {
|
|
129
|
+
return $o !== undefined ? {} : null;
|
|
130
|
+
}
|
|
131
|
+
function _5($o) {
|
|
132
|
+
if (typeof $o !== "object" || $o === null || Array.isArray($o))
|
|
133
|
+
return {};
|
|
134
|
+
if ("operationType" in $o && $o["operationType"] !== undefined) {
|
|
135
|
+
const error = _13($o["operationType"]);
|
|
136
|
+
if (error)
|
|
137
|
+
return error;
|
|
138
|
+
}
|
|
139
|
+
else
|
|
140
|
+
return {};
|
|
141
|
+
if ("lockTimeoutConfiguration" in $o && $o["lockTimeoutConfiguration"] !== undefined) {
|
|
142
|
+
const error = _undefined($o["lockTimeoutConfiguration"]);
|
|
143
|
+
if (error)
|
|
144
|
+
return error;
|
|
145
|
+
}
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
function si__5__3_ei($o) {
|
|
149
|
+
const conditions = [_5, _3];
|
|
150
|
+
for (const condition of conditions) {
|
|
151
|
+
const error = condition($o);
|
|
152
|
+
if (error)
|
|
153
|
+
return error;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function su_si__2__3_ei_si__5__3_ei_eu($o) {
|
|
158
|
+
const conditions = [si__2__3_ei, si__5__3_ei];
|
|
159
|
+
for (const condition of conditions) {
|
|
160
|
+
const error = condition($o);
|
|
161
|
+
if (!error)
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
return {};
|
|
165
|
+
}
|
|
166
|
+
return su_si__2__3_ei_si__5__3_ei_eu($o);
|
|
167
|
+
};
|
|
168
|
+
const safe_1 = require("@zwave-js/core/safe");
|
|
169
|
+
const safe_2 = require("@zwave-js/shared/safe");
|
|
170
|
+
const typeguards_1 = require("alcalzone-shared/typeguards");
|
|
171
|
+
const API_1 = require("../lib/API");
|
|
172
|
+
const CommandClass_1 = require("../lib/CommandClass");
|
|
173
|
+
const _Types_1 = require("../lib/_Types");
|
|
174
|
+
function getTargetModeValueId(endpoint) {
|
|
175
|
+
return {
|
|
176
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
177
|
+
endpoint,
|
|
178
|
+
property: "targetMode",
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
exports.getTargetModeValueId = getTargetModeValueId;
|
|
182
|
+
function getCurrentModeValueId(endpoint) {
|
|
183
|
+
return {
|
|
184
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
185
|
+
endpoint,
|
|
186
|
+
property: "currentMode",
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
exports.getCurrentModeValueId = getCurrentModeValueId;
|
|
190
|
+
function getOperationTypeValueId(endpoint) {
|
|
191
|
+
return {
|
|
192
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
193
|
+
endpoint,
|
|
194
|
+
property: "operationType",
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
exports.getOperationTypeValueId = getOperationTypeValueId;
|
|
198
|
+
function getLatchSupportedValueId(endpoint) {
|
|
199
|
+
return {
|
|
200
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
201
|
+
endpoint,
|
|
202
|
+
property: "latchSupported",
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
exports.getLatchSupportedValueId = getLatchSupportedValueId;
|
|
206
|
+
function getBoltSupportedValueId(endpoint) {
|
|
207
|
+
return {
|
|
208
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
209
|
+
endpoint,
|
|
210
|
+
property: "boltSupported",
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
exports.getBoltSupportedValueId = getBoltSupportedValueId;
|
|
214
|
+
function getDoorSupportedValueId(endpoint) {
|
|
215
|
+
return {
|
|
216
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
217
|
+
endpoint,
|
|
218
|
+
property: "doorSupported",
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
exports.getDoorSupportedValueId = getDoorSupportedValueId;
|
|
222
|
+
function getLatchStatusValueId(endpoint) {
|
|
223
|
+
return {
|
|
224
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
225
|
+
endpoint,
|
|
226
|
+
property: "latchStatus",
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
exports.getLatchStatusValueId = getLatchStatusValueId;
|
|
230
|
+
function getLatchStatusValueMetadata() {
|
|
231
|
+
return {
|
|
232
|
+
...safe_1.ValueMetadata.ReadOnly,
|
|
233
|
+
label: "The current status of the latch",
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
function getBoltStatusValueId(endpoint) {
|
|
237
|
+
return {
|
|
238
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
239
|
+
endpoint,
|
|
240
|
+
property: "boltStatus",
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
exports.getBoltStatusValueId = getBoltStatusValueId;
|
|
244
|
+
function getBoltStatusValueMetadata() {
|
|
245
|
+
return {
|
|
246
|
+
...safe_1.ValueMetadata.ReadOnly,
|
|
247
|
+
label: "The current status of the bolt",
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function getDoorStatusValueId(endpoint) {
|
|
251
|
+
return {
|
|
252
|
+
commandClass: safe_1.CommandClasses["Door Lock"],
|
|
253
|
+
endpoint,
|
|
254
|
+
property: "doorStatus",
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
exports.getDoorStatusValueId = getDoorStatusValueId;
|
|
258
|
+
function getDoorStatusValueMetadata() {
|
|
259
|
+
return {
|
|
260
|
+
...safe_1.ValueMetadata.ReadOnly,
|
|
261
|
+
label: "The current status of the door",
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
const configurationSetParameters = [
|
|
265
|
+
"operationType",
|
|
266
|
+
"outsideHandlesCanOpenDoorConfiguration",
|
|
267
|
+
"insideHandlesCanOpenDoorConfiguration",
|
|
268
|
+
"lockTimeoutConfiguration",
|
|
269
|
+
"autoRelockTime",
|
|
270
|
+
"holdAndReleaseTime",
|
|
271
|
+
"twistAssist",
|
|
272
|
+
"blockToBlock",
|
|
273
|
+
];
|
|
274
|
+
let DoorLockCCAPI = class DoorLockCCAPI extends API_1.PhysicalCCAPI {
|
|
275
|
+
constructor() {
|
|
276
|
+
super(...arguments);
|
|
277
|
+
this[_a] = async ({ property }, value) => {
|
|
278
|
+
var _c;
|
|
279
|
+
if (property === "targetMode") {
|
|
280
|
+
if (typeof value !== "number") {
|
|
281
|
+
(0, API_1.throwWrongValueType)(this.ccId, property, "number", typeof value);
|
|
282
|
+
}
|
|
283
|
+
await this.set(value);
|
|
284
|
+
// Verify the current value after a delay
|
|
285
|
+
this.schedulePoll({ property }, value);
|
|
286
|
+
}
|
|
287
|
+
else if (typeof property === "string" &&
|
|
288
|
+
configurationSetParameters.includes(property)) {
|
|
289
|
+
// checking every type here would create a LOT of duplicate code, so we don't
|
|
290
|
+
// ConfigurationSet expects all parameters --> read the others from cache
|
|
291
|
+
const config = {
|
|
292
|
+
[property]: value,
|
|
293
|
+
};
|
|
294
|
+
for (const param of configurationSetParameters) {
|
|
295
|
+
if (param !== property) {
|
|
296
|
+
config[param] = (_c = this.tryGetValueDB()) === null || _c === void 0 ? void 0 : _c.getValue({
|
|
297
|
+
commandClass: this.ccId,
|
|
298
|
+
endpoint: this.endpoint.index,
|
|
299
|
+
property: param,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Fix insideHandlesCanOpenDoorConfiguration is not iterable
|
|
304
|
+
const allTrue = [true, true, true, true];
|
|
305
|
+
if (!config.insideHandlesCanOpenDoorConfiguration) {
|
|
306
|
+
config.insideHandlesCanOpenDoorConfiguration = allTrue;
|
|
307
|
+
}
|
|
308
|
+
if (!config.outsideHandlesCanOpenDoorConfiguration) {
|
|
309
|
+
config.outsideHandlesCanOpenDoorConfiguration = allTrue;
|
|
310
|
+
}
|
|
311
|
+
await this.setConfiguration(config);
|
|
312
|
+
// Refresh the current value
|
|
313
|
+
// TODO: #1321, #1521
|
|
314
|
+
await this.getConfiguration();
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
(0, API_1.throwUnsupportedProperty)(this.ccId, property);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
this[_b] = async ({ property, }) => {
|
|
321
|
+
var _c, _d;
|
|
322
|
+
switch (property) {
|
|
323
|
+
case "currentMode":
|
|
324
|
+
case "targetMode":
|
|
325
|
+
case "duration":
|
|
326
|
+
case "outsideHandlesCanOpenDoor":
|
|
327
|
+
case "insideHandlesCanOpenDoor":
|
|
328
|
+
case "latchStatus":
|
|
329
|
+
case "boltStatus":
|
|
330
|
+
case "doorStatus":
|
|
331
|
+
case "lockTimeout":
|
|
332
|
+
return (_c = (await this.get())) === null || _c === void 0 ? void 0 : _c[property];
|
|
333
|
+
case "operationType":
|
|
334
|
+
case "outsideHandlesCanOpenDoorConfiguration":
|
|
335
|
+
case "insideHandlesCanOpenDoorConfiguration":
|
|
336
|
+
case "lockTimeoutConfiguration":
|
|
337
|
+
case "autoRelockTime":
|
|
338
|
+
case "holdAndReleaseTime":
|
|
339
|
+
case "twistAssist":
|
|
340
|
+
case "blockToBlock":
|
|
341
|
+
return (_d = (await this.getConfiguration())) === null || _d === void 0 ? void 0 : _d[property];
|
|
342
|
+
default:
|
|
343
|
+
(0, API_1.throwUnsupportedProperty)(this.ccId, property);
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
supportsCommand(cmd) {
|
|
348
|
+
switch (cmd) {
|
|
349
|
+
case _Types_1.DoorLockCommand.OperationSet:
|
|
350
|
+
case _Types_1.DoorLockCommand.OperationGet:
|
|
351
|
+
case _Types_1.DoorLockCommand.ConfigurationSet:
|
|
352
|
+
case _Types_1.DoorLockCommand.ConfigurationGet:
|
|
353
|
+
return true; // This is mandatory
|
|
354
|
+
case _Types_1.DoorLockCommand.CapabilitiesGet:
|
|
355
|
+
return this.version >= 4;
|
|
356
|
+
}
|
|
357
|
+
return super.supportsCommand(cmd);
|
|
358
|
+
}
|
|
359
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
360
|
+
async getCapabilities() {
|
|
361
|
+
this.assertSupportsCommand(_Types_1.DoorLockCommand, _Types_1.DoorLockCommand.CapabilitiesGet);
|
|
362
|
+
const cc = new DoorLockCCCapabilitiesGet(this.applHost, {
|
|
363
|
+
nodeId: this.endpoint.nodeId,
|
|
364
|
+
endpoint: this.endpoint.index,
|
|
365
|
+
});
|
|
366
|
+
const response = await this.applHost.sendCommand(cc, this.commandOptions);
|
|
367
|
+
if (response) {
|
|
368
|
+
return (0, safe_2.pick)(response, [
|
|
369
|
+
"autoRelockSupported",
|
|
370
|
+
"blockToBlockSupported",
|
|
371
|
+
"boltSupported",
|
|
372
|
+
"doorSupported",
|
|
373
|
+
"holdAndReleaseSupported",
|
|
374
|
+
"latchSupported",
|
|
375
|
+
"twistAssistSupported",
|
|
376
|
+
"supportedDoorLockModes",
|
|
377
|
+
"supportedInsideHandles",
|
|
378
|
+
"supportedOperationTypes",
|
|
379
|
+
"supportedOutsideHandles",
|
|
380
|
+
]);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
384
|
+
async get() {
|
|
385
|
+
this.assertSupportsCommand(_Types_1.DoorLockCommand, _Types_1.DoorLockCommand.OperationGet);
|
|
386
|
+
const cc = new DoorLockCCOperationGet(this.applHost, {
|
|
387
|
+
nodeId: this.endpoint.nodeId,
|
|
388
|
+
endpoint: this.endpoint.index,
|
|
389
|
+
});
|
|
390
|
+
const response = await this.applHost.sendCommand(cc, this.commandOptions);
|
|
391
|
+
if (response) {
|
|
392
|
+
return (0, safe_2.pick)(response, [
|
|
393
|
+
"currentMode",
|
|
394
|
+
"targetMode",
|
|
395
|
+
"duration",
|
|
396
|
+
"outsideHandlesCanOpenDoor",
|
|
397
|
+
"insideHandlesCanOpenDoor",
|
|
398
|
+
"latchStatus",
|
|
399
|
+
"boltStatus",
|
|
400
|
+
"doorStatus",
|
|
401
|
+
"lockTimeout",
|
|
402
|
+
]);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
async set(mode) {
|
|
406
|
+
__assertType("mode", "DoorLockMode", __assertType__DoorLockMode.bind(void 0, mode));
|
|
407
|
+
this.assertSupportsCommand(_Types_1.DoorLockCommand, _Types_1.DoorLockCommand.OperationSet);
|
|
408
|
+
const cc = new DoorLockCCOperationSet(this.applHost, {
|
|
409
|
+
nodeId: this.endpoint.nodeId,
|
|
410
|
+
endpoint: this.endpoint.index,
|
|
411
|
+
mode,
|
|
412
|
+
});
|
|
413
|
+
await this.applHost.sendCommand(cc, this.commandOptions);
|
|
414
|
+
}
|
|
415
|
+
async setConfiguration(configuration) {
|
|
416
|
+
__assertType("configuration", "DoorLockCCConfigurationSetOptions", __assertType__DoorLockCCConfigurationSetOptions.bind(void 0, configuration));
|
|
417
|
+
this.assertSupportsCommand(_Types_1.DoorLockCommand, _Types_1.DoorLockCommand.ConfigurationSet);
|
|
418
|
+
const cc = new DoorLockCCConfigurationSet(this.applHost, {
|
|
419
|
+
nodeId: this.endpoint.nodeId,
|
|
420
|
+
endpoint: this.endpoint.index,
|
|
421
|
+
...configuration,
|
|
422
|
+
});
|
|
423
|
+
await this.applHost.sendCommand(cc, this.commandOptions);
|
|
424
|
+
}
|
|
425
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
426
|
+
async getConfiguration() {
|
|
427
|
+
this.assertSupportsCommand(_Types_1.DoorLockCommand, _Types_1.DoorLockCommand.ConfigurationGet);
|
|
428
|
+
const cc = new DoorLockCCConfigurationGet(this.applHost, {
|
|
429
|
+
nodeId: this.endpoint.nodeId,
|
|
430
|
+
endpoint: this.endpoint.index,
|
|
431
|
+
});
|
|
432
|
+
const response = await this.applHost.sendCommand(cc, this.commandOptions);
|
|
433
|
+
if (response) {
|
|
434
|
+
return (0, safe_2.pick)(response, [
|
|
435
|
+
"operationType",
|
|
436
|
+
"outsideHandlesCanOpenDoorConfiguration",
|
|
437
|
+
"insideHandlesCanOpenDoorConfiguration",
|
|
438
|
+
"lockTimeoutConfiguration",
|
|
439
|
+
"autoRelockTime",
|
|
440
|
+
"holdAndReleaseTime",
|
|
441
|
+
"twistAssist",
|
|
442
|
+
"blockToBlock",
|
|
443
|
+
]);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
_a = API_1.SET_VALUE, _b = API_1.POLL_VALUE;
|
|
448
|
+
DoorLockCCAPI = __decorate([
|
|
449
|
+
(0, CommandClass_1.API)(safe_1.CommandClasses["Door Lock"])
|
|
450
|
+
], DoorLockCCAPI);
|
|
451
|
+
exports.DoorLockCCAPI = DoorLockCCAPI;
|
|
452
|
+
let DoorLockCC = class DoorLockCC extends CommandClass_1.CommandClass {
|
|
453
|
+
async interview(applHost) {
|
|
454
|
+
const node = this.getNode(applHost);
|
|
455
|
+
const endpoint = this.getEndpoint(applHost);
|
|
456
|
+
const api = API_1.CCAPI.create(safe_1.CommandClasses["Door Lock"], applHost, endpoint).withOptions({
|
|
457
|
+
priority: safe_1.MessagePriority.NodeQuery,
|
|
458
|
+
});
|
|
459
|
+
const valueDB = this.getValueDB(applHost);
|
|
460
|
+
applHost.controllerLog.logNode(node.id, {
|
|
461
|
+
endpoint: this.endpointIndex,
|
|
462
|
+
message: `Interviewing ${this.ccName}...`,
|
|
463
|
+
direction: "none",
|
|
464
|
+
});
|
|
465
|
+
// We need to do some queries after a potential timeout
|
|
466
|
+
// In this case, do now mark this CC as interviewed completely
|
|
467
|
+
let hadCriticalTimeout = false;
|
|
468
|
+
// By default, assume all status sensors to be supported
|
|
469
|
+
let doorSupported = true;
|
|
470
|
+
let boltSupported = true;
|
|
471
|
+
let latchSupported = true;
|
|
472
|
+
if (this.version >= 4) {
|
|
473
|
+
applHost.controllerLog.logNode(node.id, {
|
|
474
|
+
endpoint: this.endpointIndex,
|
|
475
|
+
message: "requesting lock capabilities...",
|
|
476
|
+
direction: "outbound",
|
|
477
|
+
});
|
|
478
|
+
const resp = await api.getCapabilities();
|
|
479
|
+
if (resp) {
|
|
480
|
+
const logMessage = `received lock capabilities:
|
|
481
|
+
supported operation types: ${resp.supportedOperationTypes
|
|
482
|
+
.map((t) => (0, safe_2.getEnumMemberName)(_Types_1.DoorLockOperationType, t))
|
|
483
|
+
.join(", ")}
|
|
484
|
+
supported door lock modes: ${resp.supportedDoorLockModes
|
|
485
|
+
.map((t) => (0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, t))
|
|
486
|
+
.map((str) => `\n· ${str}`)
|
|
487
|
+
.join("")}
|
|
488
|
+
supported outside handles: ${resp.supportedOutsideHandles
|
|
489
|
+
.map(String)
|
|
490
|
+
.join(", ")}
|
|
491
|
+
supported inside handles: ${resp.supportedInsideHandles.map(String).join(", ")}
|
|
492
|
+
supports door status: ${resp.doorSupported}
|
|
493
|
+
supports bolt status: ${resp.boltSupported}
|
|
494
|
+
supports latch status: ${resp.latchSupported}
|
|
495
|
+
supports auto-relock: ${resp.autoRelockSupported}
|
|
496
|
+
supports hold-and-release: ${resp.holdAndReleaseSupported}
|
|
497
|
+
supports twist assist: ${resp.twistAssistSupported}
|
|
498
|
+
supports block to block: ${resp.blockToBlockSupported}`;
|
|
499
|
+
applHost.controllerLog.logNode(node.id, {
|
|
500
|
+
endpoint: this.endpointIndex,
|
|
501
|
+
message: logMessage,
|
|
502
|
+
direction: "inbound",
|
|
503
|
+
});
|
|
504
|
+
doorSupported = resp.doorSupported;
|
|
505
|
+
boltSupported = resp.boltSupported;
|
|
506
|
+
latchSupported = resp.latchSupported;
|
|
507
|
+
// Update metadata of settable states
|
|
508
|
+
valueDB.setMetadata(getTargetModeValueId(this.endpointIndex), {
|
|
509
|
+
...safe_1.ValueMetadata.UInt8,
|
|
510
|
+
states: (0, safe_1.enumValuesToMetadataStates)(_Types_1.DoorLockMode, resp.supportedDoorLockModes),
|
|
511
|
+
});
|
|
512
|
+
valueDB.setMetadata(getOperationTypeValueId(this.endpointIndex), {
|
|
513
|
+
...safe_1.ValueMetadata.UInt8,
|
|
514
|
+
states: (0, safe_1.enumValuesToMetadataStates)(_Types_1.DoorLockOperationType, resp.supportedOperationTypes),
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
hadCriticalTimeout = true;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
if (!hadCriticalTimeout) {
|
|
522
|
+
// Save support information for the status values
|
|
523
|
+
valueDB.setMetadata(getDoorStatusValueId(this.endpointIndex), doorSupported ? getDoorStatusValueMetadata() : undefined);
|
|
524
|
+
valueDB.setValue(getDoorSupportedValueId(this.endpointIndex), doorSupported);
|
|
525
|
+
valueDB.setMetadata(getLatchStatusValueId(this.endpointIndex), latchSupported ? getLatchStatusValueMetadata() : undefined);
|
|
526
|
+
valueDB.setValue(getLatchSupportedValueId(this.endpointIndex), latchSupported);
|
|
527
|
+
valueDB.setMetadata(getBoltStatusValueId(this.endpointIndex), boltSupported ? getBoltStatusValueMetadata() : undefined);
|
|
528
|
+
valueDB.setValue(getBoltSupportedValueId(this.endpointIndex), boltSupported);
|
|
529
|
+
}
|
|
530
|
+
await this.refreshValues(applHost);
|
|
531
|
+
// Remember that the interview is complete
|
|
532
|
+
if (!hadCriticalTimeout)
|
|
533
|
+
this.setInterviewComplete(applHost, true);
|
|
534
|
+
}
|
|
535
|
+
async refreshValues(applHost) {
|
|
536
|
+
var _c, _d, _e, _f;
|
|
537
|
+
const node = this.getNode(applHost);
|
|
538
|
+
const endpoint = this.getEndpoint(applHost);
|
|
539
|
+
const api = API_1.CCAPI.create(safe_1.CommandClasses["Door Lock"], applHost, endpoint).withOptions({
|
|
540
|
+
priority: safe_1.MessagePriority.NodeQuery,
|
|
541
|
+
});
|
|
542
|
+
applHost.controllerLog.logNode(node.id, {
|
|
543
|
+
endpoint: this.endpointIndex,
|
|
544
|
+
message: "requesting lock configuration...",
|
|
545
|
+
direction: "outbound",
|
|
546
|
+
});
|
|
547
|
+
const config = await api.getConfiguration();
|
|
548
|
+
if (config) {
|
|
549
|
+
let logMessage = `received lock configuration:
|
|
550
|
+
operation type: ${(0, safe_2.getEnumMemberName)(_Types_1.DoorLockOperationType, config.operationType)}`;
|
|
551
|
+
if (config.operationType === _Types_1.DoorLockOperationType.Timed) {
|
|
552
|
+
logMessage += `
|
|
553
|
+
lock timeout: ${config.lockTimeoutConfiguration} seconds
|
|
554
|
+
`;
|
|
555
|
+
}
|
|
556
|
+
logMessage += `
|
|
557
|
+
outside handles can open door: ${config.outsideHandlesCanOpenDoorConfiguration
|
|
558
|
+
.map(String)
|
|
559
|
+
.join(", ")}
|
|
560
|
+
inside handles can open door: ${config.insideHandlesCanOpenDoorConfiguration
|
|
561
|
+
.map(String)
|
|
562
|
+
.join(", ")}`;
|
|
563
|
+
if (this.version >= 4) {
|
|
564
|
+
logMessage += `
|
|
565
|
+
auto-relock time ${(_c = config.autoRelockTime) !== null && _c !== void 0 ? _c : "-"} seconds
|
|
566
|
+
hold-and-release time ${(_d = config.holdAndReleaseTime) !== null && _d !== void 0 ? _d : "-"} seconds
|
|
567
|
+
twist assist ${!!config.twistAssist}
|
|
568
|
+
block to block ${!!config.blockToBlock}`;
|
|
569
|
+
}
|
|
570
|
+
applHost.controllerLog.logNode(node.id, {
|
|
571
|
+
endpoint: this.endpointIndex,
|
|
572
|
+
message: logMessage,
|
|
573
|
+
direction: "inbound",
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
applHost.controllerLog.logNode(node.id, {
|
|
577
|
+
endpoint: this.endpointIndex,
|
|
578
|
+
message: "requesting current lock status...",
|
|
579
|
+
direction: "outbound",
|
|
580
|
+
});
|
|
581
|
+
const status = await api.get();
|
|
582
|
+
if (status) {
|
|
583
|
+
let logMessage = `received lock status:
|
|
584
|
+
current mode: ${(0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, status.currentMode)}`;
|
|
585
|
+
if (status.targetMode != undefined) {
|
|
586
|
+
logMessage += `
|
|
587
|
+
target mode: ${(0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, status.targetMode)}
|
|
588
|
+
remaining duration: ${(_f = (_e = status.duration) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : "undefined"}`;
|
|
589
|
+
}
|
|
590
|
+
if (status.lockTimeout != undefined) {
|
|
591
|
+
logMessage += `
|
|
592
|
+
lock timeout: ${status.lockTimeout} seconds`;
|
|
593
|
+
}
|
|
594
|
+
if (status.doorStatus != undefined) {
|
|
595
|
+
logMessage += `
|
|
596
|
+
door status: ${status.doorStatus}`;
|
|
597
|
+
}
|
|
598
|
+
if (status.boltStatus != undefined) {
|
|
599
|
+
logMessage += `
|
|
600
|
+
bolt status: ${status.boltStatus}`;
|
|
601
|
+
}
|
|
602
|
+
if (status.latchStatus != undefined) {
|
|
603
|
+
logMessage += `
|
|
604
|
+
latch status: ${status.latchStatus}`;
|
|
605
|
+
}
|
|
606
|
+
applHost.controllerLog.logNode(node.id, {
|
|
607
|
+
endpoint: this.endpointIndex,
|
|
608
|
+
message: logMessage,
|
|
609
|
+
direction: "inbound",
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
};
|
|
614
|
+
DoorLockCC = __decorate([
|
|
615
|
+
(0, CommandClass_1.commandClass)(safe_1.CommandClasses["Door Lock"]),
|
|
616
|
+
(0, CommandClass_1.implementedVersion)(4)
|
|
617
|
+
], DoorLockCC);
|
|
618
|
+
exports.DoorLockCC = DoorLockCC;
|
|
619
|
+
let DoorLockCCOperationSet = class DoorLockCCOperationSet extends DoorLockCC {
|
|
620
|
+
constructor(host, options) {
|
|
621
|
+
super(host, options);
|
|
622
|
+
if ((0, CommandClass_1.gotDeserializationOptions)(options)) {
|
|
623
|
+
// TODO: Deserialize payload
|
|
624
|
+
throw new safe_1.ZWaveError(`${this.constructor.name}: deserialization not implemented`, safe_1.ZWaveErrorCodes.Deserialization_NotImplemented);
|
|
625
|
+
}
|
|
626
|
+
else {
|
|
627
|
+
if (options.mode === _Types_1.DoorLockMode.Unknown) {
|
|
628
|
+
throw new safe_1.ZWaveError(`Unknown is not a valid door lock target state!`, safe_1.ZWaveErrorCodes.Argument_Invalid);
|
|
629
|
+
}
|
|
630
|
+
this.mode = options.mode;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
serialize() {
|
|
634
|
+
this.payload = Buffer.from([this.mode]);
|
|
635
|
+
return super.serialize();
|
|
636
|
+
}
|
|
637
|
+
toLogEntry(applHost) {
|
|
638
|
+
return {
|
|
639
|
+
...super.toLogEntry(applHost),
|
|
640
|
+
message: {
|
|
641
|
+
"target mode": (0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, this.mode),
|
|
642
|
+
},
|
|
643
|
+
};
|
|
644
|
+
}
|
|
645
|
+
};
|
|
646
|
+
DoorLockCCOperationSet = __decorate([
|
|
647
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.OperationSet)
|
|
648
|
+
], DoorLockCCOperationSet);
|
|
649
|
+
exports.DoorLockCCOperationSet = DoorLockCCOperationSet;
|
|
650
|
+
let DoorLockCCOperationReport = class DoorLockCCOperationReport extends DoorLockCC {
|
|
651
|
+
constructor(host, options) {
|
|
652
|
+
super(host, options);
|
|
653
|
+
(0, safe_1.validatePayload)(this.payload.length >= 5);
|
|
654
|
+
this.currentMode = this.payload[0];
|
|
655
|
+
this.outsideHandlesCanOpenDoor = [
|
|
656
|
+
!!(this.payload[1] & 16),
|
|
657
|
+
!!(this.payload[1] & 32),
|
|
658
|
+
!!(this.payload[1] & 64),
|
|
659
|
+
!!(this.payload[1] & 128),
|
|
660
|
+
];
|
|
661
|
+
this.insideHandlesCanOpenDoor = [
|
|
662
|
+
!!(this.payload[1] & 0b0001),
|
|
663
|
+
!!(this.payload[1] & 0b0010),
|
|
664
|
+
!!(this.payload[1] & 0b0100),
|
|
665
|
+
!!(this.payload[1] & 0b1000),
|
|
666
|
+
];
|
|
667
|
+
this.doorStatus = !!(this.payload[2] & 0b1) ? "closed" : "open";
|
|
668
|
+
this.boltStatus = !!(this.payload[2] & 0b10) ? "unlocked" : "locked";
|
|
669
|
+
this.latchStatus = !!(this.payload[2] & 0b100) ? "closed" : "open";
|
|
670
|
+
// Ignore invalid timeout values
|
|
671
|
+
const lockTimeoutMinutes = this.payload[3];
|
|
672
|
+
const lockTimeoutSeconds = this.payload[4];
|
|
673
|
+
if (lockTimeoutMinutes <= 253 && lockTimeoutSeconds <= 59) {
|
|
674
|
+
this.lockTimeout = lockTimeoutSeconds + lockTimeoutMinutes * 60;
|
|
675
|
+
}
|
|
676
|
+
if (this.version >= 3 && this.payload.length >= 7) {
|
|
677
|
+
this.targetMode = this.payload[5];
|
|
678
|
+
this.duration = safe_1.Duration.parseReport(this.payload[6]);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
persistValues(applHost) {
|
|
682
|
+
if (!super.persistValues(applHost))
|
|
683
|
+
return false;
|
|
684
|
+
const valueDB = this.getValueDB(applHost);
|
|
685
|
+
// Only store the door/bolt/latch status if the lock supports it
|
|
686
|
+
const supportsDoorStatus = !!valueDB.getValue(getDoorSupportedValueId(this.endpointIndex));
|
|
687
|
+
if (supportsDoorStatus) {
|
|
688
|
+
const valueId = getDoorStatusValueId(this.endpointIndex);
|
|
689
|
+
valueDB.setValue(valueId, this.doorStatus);
|
|
690
|
+
}
|
|
691
|
+
const supportsBoltStatus = !!valueDB.getValue(getBoltSupportedValueId(this.endpointIndex));
|
|
692
|
+
if (supportsBoltStatus) {
|
|
693
|
+
const valueId = getBoltStatusValueId(this.endpointIndex);
|
|
694
|
+
valueDB.setValue(valueId, this.boltStatus);
|
|
695
|
+
}
|
|
696
|
+
const supportsLatchStatus = !!valueDB.getValue(getLatchSupportedValueId(this.endpointIndex));
|
|
697
|
+
if (supportsLatchStatus) {
|
|
698
|
+
const valueId = getLatchStatusValueId(this.endpointIndex);
|
|
699
|
+
valueDB.setValue(valueId, this.latchStatus);
|
|
700
|
+
}
|
|
701
|
+
return true;
|
|
702
|
+
}
|
|
703
|
+
toLogEntry(applHost) {
|
|
704
|
+
const message = {
|
|
705
|
+
"current mode": (0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, this.currentMode),
|
|
706
|
+
"active outside handles": this.outsideHandlesCanOpenDoor.join(", "),
|
|
707
|
+
"active inside handles": this.insideHandlesCanOpenDoor.join(", "),
|
|
708
|
+
};
|
|
709
|
+
if (this.latchStatus != undefined) {
|
|
710
|
+
message["latch status"] = this.latchStatus;
|
|
711
|
+
}
|
|
712
|
+
if (this.boltStatus != undefined) {
|
|
713
|
+
message["bolt status"] = this.boltStatus;
|
|
714
|
+
}
|
|
715
|
+
if (this.doorStatus != undefined) {
|
|
716
|
+
message["door status"] = this.doorStatus;
|
|
717
|
+
}
|
|
718
|
+
if (this.targetMode != undefined) {
|
|
719
|
+
message["target mode"] = (0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, this.targetMode);
|
|
720
|
+
}
|
|
721
|
+
if (this.duration != undefined) {
|
|
722
|
+
message["remaining duration"] = this.duration.toString();
|
|
723
|
+
}
|
|
724
|
+
if (this.lockTimeout != undefined) {
|
|
725
|
+
message["lock timeout"] = `${this.lockTimeout} seconds`;
|
|
726
|
+
}
|
|
727
|
+
return {
|
|
728
|
+
...super.toLogEntry(applHost),
|
|
729
|
+
message,
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
};
|
|
733
|
+
__decorate([
|
|
734
|
+
(0, CommandClass_1.ccValue)(),
|
|
735
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
736
|
+
...safe_1.ValueMetadata.ReadOnlyUInt8,
|
|
737
|
+
label: "Current lock mode",
|
|
738
|
+
states: (0, safe_1.enumValuesToMetadataStates)(_Types_1.DoorLockMode),
|
|
739
|
+
})
|
|
740
|
+
], DoorLockCCOperationReport.prototype, "currentMode", void 0);
|
|
741
|
+
__decorate([
|
|
742
|
+
(0, CommandClass_1.ccValue)(),
|
|
743
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
744
|
+
...safe_1.ValueMetadata.UInt8,
|
|
745
|
+
label: "Target lock mode",
|
|
746
|
+
states: (0, safe_1.enumValuesToMetadataStates)(_Types_1.DoorLockMode),
|
|
747
|
+
})
|
|
748
|
+
], DoorLockCCOperationReport.prototype, "targetMode", void 0);
|
|
749
|
+
__decorate([
|
|
750
|
+
(0, CommandClass_1.ccValue)({ minVersion: 3 }),
|
|
751
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
752
|
+
...safe_1.ValueMetadata.ReadOnlyDuration,
|
|
753
|
+
label: "Remaining duration until target lock mode",
|
|
754
|
+
})
|
|
755
|
+
], DoorLockCCOperationReport.prototype, "duration", void 0);
|
|
756
|
+
__decorate([
|
|
757
|
+
(0, CommandClass_1.ccValue)(),
|
|
758
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
759
|
+
...safe_1.ValueMetadata.ReadOnly,
|
|
760
|
+
label: "Which outside handles can open the door (actual status)",
|
|
761
|
+
})
|
|
762
|
+
], DoorLockCCOperationReport.prototype, "outsideHandlesCanOpenDoor", void 0);
|
|
763
|
+
__decorate([
|
|
764
|
+
(0, CommandClass_1.ccValue)(),
|
|
765
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
766
|
+
...safe_1.ValueMetadata.ReadOnly,
|
|
767
|
+
label: "Which inside handles can open the door (actual status)",
|
|
768
|
+
})
|
|
769
|
+
], DoorLockCCOperationReport.prototype, "insideHandlesCanOpenDoor", void 0);
|
|
770
|
+
__decorate([
|
|
771
|
+
(0, CommandClass_1.ccValue)(),
|
|
772
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
773
|
+
...safe_1.ValueMetadata.ReadOnlyNumber,
|
|
774
|
+
label: "Seconds until lock mode times out",
|
|
775
|
+
})
|
|
776
|
+
], DoorLockCCOperationReport.prototype, "lockTimeout", void 0);
|
|
777
|
+
DoorLockCCOperationReport = __decorate([
|
|
778
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.OperationReport)
|
|
779
|
+
], DoorLockCCOperationReport);
|
|
780
|
+
exports.DoorLockCCOperationReport = DoorLockCCOperationReport;
|
|
781
|
+
let DoorLockCCOperationGet = class DoorLockCCOperationGet extends DoorLockCC {
|
|
782
|
+
};
|
|
783
|
+
DoorLockCCOperationGet = __decorate([
|
|
784
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.OperationGet),
|
|
785
|
+
(0, CommandClass_1.expectedCCResponse)(DoorLockCCOperationReport)
|
|
786
|
+
], DoorLockCCOperationGet);
|
|
787
|
+
exports.DoorLockCCOperationGet = DoorLockCCOperationGet;
|
|
788
|
+
let DoorLockCCConfigurationReport = class DoorLockCCConfigurationReport extends DoorLockCC {
|
|
789
|
+
constructor(host, options) {
|
|
790
|
+
super(host, options);
|
|
791
|
+
(0, safe_1.validatePayload)(this.payload.length >= 4);
|
|
792
|
+
this.operationType = this.payload[0];
|
|
793
|
+
this.outsideHandlesCanOpenDoorConfiguration = [
|
|
794
|
+
!!(this.payload[1] & 16),
|
|
795
|
+
!!(this.payload[1] & 32),
|
|
796
|
+
!!(this.payload[1] & 64),
|
|
797
|
+
!!(this.payload[1] & 128),
|
|
798
|
+
];
|
|
799
|
+
this.insideHandlesCanOpenDoorConfiguration = [
|
|
800
|
+
!!(this.payload[1] & 0b0001),
|
|
801
|
+
!!(this.payload[1] & 0b0010),
|
|
802
|
+
!!(this.payload[1] & 0b0100),
|
|
803
|
+
!!(this.payload[1] & 0b1000),
|
|
804
|
+
];
|
|
805
|
+
if (this.operationType === _Types_1.DoorLockOperationType.Timed) {
|
|
806
|
+
const lockTimeoutMinutes = this.payload[2];
|
|
807
|
+
const lockTimeoutSeconds = this.payload[3];
|
|
808
|
+
if (lockTimeoutMinutes <= 0xfd && lockTimeoutSeconds <= 59) {
|
|
809
|
+
this.lockTimeoutConfiguration =
|
|
810
|
+
lockTimeoutSeconds + lockTimeoutMinutes * 60;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
if (this.version >= 4 && this.payload.length >= 5) {
|
|
814
|
+
this.autoRelockTime = this.payload.readUInt16BE(4);
|
|
815
|
+
this.holdAndReleaseTime = this.payload.readUInt16BE(6);
|
|
816
|
+
const flags = this.payload[8];
|
|
817
|
+
this.twistAssist = !!(flags & 0b1);
|
|
818
|
+
this.blockToBlock = !!(flags & 0b10);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
toLogEntry(applHost) {
|
|
822
|
+
const message = {
|
|
823
|
+
"operation type": (0, safe_2.getEnumMemberName)(_Types_1.DoorLockOperationType, this.operationType),
|
|
824
|
+
"outside handle configuration": this.outsideHandlesCanOpenDoorConfiguration.join(", "),
|
|
825
|
+
"inside handle configuration": this.insideHandlesCanOpenDoorConfiguration.join(", "),
|
|
826
|
+
};
|
|
827
|
+
if (this.lockTimeoutConfiguration != undefined) {
|
|
828
|
+
message["timed mode duration"] = `${this.lockTimeoutConfiguration} seconds`;
|
|
829
|
+
}
|
|
830
|
+
if (this.autoRelockTime != undefined) {
|
|
831
|
+
message["auto-relock time"] = `${this.autoRelockTime} seconds`;
|
|
832
|
+
}
|
|
833
|
+
if (this.holdAndReleaseTime != undefined) {
|
|
834
|
+
message["hold-and-release time"] = `${this.holdAndReleaseTime} seconds`;
|
|
835
|
+
}
|
|
836
|
+
if (this.twistAssist != undefined) {
|
|
837
|
+
message["twist assist enabled"] = this.twistAssist;
|
|
838
|
+
}
|
|
839
|
+
if (this.blockToBlock != undefined) {
|
|
840
|
+
message["block-to-block enabled"] = this.blockToBlock;
|
|
841
|
+
}
|
|
842
|
+
return {
|
|
843
|
+
...super.toLogEntry(applHost),
|
|
844
|
+
message,
|
|
845
|
+
};
|
|
846
|
+
}
|
|
847
|
+
};
|
|
848
|
+
__decorate([
|
|
849
|
+
(0, CommandClass_1.ccValue)(),
|
|
850
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
851
|
+
...safe_1.ValueMetadata.UInt8,
|
|
852
|
+
label: "Lock operation type",
|
|
853
|
+
states: (0, safe_1.enumValuesToMetadataStates)(_Types_1.DoorLockOperationType),
|
|
854
|
+
})
|
|
855
|
+
], DoorLockCCConfigurationReport.prototype, "operationType", void 0);
|
|
856
|
+
__decorate([
|
|
857
|
+
(0, CommandClass_1.ccValue)(),
|
|
858
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
859
|
+
...safe_1.ValueMetadata.Any,
|
|
860
|
+
label: "Which outside handles can open the door (configuration)",
|
|
861
|
+
})
|
|
862
|
+
], DoorLockCCConfigurationReport.prototype, "outsideHandlesCanOpenDoorConfiguration", void 0);
|
|
863
|
+
__decorate([
|
|
864
|
+
(0, CommandClass_1.ccValue)(),
|
|
865
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
866
|
+
...safe_1.ValueMetadata.Any,
|
|
867
|
+
label: "Which inside handles can open the door (configuration)",
|
|
868
|
+
})
|
|
869
|
+
], DoorLockCCConfigurationReport.prototype, "insideHandlesCanOpenDoorConfiguration", void 0);
|
|
870
|
+
__decorate([
|
|
871
|
+
(0, CommandClass_1.ccValue)(),
|
|
872
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
873
|
+
...safe_1.ValueMetadata.UInt16,
|
|
874
|
+
label: "Duration of timed mode in seconds",
|
|
875
|
+
})
|
|
876
|
+
], DoorLockCCConfigurationReport.prototype, "lockTimeoutConfiguration", void 0);
|
|
877
|
+
__decorate([
|
|
878
|
+
(0, CommandClass_1.ccValue)({ minVersion: 4 }),
|
|
879
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
880
|
+
...safe_1.ValueMetadata.UInt16,
|
|
881
|
+
label: "Duration in seconds until lock returns to secure state",
|
|
882
|
+
})
|
|
883
|
+
], DoorLockCCConfigurationReport.prototype, "autoRelockTime", void 0);
|
|
884
|
+
__decorate([
|
|
885
|
+
(0, CommandClass_1.ccValue)({ minVersion: 4 }),
|
|
886
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
887
|
+
...safe_1.ValueMetadata.UInt16,
|
|
888
|
+
label: "Duration in seconds the latch stays retracted",
|
|
889
|
+
})
|
|
890
|
+
], DoorLockCCConfigurationReport.prototype, "holdAndReleaseTime", void 0);
|
|
891
|
+
__decorate([
|
|
892
|
+
(0, CommandClass_1.ccValue)({ minVersion: 4 }),
|
|
893
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
894
|
+
...safe_1.ValueMetadata.Boolean,
|
|
895
|
+
label: "Twist Assist enabled",
|
|
896
|
+
})
|
|
897
|
+
], DoorLockCCConfigurationReport.prototype, "twistAssist", void 0);
|
|
898
|
+
__decorate([
|
|
899
|
+
(0, CommandClass_1.ccValue)({ minVersion: 4 }),
|
|
900
|
+
(0, CommandClass_1.ccValueMetadata)({
|
|
901
|
+
...safe_1.ValueMetadata.Boolean,
|
|
902
|
+
label: "Block-to-block functionality enabled",
|
|
903
|
+
})
|
|
904
|
+
], DoorLockCCConfigurationReport.prototype, "blockToBlock", void 0);
|
|
905
|
+
DoorLockCCConfigurationReport = __decorate([
|
|
906
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.ConfigurationReport)
|
|
907
|
+
], DoorLockCCConfigurationReport);
|
|
908
|
+
exports.DoorLockCCConfigurationReport = DoorLockCCConfigurationReport;
|
|
909
|
+
let DoorLockCCConfigurationGet = class DoorLockCCConfigurationGet extends DoorLockCC {
|
|
910
|
+
};
|
|
911
|
+
DoorLockCCConfigurationGet = __decorate([
|
|
912
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.ConfigurationGet),
|
|
913
|
+
(0, CommandClass_1.expectedCCResponse)(DoorLockCCConfigurationReport)
|
|
914
|
+
], DoorLockCCConfigurationGet);
|
|
915
|
+
exports.DoorLockCCConfigurationGet = DoorLockCCConfigurationGet;
|
|
916
|
+
let DoorLockCCConfigurationSet = class DoorLockCCConfigurationSet extends DoorLockCC {
|
|
917
|
+
constructor(host, options) {
|
|
918
|
+
super(host, options);
|
|
919
|
+
if ((0, CommandClass_1.gotDeserializationOptions)(options)) {
|
|
920
|
+
// TODO: Deserialize payload
|
|
921
|
+
throw new safe_1.ZWaveError(`${this.constructor.name}: deserialization not implemented`, safe_1.ZWaveErrorCodes.Deserialization_NotImplemented);
|
|
922
|
+
}
|
|
923
|
+
else {
|
|
924
|
+
this.operationType = options.operationType;
|
|
925
|
+
this.outsideHandlesCanOpenDoorConfiguration =
|
|
926
|
+
options.outsideHandlesCanOpenDoorConfiguration;
|
|
927
|
+
this.insideHandlesCanOpenDoorConfiguration =
|
|
928
|
+
options.insideHandlesCanOpenDoorConfiguration;
|
|
929
|
+
this.lockTimeoutConfiguration = options.lockTimeoutConfiguration;
|
|
930
|
+
this.autoRelockTime = options.autoRelockTime;
|
|
931
|
+
this.holdAndReleaseTime = options.holdAndReleaseTime;
|
|
932
|
+
this.twistAssist = options.twistAssist;
|
|
933
|
+
this.blockToBlock = options.blockToBlock;
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
serialize() {
|
|
937
|
+
var _c, _d;
|
|
938
|
+
const insideHandles = (0, typeguards_1.isArray)(this.insideHandlesCanOpenDoorConfiguration)
|
|
939
|
+
? this.insideHandlesCanOpenDoorConfiguration
|
|
940
|
+
: [];
|
|
941
|
+
const outsideHandles = (0, typeguards_1.isArray)(this.outsideHandlesCanOpenDoorConfiguration)
|
|
942
|
+
? this.outsideHandlesCanOpenDoorConfiguration
|
|
943
|
+
: [];
|
|
944
|
+
const handles = [...insideHandles, ...outsideHandles]
|
|
945
|
+
.map((val, i) => (val ? 1 << i : 0))
|
|
946
|
+
.reduce((acc, cur) => acc | cur, 0);
|
|
947
|
+
let lockTimeoutMinutes;
|
|
948
|
+
let lockTimeoutSeconds;
|
|
949
|
+
if (this.operationType === _Types_1.DoorLockOperationType.Constant) {
|
|
950
|
+
lockTimeoutMinutes = lockTimeoutSeconds = 0xfe;
|
|
951
|
+
}
|
|
952
|
+
else {
|
|
953
|
+
lockTimeoutMinutes = Math.floor(this.lockTimeoutConfiguration / 60);
|
|
954
|
+
lockTimeoutSeconds = this.lockTimeoutConfiguration % 60;
|
|
955
|
+
}
|
|
956
|
+
this.payload = Buffer.from([
|
|
957
|
+
this.operationType,
|
|
958
|
+
handles,
|
|
959
|
+
lockTimeoutMinutes,
|
|
960
|
+
lockTimeoutSeconds,
|
|
961
|
+
]);
|
|
962
|
+
if (this.version >= 4 &&
|
|
963
|
+
(this.twistAssist != undefined ||
|
|
964
|
+
this.blockToBlock != undefined ||
|
|
965
|
+
this.autoRelockTime != undefined ||
|
|
966
|
+
this.holdAndReleaseTime != undefined)) {
|
|
967
|
+
const flags = (this.twistAssist ? 0b1 : 0) | (this.blockToBlock ? 0b10 : 0);
|
|
968
|
+
this.payload = Buffer.concat([
|
|
969
|
+
this.payload,
|
|
970
|
+
Buffer.from([
|
|
971
|
+
// placeholder for auto relock time
|
|
972
|
+
0,
|
|
973
|
+
0,
|
|
974
|
+
// placeholder for hold and release time
|
|
975
|
+
0,
|
|
976
|
+
0,
|
|
977
|
+
flags,
|
|
978
|
+
]),
|
|
979
|
+
]);
|
|
980
|
+
this.payload.writeUInt16BE(((_c = this.autoRelockTime) !== null && _c !== void 0 ? _c : 0) & 0xffff, 4);
|
|
981
|
+
this.payload.writeUInt16BE(((_d = this.holdAndReleaseTime) !== null && _d !== void 0 ? _d : 0) & 0xffff, 6);
|
|
982
|
+
}
|
|
983
|
+
return super.serialize();
|
|
984
|
+
}
|
|
985
|
+
toLogEntry(applHost) {
|
|
986
|
+
const insideHandles = (0, typeguards_1.isArray)(this.insideHandlesCanOpenDoorConfiguration)
|
|
987
|
+
? this.insideHandlesCanOpenDoorConfiguration
|
|
988
|
+
: [];
|
|
989
|
+
const outsideHandles = (0, typeguards_1.isArray)(this.outsideHandlesCanOpenDoorConfiguration)
|
|
990
|
+
? this.outsideHandlesCanOpenDoorConfiguration
|
|
991
|
+
: [];
|
|
992
|
+
const message = {
|
|
993
|
+
"operation type": (0, safe_2.getEnumMemberName)(_Types_1.DoorLockOperationType, this.operationType),
|
|
994
|
+
"outside handle configuration": outsideHandles.join(", "),
|
|
995
|
+
"inside handle configuration": insideHandles.join(", "),
|
|
996
|
+
};
|
|
997
|
+
if (this.lockTimeoutConfiguration != undefined) {
|
|
998
|
+
message["timed mode duration"] = `${this.lockTimeoutConfiguration} seconds`;
|
|
999
|
+
}
|
|
1000
|
+
if (this.autoRelockTime != undefined) {
|
|
1001
|
+
message["auto-relock time"] = `${this.autoRelockTime} seconds`;
|
|
1002
|
+
}
|
|
1003
|
+
if (this.holdAndReleaseTime != undefined) {
|
|
1004
|
+
message["hold-and-release time"] = `${this.holdAndReleaseTime} seconds`;
|
|
1005
|
+
}
|
|
1006
|
+
if (this.twistAssist != undefined) {
|
|
1007
|
+
message["enable twist assist"] = this.twistAssist;
|
|
1008
|
+
}
|
|
1009
|
+
if (this.blockToBlock != undefined) {
|
|
1010
|
+
message["enable block-to-block"] = this.blockToBlock;
|
|
1011
|
+
}
|
|
1012
|
+
return {
|
|
1013
|
+
...super.toLogEntry(applHost),
|
|
1014
|
+
message,
|
|
1015
|
+
};
|
|
1016
|
+
}
|
|
1017
|
+
};
|
|
1018
|
+
DoorLockCCConfigurationSet = __decorate([
|
|
1019
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.ConfigurationSet)
|
|
1020
|
+
], DoorLockCCConfigurationSet);
|
|
1021
|
+
exports.DoorLockCCConfigurationSet = DoorLockCCConfigurationSet;
|
|
1022
|
+
let DoorLockCCCapabilitiesReport = class DoorLockCCCapabilitiesReport extends DoorLockCC {
|
|
1023
|
+
constructor(host, options) {
|
|
1024
|
+
super(host, options);
|
|
1025
|
+
// parse variable length operation type bit mask
|
|
1026
|
+
(0, safe_1.validatePayload)(this.payload.length >= 1);
|
|
1027
|
+
const bitMaskLength = this.payload[0] & 0b11111;
|
|
1028
|
+
let offset = 1;
|
|
1029
|
+
(0, safe_1.validatePayload)(this.payload.length >= offset + bitMaskLength + 1);
|
|
1030
|
+
this.supportedOperationTypes = (0, safe_1.parseBitMask)(this.payload.slice(offset, offset + bitMaskLength));
|
|
1031
|
+
offset += bitMaskLength;
|
|
1032
|
+
// parse variable length door lock mode list
|
|
1033
|
+
const listLength = this.payload[offset];
|
|
1034
|
+
offset += 1;
|
|
1035
|
+
(0, safe_1.validatePayload)(this.payload.length >= offset + listLength + 3);
|
|
1036
|
+
this.supportedDoorLockModes = [
|
|
1037
|
+
...this.payload.slice(offset, offset + listLength),
|
|
1038
|
+
];
|
|
1039
|
+
offset += listLength;
|
|
1040
|
+
this.supportedOutsideHandles = [
|
|
1041
|
+
!!(this.payload[offset] & 16),
|
|
1042
|
+
!!(this.payload[offset] & 32),
|
|
1043
|
+
!!(this.payload[offset] & 64),
|
|
1044
|
+
!!(this.payload[offset] & 128),
|
|
1045
|
+
];
|
|
1046
|
+
this.supportedInsideHandles = [
|
|
1047
|
+
!!(this.payload[offset] & 0b0001),
|
|
1048
|
+
!!(this.payload[offset] & 0b0010),
|
|
1049
|
+
!!(this.payload[offset] & 0b0100),
|
|
1050
|
+
!!(this.payload[offset] & 0b1000),
|
|
1051
|
+
];
|
|
1052
|
+
this.doorSupported = !!(this.payload[offset + 1] & 0b1);
|
|
1053
|
+
this.boltSupported = !!(this.payload[offset + 1] & 0b10);
|
|
1054
|
+
this.latchSupported = !!(this.payload[offset + 1] & 0b100);
|
|
1055
|
+
this.blockToBlockSupported = !!(this.payload[offset + 2] & 0b1);
|
|
1056
|
+
this.twistAssistSupported = !!(this.payload[offset + 2] & 0b10);
|
|
1057
|
+
this.holdAndReleaseSupported = !!(this.payload[offset + 2] & 0b100);
|
|
1058
|
+
this.autoRelockSupported = !!(this.payload[offset + 2] & 0b1000);
|
|
1059
|
+
}
|
|
1060
|
+
toLogEntry(applHost) {
|
|
1061
|
+
return {
|
|
1062
|
+
...super.toLogEntry(applHost),
|
|
1063
|
+
message: {
|
|
1064
|
+
door: this.doorSupported,
|
|
1065
|
+
bolt: this.boltSupported,
|
|
1066
|
+
latch: this.latchSupported,
|
|
1067
|
+
"block-to-block feature": this.blockToBlockSupported,
|
|
1068
|
+
"twist assist feature": this.twistAssistSupported,
|
|
1069
|
+
"hold-and-release feature": this.holdAndReleaseSupported,
|
|
1070
|
+
"auto-relock feature": this.autoRelockSupported,
|
|
1071
|
+
"operation types": this.supportedOperationTypes
|
|
1072
|
+
.map((t) => `\n· ${(0, safe_2.getEnumMemberName)(_Types_1.DoorLockOperationType, t)}`)
|
|
1073
|
+
.join(""),
|
|
1074
|
+
"door lock modes": this.supportedDoorLockModes
|
|
1075
|
+
.map((t) => `\n· ${(0, safe_2.getEnumMemberName)(_Types_1.DoorLockMode, t)}`)
|
|
1076
|
+
.join(""),
|
|
1077
|
+
"outside handles": this.supportedOutsideHandles.join(", "),
|
|
1078
|
+
"inside handles": this.supportedInsideHandles.join(", "),
|
|
1079
|
+
},
|
|
1080
|
+
};
|
|
1081
|
+
}
|
|
1082
|
+
};
|
|
1083
|
+
__decorate([
|
|
1084
|
+
(0, CommandClass_1.ccValue)({ internal: true, minVersion: 4 })
|
|
1085
|
+
], DoorLockCCCapabilitiesReport.prototype, "supportedOutsideHandles", void 0);
|
|
1086
|
+
__decorate([
|
|
1087
|
+
(0, CommandClass_1.ccValue)({ internal: true, minVersion: 4 })
|
|
1088
|
+
], DoorLockCCCapabilitiesReport.prototype, "supportedInsideHandles", void 0);
|
|
1089
|
+
__decorate([
|
|
1090
|
+
(0, CommandClass_1.ccValue)({ internal: true, minVersion: 4 })
|
|
1091
|
+
], DoorLockCCCapabilitiesReport.prototype, "autoRelockSupported", void 0);
|
|
1092
|
+
__decorate([
|
|
1093
|
+
(0, CommandClass_1.ccValue)({ internal: true, minVersion: 4 })
|
|
1094
|
+
], DoorLockCCCapabilitiesReport.prototype, "holdAndReleaseSupported", void 0);
|
|
1095
|
+
__decorate([
|
|
1096
|
+
(0, CommandClass_1.ccValue)({ internal: true, minVersion: 4 })
|
|
1097
|
+
], DoorLockCCCapabilitiesReport.prototype, "twistAssistSupported", void 0);
|
|
1098
|
+
__decorate([
|
|
1099
|
+
(0, CommandClass_1.ccValue)({ internal: true, minVersion: 4 })
|
|
1100
|
+
], DoorLockCCCapabilitiesReport.prototype, "blockToBlockSupported", void 0);
|
|
1101
|
+
DoorLockCCCapabilitiesReport = __decorate([
|
|
1102
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.CapabilitiesReport)
|
|
1103
|
+
], DoorLockCCCapabilitiesReport);
|
|
1104
|
+
exports.DoorLockCCCapabilitiesReport = DoorLockCCCapabilitiesReport;
|
|
1105
|
+
let DoorLockCCCapabilitiesGet = class DoorLockCCCapabilitiesGet extends DoorLockCC {
|
|
1106
|
+
};
|
|
1107
|
+
DoorLockCCCapabilitiesGet = __decorate([
|
|
1108
|
+
(0, CommandClass_1.CCCommand)(_Types_1.DoorLockCommand.CapabilitiesGet),
|
|
1109
|
+
(0, CommandClass_1.expectedCCResponse)(DoorLockCCCapabilitiesReport)
|
|
1110
|
+
], DoorLockCCCapabilitiesGet);
|
|
1111
|
+
exports.DoorLockCCCapabilitiesGet = DoorLockCCCapabilitiesGet;
|
|
1112
|
+
//# sourceMappingURL=DoorLockCC.js.map
|