From 27c800ee191cfe64392b0f64e739360587e803c6 Mon Sep 17 00:00:00 2001 From: vlord3 Date: Thu, 10 Feb 2022 22:01:06 -0500 Subject: [PATCH 1/3] Update zwave-lock-schlage.groovy --- .../zwave-lock-schlage.groovy | 65 +++++++++---------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy b/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy index 88486bc..fe901ef 100644 --- a/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy +++ b/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy @@ -74,17 +74,16 @@ metadata { } preferences { input name: "alarmMode", type: "enum", title: "Alarm Mode", description: "Enter Mode for Alarm", required: false, - displayDuringSetup: false, options: ["Off", "Alert", "Tamper", "Kick"] + displayDuringSetup: false, options: ["Off", "Activity", "Tamper", "Forced Entry"] input name: "alarmSensitivity", type: "enum", title: "Alarm Sensitivity", description: "Enter Sensitivity for Alarm", required: false, - displayDuringSetup: false, options: ["Extreme", "High", "Medium", "Moderate", "Low"] - - input name: "autoLock", type: "bool", title: "Auto Lock", description: "Enable Auto Lock?", required: false, displayDuringSetup: false - input name: "vacationMode", type: "bool", title: "Vataction Mode", description: "Enable Vacation Mode?", required: false, displayDuringSetup: false - input name: "lockLeave", type: "bool", title: "Lock & Leave", description: "Enable Lock & Leave?", required: false, displayDuringSetup: false - input name: "localControl", type: "bool", title: "Local Control", description: "Enable Local Control?", required: false, displayDuringSetup: false - input name: "pinLength", type: "number", title: "Pin Length", description: "Changing will delete all codes", range: "4..8", required: false, displayDuringSetup: false - input name: "beeperMode", type: 'bool', title: "Beeper Mode", description: "beep when buttons are pressed?", required: false, displayDuringSetup: false - } + displayDuringSetup: false, options: ["5 - Extreme", "4 - High", "3 - Default", "2 - Moderate", "1 - Low"] + input name: "autoLock", type: "bool", title: "Auto Lock", description: "Automatically relock 30 seconds after unlocking", required: false, displayDuringSetup: false + input name: "beeperMode", type: 'bool', title: "Button Beeps", description: "Beeps when buttons are pressed", required: false, displayDuringSetup: false + input name: "localControl", type: "bool", title: "Local Control", description: "Enables local alarm on/off, mode change, sensitivity changes", required: false, displayDuringSetup: false + input name: "lockLeave", type: "bool", title: "Lock & Leave", description: "Single press the outside Schlage button to lock the deadbolt", required: false, displayDuringSetup: false + input name: "pinLength", type: "number", title: "User Code Length", description: "Changing will delete all codes", range: "4..8", required: false, displayDuringSetup: false + input name: "vacationMode", type: "bool", title: "Vacation Mode", description: "Prevents all user codes from unlocking the deadbolt", required: false, displayDuringSetup: false + } } import physicalgraph.zwave.commands.doorlockv1.* @@ -337,13 +336,13 @@ def processSchlageLockConfig(cmd) { currentAlarmMode = "Off" break case 0x01: - currentAlarmMode = "Alert" + currentAlarmMode = "Activity" break case 0x02: currentAlarmMode = "Tamper" break case 0x03: - currentAlarmMode = "Kick" + currentAlarmMode = "Forced Entry" break default: currentAlarmMode = "Off" @@ -355,26 +354,26 @@ def processSchlageLockConfig(cmd) { // done: alarm sensitivities - one for each mode case 0x8: case 0x9: - case 0xA: + case 0xA: def whichSensitivity = 'Low' switch (cmd.configurationValue[0]) { case 0x01: - whichSensitivity = "Extreme" + whichSensitivity = "5 - Extreme" break; case 0x02: - whichSensitivity = "High" + whichSensitivity = "4 - High" break; case 0x03: - whichSensitivity = "Medium" + whichSensitivity = "3 - Default" break; case 0x04: - whichSensitivity = "Moderate" + whichSensitivity = "2 - Moderate" break; case 0x05: - whichSensitivity = "Low" + whichSensitivity = "1 - Low" break; default: - whichSensitivity = "Low" + whichSensitivity = "3 - Default" break; } // set preference setting to current value @@ -2046,23 +2045,23 @@ def configureAlarm() { switch(alarmMode) { case "Off": alarmModeParam = 0x00 - // alarmSensitivityParam = 0x0 + //alarmSensitivityParam = 0x00 break - case "Alert": + case "Activity": alarmModeParam = 0x01 alarmSensitivityParam = 0x08 break case "Tamper": - alarmModeParam = 0x2 + alarmModeParam = 0x02 alarmSensitivityParam = 0x09 break - case "Kick": - alarmModeParam = 0x3 + case "Forced Entry": + alarmModeParam = 0x03 alarmSensitivityParam = 0x0A break default: - alarmModeParam = 0x0 - alarmSensitivityParam = 0x0 + alarmModeParam = 0x00 + //alarmSensitivityParam = 0x00 break } @@ -2070,24 +2069,24 @@ def configureAlarm() { // https://www.schlage.com/content/dam/sch-us/documents/pdf/installation-manuals/24352403.pdf // default to low if no value def configurationValue = 0x05 - switch(alarmSensitivity) { - case "Extreme": + switch(alarmSensitivity) { + case "5 - Extreme": configurationValue = 0x01 break - case "High": + case "4 - High": configurationValue = 0x02 break - case "Medium": + case "3 - Default": configurationValue = 0x03 break - case "Moderate": + case "2 - Moderate": configurationValue = 0x04 break - case "Low": + case "1 - Low": configurationValue = 0x05 break default: - configurationValue = 0x05 + configurationValue = 0x03 break } // set alarm mode From 91efb8a8372abec6b0162ac21035646d2c439cf7 Mon Sep 17 00:00:00 2001 From: vlord3 Date: Sat, 12 Feb 2022 20:34:52 -0500 Subject: [PATCH 2/3] Update zwave-lock-schlage.groovy Added working logic for the pin length. Should be able to correctly set a lock pin length now. --- .../zwave-lock-schlage.groovy | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy b/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy index fe901ef..aff1847 100644 --- a/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy +++ b/devicetypes/ethayer/zwave-lock-schlage.src/zwave-lock-schlage.groovy @@ -400,9 +400,14 @@ def processSchlageLockConfig(cmd) { break - case 0xB: + // done: lock specific alarm disable - local controls + case 0xB: map = parseBinaryConfigRpt('localControl', cmd.configurationValue[0], 'Local Alarm Control') - break + if (cmd.configurationValue[0] == 0) { + isEnabled = 'Disabled' + } + sendEvent(name: 'localControl', value: isEnabled, displayed: false ) + break // how many times has the electric motor locked or unlock the device? case 0xC: @@ -2030,8 +2035,16 @@ def configureLocalControl() { return onOffSequence(0x0B, localControl) } def configurePinLength() { - if (pinLength) { - return secureSequence([zwave.configurationV2.configurationSet(parameterNumber: 0x10, size: 1, configurationValue: [pinLength])],5000) + if (pinLength == 4) { + return secureSequence([zwave.configurationV2.configurationSet(parameterNumber: 0x10, size: 1, configurationValue: 0x04)],5000) + } else if (pinLength == 5) { + return secureSequence([zwave.configurationV2.configurationSet(parameterNumber: 0x10, size: 1, configurationValue: 0x05)],5000) + } else if (pinLength == 6) { + return secureSequence([zwave.configurationV2.configurationSet(parameterNumber: 0x10, size: 1, configurationValue: 0x06)],5000) + } else if (pinLength == 7) { + return secureSequence([zwave.configurationV2.configurationSet(parameterNumber: 0x10, size: 1, configurationValue: 0x07)],5000) + } else if (pinLength == 8) { + return secureSequence([zwave.configurationV2.configurationSet(parameterNumber: 0x10, size: 1, configurationValue: 0x08)],5000) } else { return null } From 74fdb0759e434cb129b19b9219c67d905d4a821e Mon Sep 17 00:00:00 2001 From: vlord3 Date: Sat, 12 Feb 2022 21:45:08 -0500 Subject: [PATCH 3/3] Update lock-manager.groovy Incorporated fix from djanosChef to resolve manual unlock notifications. https://github.com/ethayer/lock-manager/issues/120#issuecomment-491471137 --- smartapps/ethayer/lock-manager.src/lock-manager.groovy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/smartapps/ethayer/lock-manager.src/lock-manager.groovy b/smartapps/ethayer/lock-manager.src/lock-manager.groovy index d284316..17a19c2 100644 --- a/smartapps/ethayer/lock-manager.src/lock-manager.groovy +++ b/smartapps/ethayer/lock-manager.src/lock-manager.groovy @@ -1297,6 +1297,9 @@ def manualUnlock(evt) { if (parent.manualUnlockRoutine) { parent.executeHelloPresenceCheck(parent.manualUnlockRoutine) } + if (notifyManualUnlock) { + sendLockMessage(message) + } } }