Door Locks and User Codes


#1

1) Give a description of the problem
I actually tried to get this resolved several months back and gave up. Since there have been many updates both to webcore and the custom DTH I use I was hoping the issue was resolved, but it still seems not to be.

I am using this DTH

I am trying to have a piston kick off when the door is locked from the outside using the keypad. Any only that. What happens. That user code shows up as code 0. I’ve selected code 0. It works, but it also triggers if SmartThings locks the door. If I manually lock the door from the inside I get the expected behavior.

2) What is the expected behavior?
Send me a text message if the door is locked using the keypad.

3) What is happening/not happening?
I also get a text message if I lock the lock using the smarttthings app or routine.

4) Post a Green Snapshot of the piston

I’ll try to post some logs later. I cannot get them at this exact moment. Is anyone else having this issue or even trying to do this. My ultimate goal will be to trigger some actions when guests are coming and going.


Weiser Smartcode 5 question
#2

I’ll go out on a limb here and say that assuming the DTH has support for this, it is also very much going to be dependent on your lock and the supported features.

I have Kwikset 910’s, and they do NOT support a feature like this.

J


#3

My piston works fine but are you sure code 0 is the first code? Mine defaults to code 1 for the first code using that same DTH on Schlage BE469 Lock.


#4

So Code 1 is the 1st code. But I’m not talking about unlocking the door, I’m talking about locking the door. I think it should make sense since you have the same lock as me. When I leave, I close the door and hit the “Schlage” button. The deadbolt locks. If I go into my device, I can see a message saying door locked with Code 0. If I lock the door from the inside using the deadbolt it says “door was locked manually”. Code 1 only shows up when I unlock the door with the 1st code.

I think this just may be something I am not going to be able to accomplish with this DTH.

My end game is that I want the SHM to disable when a worker enters the house and no one is home. Then when they leave they lock the door with the button “code 0”. So if no one is home based on presence, and door is locked using the button, then run my “good bye” routine. which will make sure everything is locked, turned off, set correctly, etc.

I have it working now using a series of virtual switches, that turn on and off based on actions. It’s just clunky, but at least it works, most of the time. I do get a few false alarms, but I can deal with it.


#5

Yea, I see what you mean since that’s how it shows for me too:

I tested and it looks like webCoRE isn’t getting anything from the DTH that code 0 locked the door when checking the logs of the piston. I would suggest posting in the ST Community site and ask @RBoy why it’s not passing this value to webCoRE


#6

This was the response. I feel like it is just out of my grasp. Any tips?


#7

I’ll look tonight to see how to find that status that RBoy mentioned.


#8

Does anyone know how to retrieve specific parameters the DTH sends, I’m not really sure myself when checking.

Logs:
9:17:09 PM: debug Parsed to [‘name’:‘lock’, ‘value’:‘locked’, ‘descriptionText’:Front Door Lock was locked with code 0, ‘data’:[‘usedCode’:null, ‘type’:‘keypad’], ‘isStateChange’:true, ‘displayed’:true, ‘linkText’:‘Front Door Lock’]
9:17:09 PM: debug AlarmReport AlarmReport(alarmLevel: 0, alarmType: 18, eventParameter: [], numberOfEventParameters: 0, zensorNetSourceNodeId: 0, zwaveAlarmEvent: 5, zwaveAlarmStatus: 255, zwaveAlarmType: 6)

Not sure how to put a sub-parameter into webCoRE on a lock event of a door lock. The logs above is showing keypad under the sub-parameter of type.


#9

thats from the ST logs?

insert this in a log info expression at the top of the piston and trigger the piston:

‘A:’ + $currentEventAttribute + ‘^ D:’ + $currentEventDevice + ‘^ DI:’ + $currentEventDeviceIndex + ‘^ DP:’ + $currentEventDevicePhysical + ‘^ U:’ + $currentEventUnit + ‘^ V:’ + $currentEventValue + ‘^ S:’ + $currentState + ‘^’


