From ea8e63bed102f5a8add012e84a60556679699fe9 Mon Sep 17 00:00:00 2001 From: Erik Thayer Date: Tue, 11 Apr 2017 13:56:59 -0500 Subject: [PATCH] HH presense check on lock level --- smartapps/ethayer/lock.src/lock.groovy | 28 +++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/smartapps/ethayer/lock.src/lock.groovy b/smartapps/ethayer/lock.src/lock.groovy index 95b5fb4..96c3508 100644 --- a/smartapps/ethayer/lock.src/lock.groovy +++ b/smartapps/ethayer/lock.src/lock.groovy @@ -38,6 +38,7 @@ def initialize() { // reset listeners unsubscribe() unschedule() + subscribe(lock, 'codeReport', updateCode, [filterEvents:false]) subscribe(lock, "reportAllCodes", pollCodeReport, [filterEvents:false]) subscribe(lock, "lock", codeUsed) @@ -189,6 +190,9 @@ def helloHomePage() { if (state.supportsKeypadData) { input(name: 'keypadLockRoutine', title: 'On keypad Lock', type: 'enum', options: actions, required: false, multiple: true) } + + input "userNoRunPresence", "capability.presenceSensor", title: "DO NOT run Actions if any of these are present:", multiple: true, required: false + input "userDoRunPresence", "capability.presenceSensor", title: "ONLY run Actions if any of these are present:", multiple: true, required: false } } } @@ -391,7 +395,7 @@ def codeUsed(evt) { // unlocked manually if (manualUnlockRoutine) { - location.helloHome.execute(manualUnlockRoutine) + executeHelloPresenceCheck(manualUnlockRoutine) } message = "${lock.label} was unlocked manually" if (notifyMaunualUnlock) { @@ -413,7 +417,7 @@ def codeUsed(evt) { if (data && data.usedCode == 0) { message = "${lock.label} was locked by keypad" if (keypadLockRoutine) { - location.helloHome.execute(keypadLockRoutine) + executeHelloPresenceCheck(keypadLockRoutine) } if (notifyKeypadLock) { send(message) @@ -426,7 +430,7 @@ def codeUsed(evt) { // locked manually message = "${lock.label} was locked manually" if (manualLockRoutine) { - location.helloHome.execute(manualLockRoutine) + executeHelloPresenceCheck(manualLockRoutine) } if (notifyMaunualLock) { send(message) @@ -690,3 +694,21 @@ def debugger(message) { log.debug(message) } } + +def executeHelloPresenceCheck(routines) { + if (userNoRunPresence && userDoRunPresence == null) { + if (!anyoneHome(userNoRunPresence)) { + location.helloHome.execute(routines) + } + } else if (userDoRunPresence && userNoRunPresence == null) { + if (anyoneHome(userDoRunPresence)) { + location.helloHome.execute(routines) + } + } else if (userDoRunPresence && userNoRunPresence) { + if (anyoneHome(userDoRunPresence) && !anyoneHome(userNoRunPresence)) { + location.helloHome.execute(routines) + } + } else { + location.helloHome.execute(routines) + } +}