Description text logging - actionable?

Glad to hear it worked out for you @chipworkz! It's been working for me for a while now but as mentioned above, be advised the description format isn't guaranteed so it may break (and require looking for different strings) in the future. I'm trying to get some other code wrapped up but maybe at some point I'll clean this up and allow the string handling to be a preference and then share it via github... not sure when I'll have time but it seems like a good goal :slight_smile:

1 Like

It isn't too big of a deal if the description changes although if the lock is not being upgraded, I would be surprised if something changed the text. I am just putting this out there in case someone else out there has a Schlage lock and wants to use this. The purpose for this will vary per user but it was a GREAT starting point that you provided.

For the Schlage lock, there are several Events that can be looked at. I wanted this app to account for everything other than a user code unlocking the door. So I added some or statements to your if conditions. Now the virtual switches will be set correctly if I lock or unlock the door from inside, from the keypad outside, or using the "Lock" dashboard tile. The Dashboard tile is still technically manually locking or unlocking the door in my opinion but that event is digital instead of physical.

For my purpose I am having the virtual switches turn off after a short time otherwise when a user code is entered to unlock the door, the "Locked Manually" switch stays on and doesn't toggle off like it would if the door was manually unlocked. In the end, I will most likely only use the Unlocked switch and set the Locked switch required to false since my rule is just checking to see if the Unlocked Manually switch is off to proceed. I just wanted to update the if statements to learn and give more options in case they were needed.

I am still tweaking things and just learning this but thought I would share to give others some ideas on what can be done with your app.

def lockHandler(evt) {
log("Lock event: ${evt.name} : ${evt.descriptionText}")
if (evt.type == 'physical' && (evt.descriptionText.endsWith('thumb turn [physical]') || evt.descriptionText.endsWith('keypad [physical]'))) || (evt.type == 'digital' && (evt.descriptionText.endsWith('locked [digital]'))) {
log "${lock.displayName} was locked manually"
virtualLockedSwitch.on()
if (virtualUnlockedSwitch) {
virtualUnlockedSwitch.off()
}
} else {
log "${lock.displayName} was locked"
}
}

