logo elektroda
logo elektroda
X
logo elektroda

[SOLVED] Local UNLOCK of Tuya jtmspro locks (A1 Pro Max, A1 Ultra, Raykube AT1) in Home Assistant

jjohzie 78 0
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
  • #1 21901700
    jjohzie
    Level 1  
    Posts: 1
    [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.

    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 !
  • ADVERTISEMENT
ADVERTISEMENT