#10

Correct, that’s from ST Logs.

Here’s what I get when putting that expression in:

+261ms ║║Calculating (string) A: + (string) lock >> (string) A:lock
+265ms ║║Calculating (string) A:lock + (string) ^ D: >> (string) A:lock^ D:
+268ms ║║Calculating (string) A:lock^ D: + (string) Front Door Lock >> (string) A:lock^ D:Front Door Lock
+272ms ║║Calculating (string) A:lock^ D:Front Door Lock + (string) ^ DI: >> (string) A:lock^ D:Front Door Lock^ DI:
+276ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI: + (string) 1 >> (string) A:lock^ D:Front Door Lock^ DI:1
+279ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1 + (string) ^ DP: >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:
+282ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP: + (string) false >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false
+285ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false + (string) ^ U: >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:
+288ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U: + (string) >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:
+291ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U: + (string) ^ V: >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:
+293ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V: + (string) locked >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked
+296ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked + (string) ^ S: >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:
+298ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S: + (string) >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:
+300ms ║║Calculating (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S: + (string) ^ >> (string) A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:^
+303ms ║║A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:^


#11

ok.

sorry. insert a log to console and insert that in the expression field for the log statement. then turn off piston logging and trigger the piston.


#12

nvm, heres what it logged:

A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:^

please try triggering the piston in other ways and lets see what values get logged. like opening the lock from inside does it trigger the piston? opening the lock from outside without using the keypad does that trigger the piston?


#13

The logs above is when locking with keypad which ptdalen was looking to monitor, below is all the other ways to lock the door:

Here’s locking using ST App:
A:lock^ D:Front Door Lock^ DI:0^ DP:false^ U:^ V:locked^ S:^

Here’s locking the door using piston, just setup a quick piston to lock door at 11:09 PM:
A:lock^ D:Front Door Lock^ DI:0^ DP:false^ U:^ V:locked^ S:^

Here’s locking the door manually from inside:
A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:^

Here’s locking the door manually from outside with key:
A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:^


#14

so when locked manually DI=1. does that help?

also if you do a log to console with physical device and select the lock what are the possible attributes shown in the drop down, next to the physical drop down selection box, for the lock?


#15

Thanks, I really appreciate the research. Definitely a bit above where I’m at right now, but I believe I understand what’s going on. Is this looking like it’s not going to work? With this DTH?

I see output for ST App, Piston are the same
I see Output for manually with Key or with deadbolt are the same
I’m not sure I see the output from the keypad on outside. Was it this?

A:lock^ D:Front Door Lock^ DI:1^ DP:false^ U:^ V:locked^ S:^

If so, then it looks to be the same as manual with or without key, right?

Again, appreciate the effort


#16

yeah looks like that.

could you please post a screenshot of this in piston edit mode with the physical device lock selected:

as an example:


#17

Sure, thanks! Here’s two different one just to be safe


#18

thanks. i think everything that is needed is there.

if you can do a log to console and use this expression at the top of the piston

'autolock:' [Back Door (Lock) : autolock] '^beeper:' [Back Door (Lock) : beeper] '^codeChanged:' [Back Door (Lock) : codeChanged] ...

… and so on for all those attributes and trigger the same piston and check the values there. if you do update that from log please mask any secret info like lock code before posting here. :slight_smile:

the expression value is typed freehand so you may need to correct the syntax if i missed something.


#19

I’m sure its me. I am getting errors in the log output

║Error executing virtual command [].log: (3ms) groovy.lang.MissingMethodException: No signature of method: physicalgraph.sandbox.TruncatingLoggingListener.autolock:disabled^beeper:enabled^codechanged:7^codechanged:7() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl, null) values: [║ null, null]

Here is my piston. I broke it up into multiple log outputs just in case, but receive the same error for each log output.


#20

if you remove the empty “” at the end of each log statement, does that make a difference? did you put those in the value field or the expression? it should be expression not value.