Yale Zigbee lock in events: was unlocked via read attribute report

Does anyone know what this means? I found this in my logs.

It did trigger a rule I had that the locked became "unlocked" at 11:30pm.

What driver are you using?

The built in "Yale Zigbee Lock"

@mike.maxwell might be the one to ask, but what do the current attribute states show after that event occurs?

That is a great question. That's the first time I've ever seen that. Is there a way to check what they were at that time? Or why the lock responded as "locked" hours before and then somehow wasn't without an event?

You might be able to reconstruct them from the device's event log if you page back to that point in time.

That's what I posted. The Events from the device on the device page and the logs from the lock from the logs page. Am I missing another location?

And when I search for the word "attribute" on the device events page...that is the only instance.

I'm thinking that there may be an attribute (maybe lastCodeName or something similar) that may provide a clue.

interesting, the device is reporting that it is unlocked, was it actually unlocked?

I don't really know. I was sleeping at the time and only noticed this in the logs when I was looking for something else. It just seemed odd. It triggered my "relock" rule.

J.R. Farrar

That's kinds of interesting. At least once a day I get a locked or unlocked notification that the lock was locked or unlocked. Like several hours after the last rule that would have done either had fired and already notified...

Well...this happened again last night. This time an unlocked and then locked.

I do know this lock was locked last night before bed. Is this possible just the lock going bad? @mike.maxwell

I would think that the read attribute report has to be coded into the driver somewhere, but just to check a few boxes what does the device show in the In Use By section?

My apps and rules that use the lock are in there. Looking for something specific? And none of them have been changed recently.

Was just wondering if any of them were showing as executing around those times.

I have a Yale YRD256 with Zigbee module.. nothing in my logs so can't really help yet. Will set some alerts to see if anything weird is happening.

understood. That's the first thing I looked for when I first saw this. Yeah there is no activity around these.

Is this something the lock is actually sending to the hub or something the hub/driver is doing on it's own. I would think if the lock sent something it would show as a locked or unlocked event.

Whatever the case - that is really odd and kind of concerning. Hope it can be figured out.. also I checked my Kwikset lock which uses the "Generic Zigbee Driver" - nothing in the logs there either.

Note: My Yale Zigbee uses the "Yale Zigbee Driver"..

Something we could try if you like:

Lock Event Attribute Dump
 * Lock Event Attribute Dump 
 *
 *  Licensed Virtual the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 *  Change History:
 *
 *    Date          Who           What
 *    ----          ---           ----
 */

import java.text.SimpleDateFormat
static String version()	{  return '0.2.1'  }


definition (
	name: 			"Lock Event Attribute Dump", 
	namespace: 		"thebearmay", 
	author: 		"Jean P. May, Jr.",
	description: 	"Log the value of all attributes when lock/unlock event contains attribute report",
	category: 		"Utility",
	importUrl: "https://raw.githubusercontent.com/thebearmay/hubitat/main/apps/xxxx.groovy",
	oauth: 			false,
    iconUrl:        "",
    iconX2Url:      ""
) 

preferences {
   page name: "mainPage"
}

def installed() {
//	log.trace "installed()"
    state?.isInstalled = true
    initialize()
}

def updated(){
//	log.trace "updated()"
    if(!state?.isInstalled) { state?.isInstalled = true }
	if(debugEnable) runIn(1800,logsOff)
}

def initialize(){
}

void logsOff(){
     app.updateSetting("debugEnable",[value:"false",type:"bool"])
}

def mainPage(){
    dynamicPage (name: "mainPage", title: "", install: true, uninstall: true) {
      	if (app.getInstallationState() == 'COMPLETE') {   
	    	section("Main")
		    {
                input "qryDevice", "capability.lock", title: "Devices of Interest:", multiple: true, required: true, submitOnChange: true

                if(qryDevice?.size() > 0) {
                    lockSubscribe()
                    paragraph "Subscribed to lock events"
                }else{
                    unsubscribe()
                    paragraph "Not subscribed to any locks"
                }
		    }
	    } else {
		    section("") {
			    paragraph title: "Click Done", "Please click Done to install app before continuing"
		    }
	    }
    }
}

def lockSubscribe(){
    unsubscribe()
    qryDevice.each {
        if(debugEnabled) log.debug "Subscribing to lock for $it"
        subscribe(it, "lock", "lockHandler")
    }
}

def lockHandler(evt){ 
    if(evt.descriptionText.contains("read attribute report")){
        evtDev = evt.getDevice()
        evtDev.supportedAttributes.each {
            log.debug "${evtDev.displayName} <b>$it:</b>${evtDev.currentValue("$it", true)}"
        }
    }
}


def appButtonHandler(btn) {
    switch(btn) {
        default: 
            log.error "Undefined button $btn pushed"
            break
      }
}

App will create a debug log entry for every lock attribute when it sees "read attribute report" in the lock or unlock event.

Installed and configured. I added both of my locks (same exact model)