def unlockHandler(evt) {
log("Unlock event: ${evt.name} : ${evt.descriptionText}")
if (evt.type == 'physical' && evt.descriptionText.endsWith('thumb turn [physical]') || (evt.type == 'digital' && (evt.descriptionText.endsWith('unlocked [digital]'))) {
log "${lock.displayName} was unlocked manually"
virtualLockedSwitch.off()
if (virtualUnlockedSwitch) {
virtualUnlockedSwitch.on()
}
} else {
log "${lock.displayName} was unlocked"

Schlage Lock Events for Reference
Lock name = Front Door Lock. (Varies per installation)

Locked using keypad Schlage button or code.
Lock event: lock : Front Door Lock was locked by keypad [physical]

Locked using inside dial.
Lock event: lock : Front Door Lock was locked by thumb turn [physical]

Locked using automation or dashboard tile.
Lock event: lock : Front Door Lock was locked [digital]

Unlocked using code.
Unlock event: lock : Front Door Lock was unlocked by John

Unlocked using inside dial.
Unlock event: lock : Front Door Lock was unlocked by thumb turn [physical]

Unlocked using automation or dashboard tile.
Unlock event: lock : Front Door Lock was unlocked [digital]

I know this is an old thread. But I need this manual lock app to work with my yale locks.
I am using the generic zwave driver
I have tried to change the ends with to evt.descriptionText.endsWith('manually [physical][21]'))
but still doesnt seem to work.

This is what my log looks like. I am new to modding groovy
locked
dev:2582020-12-24 03:11:52.700 pm infoP - Porch Lock was locked manually [physical][21]

Unlocked
dev:2582020-12-24 03:12:02.089 pm infoP - Porch Lock was unlocked manually [physical][22]

Thanks
Mike

My Schlage BE468 (z-wave) acts strangely. For starters, the unlockHandler(evt) function shows the following log for a manual unlock by thumb turn:

  Unlock event: lock : XYZ was unlocked [digital] : digital

Why is "digital" registered for a manual lock by physical thumb turn? Okay, so I changed line 99 to:

if (evt.type == 'digital' && evt.descriptionText.endsWith('was unlocked [digital]')) {

The problem is that when using the keypad to unlock, the unlockHandler is called twice: once as event type digital, and immediately again as event type "physical". No idea why a keypad unlock would call unlockHandler twice. Here is the log for a single unlock using the keypad as UserA:

23:21:29.398 debug Lock - XYZ Door was unlocked
23:21:29.395 debug Unlock event: lock : XYZ was unlocked by UserA : evt.type = physical
23:21:29.250 info Switch - XYZ Wrapper was turned on
23:21:29.240 debug XYZ was unlocked manually
23:21:29.236 debug Unlock event: lock : XYZ was unlocked [digital] : evt.type = digital

Hey man, I am breaking my head desperately to get my lock automations working right with the manual thumb turn from the inside. Would you be able to share with me your app-code for the manual lock events that you modified to suit the schlage lock? :pray:

I tried changing the original code with your tweaks, but keep getting error with the code. So most likely it didn't translate correctly on the thread post.

FWIW, this is possible using Rule Machine without any custom apps. Here's an example of how to do it (i.e. manual thumb turn) with Rule Machine that I posted for someone else a couple days ago:

1 Like

Sorry it has been a few years since I even looked at this. Currently I am only looking at who unlocked the door and not if it was unlocked manually.

When I see these advanced RM rules, my illusory superiority with creating rules instantly goes away.

I went with what I believe should work and dumbed down... I utilized the app from within this thread and created the virtual switches. I used the unlocked switch with the following RM rule.

Does it look right? Haven't had a chance to test it as I'm on lunch break at work...

I utilized rvrolyk's code with your modification for schlage locks. Going to test tonight and if it's a no-go. I'll be utilizing @aaiyar method. :ok_hand:

Really love this community and the responsiveness from everyone. Blessings to you all!

1 Like

I don't have that app ...... but if the app works, your rule should work I think.

Never mind, still playing with this. Something changed in the last two years since I was doing this. :slight_smile:

At some point in time, the text description logging changed so if your lock is working the same as mine, you can't really use it via my app code or the rule machine text description method.

See if your lock is reporting the multiple descriptions for the one event of turning the knob to lock or unlock the door. If it is and if yours reports the [digital] as the first thing, they we can't use the description for much of anything anymore unless someone wants to get really fancy.

image

Which driver are you using?

The only one that I know of for my lock. :slight_smile: Everything else works perfectly and I don't use the text description for anything over the last couple of years so I didn't notice the multiple logging until looking at this today.

image

1 Like

Just for the heck of it, can you try the "Generic Z-Wave Lock" driver and repeat the test. You'll have to hit "Configure" after changing drivers, and then Configure again after changing back to the Schlage driver.

That change the text description but the multiple reporting is the same.

image

image

1 Like

Thanks - that's the lock then. Nothing can be done about it. Bummer.

The thing is, if you used an external automation system, like Node-RED, you could still use that as a trigger. But I'm not sure how to do that in Rule Machine.

Originally I had another Schlage lock at my old house and this is a new one now. So I am not sure if it is the new lock or a change in the driver over the last two years or if it is just my particular lock or environment. It will be interesting to see if the behavior is the same for others or not.

The driver hasn't been changed in 2+ years, when Hubitat dropped these locks from the list of compatible devices. I did see that others have reported the same multiple reporting that you have.

1 Like

It sure is. I am using the BE468/9 driver.

Lock-Logs-Physical

Unfortunately, my RM rule didn't work with your virtual device/app. Didn't send me a notification when the lock was manually unlocked. I thought it was because i had the trigger as digital on for the switch, then I added regular switch trigger, still didn't work...

I'll give @aaiyar's driver troubleshooting tip a try. If that doesn't work, I'll attempt to recreate his RM rule.

Man, I wish RM has the ability to share rules like webcore sometimes....

It does.

If you need my rule, I'm happy to send it to you to import. That being said, the dual notification seem to be a hardware limitation of the Schlage BE468/BE469 z-wave locks. As such, there is no way around it ..... outside of someone writing a Schlage driver that ignores the first event.