WYZE LOCK - Zigbee - Home Assistant - HassIO - HassOS - ZHA integration - Working as expected - remove cloud control

I used a hacksaw to cut a notch in the plastic and then used a flat-head screwdriver to pry it open by slowly working my way around.

I’m hoping to use them as Bluetooth proxies with esphome.io. Has anyone done this yet?


And unrelated: has anyone figured how to enable/disable auto-lock without using the Wyze app?

The ESP32 will enter the serial bootloader when GPIO0 is held low on reset.

https://docs.espressif.com/projects/esptool/en/latest/esp32/advanced-topics/boot-mode-selection.html#select-bootloader-mode

I haven’t got that to work yet. I’ll update when I do.

Serial output at 115200 baud for an already configured unit:

I added two locks to Home Assistant from the method at the top, everything added and am able to control just fine.

The issue I’m seeing is the status is not being reflected in any updates. If I manually unlock that status does not get translated back to Home Assistant.

Has anyone else seen this and know how to fix?

I was using the Wzye Lock with the custom quirk a year or so ago and I was able to see the Interesting Attributes debug log. But now with the latest Home Assistant I don’t see status updates or any Interesting Attributes debug logs when manually unlocking/locking the lock.

What changed?

@oxnor I have the same problem, not getting status updates. Seems like an on-going problem :frowning:

EDIT: I removed the Wyse Lock and replaced it with a Kwikset 914. I wanted something better but not going to spend another $100 or so right now on another gadget haha! It was only $30 on eBay. I get updates and appears a correct battery level with the Kwikset. I still have to configure everything in HA but so far so good!

1 Like

Seems like there may have been a breaking change that F’d custom quirks. I am not sure how to fix it, but if I figure it out I will post the results here.

I am getting this in logs:

DEBUG (SyncWorker_8) [zhaquirks] Loading custom quirk module 'wyzelock'

2024-08-29 16:57:53.913 ERROR (SyncWorker_8) [zhaquirks] Unexpected exception importing custom quirk 'wyzelock'

Traceback (most recent call last):

File "/usr/local/lib/python3.12/site-packages/zhaquirks/__init__.py", line 459, in setup

spec.loader.exec_module(module)

File "<frozen importlib._bootstrap_external>", line 995, in exec_module

File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed

File "/config/zigbee/quirks/wyzelock.py", line 21, in <module>

from . import YUNDING

ImportError: attempted relative import with no known parent package

Hi all,

I was having the same issue that many others have reported on this thread (no arguments were passed to the incoming message), so I did a bit of digging and managed to fix it. The updated code is here (I also added a comment with installation instructions): wyze.py · GitHub

It would be good if people would post the messages they see in the logs for various operations (manual lock/manual unlock/app lock/app unlock/open door/close door/auto-lock), the messages looking like this:

2025-02-06 18:04:15.203 WARNING (MainThread) [zigpy.zcl] [0x2F7D:1:0xfc00] [Wyze Lock] Received command: [49, 171, 64, 0, 39, 143, 92, 128, 50, 0, 3, 6, 96, 172, 36, 229, 187, 91, 157, 138, 98, 247, 245, 49, 26, 215, 232, 187, 80, 178, 101, 149, 17, 94, 213, 83, 91, 110, 186, 14, 162, 0, 186, 182, 166, 47, 92, 225, 186, 89]

Maybe if we can see enough messages we can make more progress in reverse engineering the message format. Also post the battery % you see in the app at the time when the messages are sent.


Can anyone help me figure out which pins connect the zigbee chip to the esp32? I tried probing with my multimeter but there isnt continuity between any of the esp32 pins and the test pads on the board near the zigbee chip besides 3.3v, gnd, and gnd1. I did color code the solder pads to the test pins though.

I like your version better because it provides a way to have different values when you have multiple locks. However it seems to me that my lock is different from yours because:

  1. Value at index args[52] is not consistent on subsequent operations of lock/unlock, so I tried to rely only on args[41].
  2. It seems that messages of lock/unlock of either manually or via app are the same (on regards to args[41]. Given 52 is not consistent I can’t tell if on my case it would be at another index.
  3. Opening and closing the door produces no log at all. Not sure what I am missing, or if it is really different to the point of not reporting the status at all on zigbee - maybe this is something pooled? idk.
  • I’m yet to find out how it behaves on auto-lock and door jam.
    I’d also like to learn how to report on battery level.

Here is the log of what I’ve tested so far

2025-11-21 12:15:44.409 WARNING (MainThread) [zigpy.zcl] [0x6BD7:1:0xfc00] [Wyze Lock] Received command: [75, 171, 64, 0, 65, 219, 228, 128, 97, 0, 1, 6, 96, 237, 23, 50, 66, 192, 136, 27, 24, 194, 89, 30, 183, 148, 70, 224, 167, 86, 119, 248, 16, 123, 90, 176, 137, 13, 221, 109, 187, 165, 200, 93, 145, 6, 55, 154, 13, 180, 8, 88, 112, 180, 93, 117, 151, 56, 199, 140, 166, 85, 36, 127, 107, 251, 65, 206, 224, 53, 4, 34, 205, 163, 73, 92]
2025-11-21 12:15:44.410 WARNING (MainThread) [zigpy.zcl] [0x6BD7:1:0xfc00] [Wyze Lock] Door action: Action.APP_LOCK
2025-11-21 12:18:44.887 WARNING (MainThread) [zigpy.zcl] [0x6BD7:1:0xfc00] [Wyze Lock] Received command: [45, 171, 64, 0, 35, 172, 112, 128, 99, 0, 1, 6, 96, 237, 23, 50, 66, 192, 136, 29, 24, 194, 89, 30, 183, 149, 12, 224, 167, 86, 16, 120, 121, 123, 74, 74, 137, 17, 193, 77, 23, 160, 63, 93, 148, 110]
2025-11-21 12:18:44.887 WARNING (MainThread) [zigpy.zcl] [0x6BD7:1:0xfc00] [Wyze Lock] Ignoring mesage of unknown type: (45, 171, 64), len: 46
2025-11-21 12:31:44.584 WARNING (MainThread) [zigpy.zcl] [0x6BD7:1:0xfc00] [Wyze Lock] Received command: [75, 171, 64, 0, 65, 165, 109, 128, 102, 0, 1, 6, 96, 237, 23, 50, 66, 192, 136, 28, 24, 194, 89, 30, 183, 136, 0, 224, 167, 86, 69, 113, 16, 123, 90, 176, 137, 13, 221, 109, 187, 162, 200, 93, 145, 6, 55, 134, 77, 180, 8, 88, 116, 180, 93, 117, 148, 213, 199, 140, 166, 85, 36, 127, 107, 251, 65, 206, 224, 53, 24, 98, 205, 163, 73, 95]
2025-11-21 12:31:44.585 WARNING (MainThread) [zigpy.zcl] [0x6BD7:1:0xfc00] [Wyze Lock] Door action: Action.APP_UNLOCK

During these tests, I had the “Door Position” setting off.
I just recalibrated and enabled door position, and now I can’t even figure out the lock status anymore. The number of arguments is less then 52, often 20 or 40, and the messages are not consistent with the real actions I see in the app - like, opening the door shows in the app a log of the door open, but this doesn’t show up in zha logs with an approximate time stamp. Most of time the number of logs is smaller than the number of items in the Wyze App.

So I ended up with having Door Position = Disabled, and I adapted the quirks to be like this: