[SOLVED] Local UNLOCK of Tuya jtmspro locks (A1 Pro Max, A1 Ultra, Raykube AT1) in Home Assistant - without the cloud
After many hours of fiddling (and almost buying an Aqara U200 for £1000) I managed to get the Tuya A1 Pro Max lock (category: jtmspro, product_id: rlyxv7pe) to work fully locally in Home Assistant - including opening - no Tuya cloud, no their gateway, pure BLE.
I'm sharing because the information is scattered around GitHub issues, abandoned forums and a few Russian forums. I would have written to myself yesterday that someone wrote this - this is today.
Use ShonP40/Tuya-BLE (NOT PlusPlus-ua, NOT make-all/tuya-local) + Bluetooth proxy close to the lock. ShonP40 embraces dynamic anti-replay keys that block other local integrations for jtmspro locks.
Tuya "Pro" BLE locks (jtmspro category) use a different protocol than basic BLE locks (ms category):
- PlusPlus-ua/ha_tuya_ble → "unsupported"
- make-all/tuya-local → connects via gateway but openly writes that unlock requires cloud (DPS 60/61 needs dynamic key per request - this is anti-replay protection)
- LocalTuya / xZetsubou → same problem
- Sniffing unlock code from Tuya Cloud Device Logs → works TOGETHER, then key rotates (anti-replay does its job)
For months these locks were considered "lock only, no local unlock". This is not true.
This is a small fork (3 stars at the time of writing) based on the work of PlusPlus-ua/redphx/SupaHotMoj0, which overtly lists rlyxv7pe (jtmspro) with the description "Allows lock/unlock control and status monitoring."
Repo: https://github.com/ShonP40/Tuya-BLE
The sister repo retomarek/tuya_local_ble looks identical and should also work - fallback.
- Home Assistant OS 17.x, Core 2026.5+
- SLZB-06p10U from SMLight (Zigbee coordinator with ESP32-S3) flashed ESPHome firmware from smlight-dev/slzb-06-fw-esphome - so one device supports Zigbee + BT proxy simultaneously
- SLZB ~1m from the lock, in the corridor
- Lock: Tuya A1 Pro Max (same method should work for A1 Ultra, Raykube AT1, LA-T01 and other jtmspro)
First you need to pair the lock in the Smart Life app (there is no workaround - the cloud generates the local_key when pairing). Then:
1. https://iot.tuya.com → create Cloud Project, subscribe to IoT Core API
2. Link Smart Life account (Central Europe Data Centre for PL)
3. API Explorer → Device Management → Query Device Details for the lock
4. Save: device_id, local_key, uuid (= node_id), product_id, category
Two ways:
- In Smart Life: lock → settings → Device information → MAC
- In HA: Settings → Devices and services → Bluetooth → Tuya locks broadcast service UUID 0000fd50-0000-1000-8000-00805f9b34fb
Options:
- ESP32 from Ali for ~£30 flashing ESPHome bluetooth_proxy from https://esphome.github.io/bluetooth-proxies/
- Or SLZB-06xU (like me) → flash ESPHome from https://github.com/smlight-dev/slzb-06-fw-esphome - retains Zigbee + adds BT proxy
- Or HA OS on RPi with native BT (limited range)
1. HACS → ⋮ → Custom repositories
2. URL: https://github.com/ShonP40/Tuya-BLE, Category: Integration
3. Download "Tuya BLE"
4. DO NOT reboot yet - make a configuration file first
Create a file /config/tuya_local_ble/devices.json:
{
"AA:BB:CC:D D:EE:FF": {
"address": "AA:BB:CC:D D:EE:FF",
"uuid": "<your_uuuid_mean_node_id>",
"local_key": "<your_local_key>",
"device_id": "<your_device_id>",
"category": "jtmspro",
"product_id": "rlyxv7pe",
"device_name": "main door",
"product_model": "AT1",
"product_name": "Smart lock"
}
}
Replace MAC, uuid, local_key, device_id with your values. For A1 Pro Max leave the category and product_id as above. For A1 Ultra product_id may be different - check list of supported in repo.
Tip for Windows: HA exposes the ƒlt;IP-HA>ƒconfig as an SMB share - you can edit the files directly from Windows Explorer + Notepad. Note two pitfalls:
- The file MUST be named devices.json (not devices.json.txt) - enable "Show file extensions" in Explorer
- After saving, check that the size > 0 KB
After the reboot, the integration itself detects the lock from devices.json. Go to Settings → Devices and Services → search for <MODEL> <END_MAC> under "Detected" with the label Tuya Local BLE. Click "Create."
The lock entity appears with lock/unlock + battery + direction + volume. Click unlock - door opens in ~1 second.
- Lock and UNLOCK with HA (the holy grail for jtmspro)
- Battery status, lock direction, key volume
- Automations for lock/unlock events
- Voice unlock via Alexa/Google (via HA, not Tuya skille)
- Real-time status
- All physical methods still work (fingerprint, PIN, key, NFC, app)
- 100% local - works offline, no cloud connections during use
- Adding new fingerprint/PIN - Smart Life app communicates directly via BLE, not the cloud
- Firmware updates - via the Smart Life app
1. Typo mkdir in SSH - I typed kdir for 4 times before I noticed the missing "m"
2. Tilde in folder name - miscopy created tuya_local_ble~ (with ~), integration was not finding the file
3. .txt in JSON file name - Windows hides extensions, file was called devices.json.txt
4. Empty file (0 KB) - forgot Ctrl+S in Notepad after pasting content
5. Shooting down a dead end - for 2 sessions I tried PlusPlus-ua and make-all/tuya-local convinced it was a dead end. Just had to ask "someone must have solved this" and look for niche forums.
Huge thanks to:
- @ShonP40 for the working integration
- @plusplus-u, @redphx, @SupaHotMoj0, @dmickeyus - the underlying code
- SMLight for ESPHome firmware with BT proxy + Zigbee on SLZB-06xU
And for CLAUDE that he dug up
If this post has saved you an evening of nerves, give ShonP40/Tuya-BLE a star on GitHub - the little project deserves to be appreciated.
Added after 8 [minutes]:
Thanks to Claude (Anthropic) for helping me dig through issues, debug and niche repos which without deep search I would never have found.
Shooting down a dead end - for 2 sessions I tried PlusPlus-ua make-all/tuya-local, HA-ble convinced it was a dead end. Just had to ask "someone must have solved this dig deeper" and searched niche forums 3* only but good project for local action in HA I recommend and give a like to the guy because underestimated, and it's a complex problem because the encryption in them variable and it's good locks and cheap I have 2 already 3 years and it works laughs on batteries and not rechargeable so far they have not failed me in utomatization so I wanted to have them locally and it is! Let's share the knowledge !
After many hours of fiddling (and almost buying an Aqara U200 for £1000) I managed to get the Tuya A1 Pro Max lock (category: jtmspro, product_id: rlyxv7pe) to work fully locally in Home Assistant - including opening - no Tuya cloud, no their gateway, pure BLE.
I'm sharing because the information is scattered around GitHub issues, abandoned forums and a few Russian forums. I would have written to myself yesterday that someone wrote this - this is today.
TL;DR
Use ShonP40/Tuya-BLE (NOT PlusPlus-ua, NOT make-all/tuya-local) + Bluetooth proxy close to the lock. ShonP40 embraces dynamic anti-replay keys that block other local integrations for jtmspro locks.
Problem
Tuya "Pro" BLE locks (jtmspro category) use a different protocol than basic BLE locks (ms category):
- PlusPlus-ua/ha_tuya_ble → "unsupported"
- make-all/tuya-local → connects via gateway but openly writes that unlock requires cloud (DPS 60/61 needs dynamic key per request - this is anti-replay protection)
- LocalTuya / xZetsubou → same problem
- Sniffing unlock code from Tuya Cloud Device Logs → works TOGETHER, then key rotates (anti-replay does its job)
For months these locks were considered "lock only, no local unlock". This is not true.
Solution: ShonP40/Tuya-BLE
This is a small fork (3 stars at the time of writing) based on the work of PlusPlus-ua/redphx/SupaHotMoj0, which overtly lists rlyxv7pe (jtmspro) with the description "Allows lock/unlock control and status monitoring."
Repo: https://github.com/ShonP40/Tuya-BLE
The sister repo retomarek/tuya_local_ble looks identical and should also work - fallback.
My equipment (for reference)
- Home Assistant OS 17.x, Core 2026.5+
- SLZB-06p10U from SMLight (Zigbee coordinator with ESP32-S3) flashed ESPHome firmware from smlight-dev/slzb-06-fw-esphome - so one device supports Zigbee + BT proxy simultaneously
- SLZB ~1m from the lock, in the corridor
- Lock: Tuya A1 Pro Max (same method should work for A1 Ultra, Raykube AT1, LA-T01 and other jtmspro)
Step by step
1. Extract credentials from the Tuya IoT Platform
First you need to pair the lock in the Smart Life app (there is no workaround - the cloud generates the local_key when pairing). Then:
1. https://iot.tuya.com → create Cloud Project, subscribe to IoT Core API
2. Link Smart Life account (Central Europe Data Centre for PL)
3. API Explorer → Device Management → Query Device Details for the lock
4. Save: device_id, local_key, uuid (= node_id), product_id, category
2. Find the MAC address of the BLE lock
Two ways:
- In Smart Life: lock → settings → Device information → MAC
- In HA: Settings → Devices and services → Bluetooth → Tuya locks broadcast service UUID 0000fd50-0000-1000-8000-00805f9b34fb
3. Place the Bluetooth proxy close to the lock
Options:
- ESP32 from Ali for ~£30 flashing ESPHome bluetooth_proxy from https://esphome.github.io/bluetooth-proxies/
- Or SLZB-06xU (like me) → flash ESPHome from https://github.com/smlight-dev/slzb-06-fw-esphome - retains Zigbee + adds BT proxy
- Or HA OS on RPi with native BT (limited range)
4. ShonP40/Tuya-BLE installation via HACS
1. HACS → ⋮ → Custom repositories
2. URL: https://github.com/ShonP40/Tuya-BLE, Category: Integration
3. Download "Tuya BLE"
4. DO NOT reboot yet - make a configuration file first
5. Create devices.json
Create a file /config/tuya_local_ble/devices.json:
{
"AA:BB:CC:D D:EE:FF": {
"address": "AA:BB:CC:D D:EE:FF",
"uuid": "<your_uuuid_mean_node_id>",
"local_key": "<your_local_key>",
"device_id": "<your_device_id>",
"category": "jtmspro",
"product_id": "rlyxv7pe",
"device_name": "main door",
"product_model": "AT1",
"product_name": "Smart lock"
}
}
Replace MAC, uuid, local_key, device_id with your values. For A1 Pro Max leave the category and product_id as above. For A1 Ultra product_id may be different - check list of supported in repo.
Tip for Windows: HA exposes the ƒlt;IP-HA>ƒconfig as an SMB share - you can edit the files directly from Windows Explorer + Notepad. Note two pitfalls:
- The file MUST be named devices.json (not devices.json.txt) - enable "Show file extensions" in Explorer
- After saving, check that the size > 0 KB
6. HA restart and configuration
After the reboot, the integration itself detects the lock from devices.json. Go to Settings → Devices and Services → search for <MODEL> <END_MAC> under "Detected" with the label Tuya Local BLE. Click "Create."
7. Test
The lock entity appears with lock/unlock + battery + direction + volume. Click unlock - door opens in ~1 second.
What you get
- Lock and UNLOCK with HA (the holy grail for jtmspro)
- Battery status, lock direction, key volume
- Automations for lock/unlock events
- Voice unlock via Alexa/Google (via HA, not Tuya skille)
- Real-time status
- All physical methods still work (fingerprint, PIN, key, NFC, app)
- 100% local - works offline, no cloud connections during use
When cloud still needed (optional)
- Adding new fingerprint/PIN - Smart Life app communicates directly via BLE, not the cloud
- Firmware updates - via the Smart Life app
Traps I ran into (learn from my mistakes)
1. Typo mkdir in SSH - I typed kdir for 4 times before I noticed the missing "m"
2. Tilde in folder name - miscopy created tuya_local_ble~ (with ~), integration was not finding the file
3. .txt in JSON file name - Windows hides extensions, file was called devices.json.txt
4. Empty file (0 KB) - forgot Ctrl+S in Notepad after pasting content
5. Shooting down a dead end - for 2 sessions I tried PlusPlus-ua and make-all/tuya-local convinced it was a dead end. Just had to ask "someone must have solved this" and look for niche forums.
Thanks
Huge thanks to:
- @ShonP40 for the working integration
- @plusplus-u, @redphx, @SupaHotMoj0, @dmickeyus - the underlying code
- SMLight for ESPHome firmware with BT proxy + Zigbee on SLZB-06xU
And for CLAUDE that he dug up
If this post has saved you an evening of nerves, give ShonP40/Tuya-BLE a star on GitHub - the little project deserves to be appreciated.
Added after 8 [minutes]:
Thanks to Claude (Anthropic) for helping me dig through issues, debug and niche repos which without deep search I would never have found.
Shooting down a dead end - for 2 sessions I tried PlusPlus-ua make-all/tuya-local, HA-ble convinced it was a dead end. Just had to ask "someone must have solved this dig deeper" and searched niche forums 3* only but good project for local action in HA I recommend and give a like to the guy because underestimated, and it's a complex problem because the encryption in them variable and it's good locks and cheap I have 2 already 3 years and it works laughs on batteries and not rechargeable so far they have not failed me in utomatization so I wanted to have them locally and it is! Let's share the knowledge !