have you updated HA since installing the quirk? you will need to reinstall it after each update.
I have an EmberZNet based stick, so I don’ t know if the zigpy_cc lib is acting a bit different. you may want to try switching to the zigpy_znp lib which is now working with all the TI controllers I think, it was in the 0.115 release. I haven’t followed too much about how to do that switch but the zigbee channel on discord is very helpful, and the main dev of zigpy_znp (puddy) is helpful there.
the actual message may be in the lines above that log as well.
Thank you so much for taking the time to help me with this! I got the correct attributes identified and everything works properly now. It’s nice to have the lock automatically show it’s correct state for a change
Awesome! Glad I could help. @dmulcahey did the hard work of deciphering the mess that the lock sends and writing this quirk. It sucks wyze won’t share any info.
Hopefully one day the variables for the quirk can be read from a config file or be set up in the zha config panel.
So just when i thought everything was working perfectly now, my lock has been randomly changing it’s state from locked to unlocked. It’s not actually unlocking itself, just seems to be setting the state incorrectly. No idea why, i thought i identified all the correct attributes for the states as they all do report correctly (locked/unlocked, closed/open). Have you had any similar experiences?
I had the same issue. Some messages from the lock are being incorrectly identified as lock state changes. I fixed it by looking at an additional value which was changed in the messages.
This is what I changed:
self.info(
"Interesting attributes - 0: %s, 52: %s, 41: %s, 56: %s, 57: %s",
args[0],
args[52],
args[41],
args[56],
args[57],
)
if args[52] == 221 and args[41] == 155 and args[0] == 79:
self.warning("the lock is unlocked via the app")
self.endpoint.device.lock_bus.listener_event("lock_event", 2)
elif args[52] == 221 and args[41] == 156 and args[0] == 79:
self.warning("the lock is locked via the app")
self.endpoint.device.lock_bus.listener_event("lock_event", 1)
elif args[52] == 217 and args[41] == 155 and args[0] == 79:
self.warning("the lock is unlocked manually")
self.endpoint.device.lock_bus.listener_event("lock_event", 2)
elif args[52] == 217 and args[41] == 156 and args[0] == 79:
self.warning("the lock is locked manually")
self.endpoint.device.lock_bus.listener_event("lock_event", 1)
elif args[52] == 212 and args[41] == 156 and args[0] == 79:
self.warning("the lock is locked via auto lock")
self.endpoint.device.lock_bus.listener_event("lock_event", 1)
I’m currently using a ConBee2 as my zigbee stick and can’t seem to see the “Interesting attributes” you mentioned anywhere in my logs? Any idea how to see that info?
Are you able to pair the lock with that zigbee stick?
If so you need to pair the lock, install the quirk, turn on debug logging in your configuration.yaml, gather the attributes and then modify the quirk with those attributes.
Wondering if i have to enable this https://github.com/zha-ng/zigpy-deconz-parser but not really sure how to enable that parser. Not a coder so unsure of how to use this deconz parser to get more visibility in the logs.
I don’t have a conbee2 stick but i don’t think you have to do anything special besides turning on debugging. Try adding the following your yaml and see if anything pops up in the log when you open/close the lock
have all those in my logger config and still nada. that’s why i think i need to use that deconz-parser to get more detailed information just don’t know how to enable it within HA.
Hello Mike
I have the same issue, when I lock and unlock manually, door state changes from lock to unlock tree times.
how can I fix it?
here is my lock.py
if args[52] == 65 and args[41] == 187:
self.warning("the lock is unlocked via the app")
self.endpoint.device.lock_bus.listener_event("lock_event", 2)
elif args[52] == 65 and args[41] == 188:
self.warning("the lock is locked via the app")
self.endpoint.device.lock_bus.listener_event("lock_event", 1)
elif args[41] == 68:
self.warning("the lock is unlocked manually")
self.endpoint.device.lock_bus.listener_event("lock_event", 2)
elif args[41] == 67:
self.warning("the lock is locked manually")
self.endpoint.device.lock_bus.listener_event("lock_event", 1)
elif args[52] == 72 and args[41] == 188:
self.warning("the lock is locked via auto lock")
self.endpoint.device.lock_bus.listener_event("lock_event", 1)
if args[52] == 191 and args[41] == 175:
self.warning("the door is open")
self.endpoint.device.motion_bus.listener_event("motion_event", ON)
elif args[52] == 191 and args[41] == 172:
self.warning("the door is closed")
self.endpoint.device.motion_bus.listener_event("motion_event", OFF)
I had a failure of my lock and after 2hrs with tech support they replaced it under warranty. Just received the replacement and I’m trying to go through the process of capturing the data for the quirk but something appears to have changed. I’m not sure if it’s the newer builds of Home Assistant but the debug logging no longer seems to capture the necessary information like it used to.
Ok, for all those that have been having issues getting the log to report the attributes, I found a solution that someone provided on the Github forums.
You need to modify your lock.py file. Find this section in the original file:
class WyzeCluster(CustomCluster, Basic):
“”“Wyze manufacturer specific cluster implementation.”“”
I am having problems getting the lock to use the quirk. For some reason the pycache folder is not being recreated after I put the quirk in the folder, delete the cache folder, and reboot. I am using a virtual machine. I have tried restarting HA, restarting the VM, and restarting the host. Nothing works. I have removed and added several zigbee devices and the folder never gets regenerated. Is that why my lock isnt using the quirk, or is that unrelated. I appreciate any help.