[ROZWIĄZANE] Lokalny UNLOCK zamków Tuya jtmspro (A1 Pro Max, A1 Ultra, Raykube AT1) w Home Assistant — bez chmury
Po wielu godzinach kombinowania (i prawie zakupie Aqary U200 za 1000 zł) udało mi się uruchomić zamek Tuya A1 Pro Max (kategoria: jtmspro, product_id: rlyxv7pe) w pełni lokalnie w Home Assistant — z otwieraniem włącznie — bez chmury Tuya, bez ich bramki, czysty BLE.
Dzielę się bo informacje są rozsiane po GitHubowych issues, opuszczonych forkach i kilku rosyjskich forach. Pisałbym sobie wczoraj że ktoś to napisał — to dzisiaj.
Używaj ShonP40/Tuya-BLE (NIE PlusPlus-ua, NIE make-all/tuya-local) + Bluetooth proxy blisko zamka. ShonP40 ogarnia dynamiczne klucze anti-replay, które blokują pozostałe lokalne integracje dla zamków jtmspro.
Zamki Tuya "Pro" BLE (kategoria jtmspro) używają innego protokołu niż podstawowe BLE locks (kategoria ms):
- PlusPlus-ua/ha_tuya_ble → "unsupported"
- make-all/tuya-local → łączy przez bramkę ale otwarcie pisze że unlock wymaga chmury (DPS 60/61 potrzebuje dynamicznego klucza per request — to jest anti-replay protection)
- LocalTuya / xZetsubou → ten sam problem
- Sniffowanie kodu unlock z Tuya Cloud Device Logs → działa RAZ, potem klucz się rotuje (anti-replay swoje robi)
Przez miesiące te zamki były uznawane za "tylko lock, brak lokalnego unlock". To nieprawda.
To mały fork (3 gwiazdki w chwili pisania) bazujący na pracy PlusPlus-ua/redphx/SupaHotMoj0, który jawnie wymienia rlyxv7pe (jtmspro) z opisem "Allows lock/unlock control and status monitoring."
Repo: https://github.com/ShonP40/Tuya-BLE
Repo siostrzane retomarek/tuya_local_ble wygląda identycznie i powinno też działać — fallback.
- Home Assistant OS 17.x, Core 2026.5+
- SLZB-06p10U od SMLight (koordynator Zigbee z ESP32-S3) sflashowany firmware ESPHome z smlight-dev/slzb-06-fw-esphome — dzięki temu jedno urządzenie obsługuje Zigbee + BT proxy jednocześnie
- SLZB ~1m od zamka, w korytarzu
- Zamek: Tuya A1 Pro Max (taka sama metoda powinna działać dla A1 Ultra, Raykube AT1, LA-T01 i innych jtmspro)
Najpierw musisz sparować zamek w aplikacji Smart Life (nie ma obejścia — chmura generuje local_key podczas pairing). Potem:
1. https://iot.tuya.com → utwórz Cloud Project, subskrybuj IoT Core API
2. Zlinkuj konto Smart Life (Central Europe Data Center dla PL)
3. API Explorer → Device Management → Query Device Details dla zamka
4. Zapisz: device_id, local_key, uuid (= node_id), product_id, category
Dwa sposoby:
- W aplikacji Smart Life: zamek → ustawienia → Informacje o urządzeniu → MAC
- W HA: Settings → Urządzenia i usługi → Bluetooth → zamki Tuya nadają service UUID 0000fd50-0000-1000-8000-00805f9b34fb
Opcje:
- ESP32 z Ali za ~30 zł flashowany ESPHome bluetooth_proxy z https://esphome.github.io/bluetooth-proxies/
- Lub SLZB-06xU (jak ja) → flash ESPHome z https://github.com/smlight-dev/slzb-06-fw-esphome — zachowuje Zigbee + dodaje BT proxy
- Lub HA OS na RPi z natywnym BT (ograniczony zasięg)
1. HACS → ⋮ → Custom repositories
2. URL: https://github.com/ShonP40/Tuya-BLE, Category: Integration
3. Pobierz "Tuya BLE"
4. NIE restartuj jeszcze — najpierw zrób plik konfiguracyjny
Stwórz plik /config/tuya_local_ble/devices.json:
{
"AA:BB:CC:DD:EE:FF": {
"address": "AA:BB:CC:DD:EE:FF",
"uuid": "<twoj_uuid_czyli_node_id>",
"local_key": "<twoj_local_key>",
"device_id": "<twoj_device_id>",
"category": "jtmspro",
"product_id": "rlyxv7pe",
"device_name": "Drzwi główne",
"product_model": "AT1",
"product_name": "Smart lock"
}
}
Podmień MAC, uuid, local_key, device_id na swoje wartości. Dla A1 Pro Max zostaw category i product_id jak wyżej. Dla A1 Ultra product_id może być inny — sprawdź listę wspieranych w repo.
Tip dla Windowsa: HA wystawia \\<IP-HA>\config\ jako udział SMB — możesz edytować pliki bezpośrednio z Eksploratora Windows + Notatnik. Uwaga na dwa pułapki:
- Plik MUSI nazywać się devices.json (nie devices.json.txt) — włącz "Pokaż rozszerzenia plików" w Eksploratorze
- Po zapisie sprawdź czy rozmiar > 0 KB
Po restarcie integracja sama wykrywa zamek z devices.json. Idź do Ustawienia → Urządzenia i usługi → szukaj <MODEL> <KOŃCÓWKA_MAC> pod "Wykryte" z etykietą Tuya Local BLE. Kliknij "Utwórz".
Encja zamka pojawia się z lock/unlock + bateria + kierunek + głośność. Klik unlock — drzwi się otwierają w ~1 sekundę.
- Lock i UNLOCK z HA (święty graal dla jtmspro)
- Status baterii, kierunek zamka, głośność klawiszy
- Automatyzacje na zdarzenia lock/unlock
- Voice unlock przez Alexa/Google (przez HA, nie skille Tuya)
- Status w czasie rzeczywistym
- Wszystkie metody fizyczne nadal działają (odcisk, PIN, klucz, NFC, aplikacja)
- 100% lokalnie — działa offline, bez połączeń z chmurą podczas użytkowania
- Dodawanie nowych odcisków/PIN — aplikacja Smart Life komunikuje się bezpośrednio przez BLE, nie chmurą
- Aktualizacje firmware — przez aplikację Smart Life
1. Literówka mkdir w SSH — wpisywałem kdir przez 4 razy zanim zauważyłem brakujące "m"
2. Tylda w nazwie folderu — przez błędne kopiowanie utworzył się tuya_local_ble~ (z ~), integracja nie znajdowała pliku
3. .txt w nazwie pliku JSON — Windows ukrywa rozszerzenia, plik nazywał się devices.json.txt
4. Pusty plik (0 KB) — zapomniałem Ctrl+S w Notatniku po wklejeniu treści
5. Strzelanie ślepą drogą — przez 2 sesje próbowałem PlusPlus-ua i make-all/tuya-local przekonany że to ślepy zaułek. Trzeba było tylko zapytać "ktoś musiał to rozwiązać" i poszukać niszowych forków.
Ogromne podziękowania dla:
- @ShonP40 za działającą integrację
- @plusplus-u, @redphx, @SupaHotMoj0, @dmickeyus — bazowy kod
- SMLight za firmware ESPHome z BT proxy + Zigbee na SLZB-06xU
I dla CLAUDE, że wykopał
Jeśli ten post zaoszczędził Wam wieczór nerwów, dajcie ShonP40/Tuya-BLE gwiazdkę na GitHubie — mały projekt zasługuje na docenienie.
Dodano po 8 [minuty]:
Podziękowanie dla Claude (Anthropic) za pomoc w przekopywaniu się przez issues, debug i niszowe repo które bez głębokiego search bym nigdy nie znalazł.
Strzelanie ślepą drogą — przez 2 sesje próbowałem PlusPlus-ua make-all/tuya-local, HA-ble przekonywany, że to ślepy zaułek. Trzeba było tylko zapytać “ktoś musiał to rozwiązać kop głębiej” i poszukał niszowych forków 3* tylko ale dobry projekt na lokalne działanie w HA polecam i dajcie like gościowi bo niedoceniony, a to złożony problem bo szyfrowanie w nich zmienne i to dobre zamki i tanie mam 2 już 3 lata i działa śmiga na bateriach a nie akumulatorach jak na razie nie zawiodły mnie w utomatyzacjach dlatego tak chciałem je mieć lokalnie i jest! Dzielmy się wiedzą !
Po wielu godzinach kombinowania (i prawie zakupie Aqary U200 za 1000 zł) udało mi się uruchomić zamek Tuya A1 Pro Max (kategoria: jtmspro, product_id: rlyxv7pe) w pełni lokalnie w Home Assistant — z otwieraniem włącznie — bez chmury Tuya, bez ich bramki, czysty BLE.
Dzielę się bo informacje są rozsiane po GitHubowych issues, opuszczonych forkach i kilku rosyjskich forach. Pisałbym sobie wczoraj że ktoś to napisał — to dzisiaj.
TL;DR
Używaj ShonP40/Tuya-BLE (NIE PlusPlus-ua, NIE make-all/tuya-local) + Bluetooth proxy blisko zamka. ShonP40 ogarnia dynamiczne klucze anti-replay, które blokują pozostałe lokalne integracje dla zamków jtmspro.
Problem
Zamki Tuya "Pro" BLE (kategoria jtmspro) używają innego protokołu niż podstawowe BLE locks (kategoria ms):
- PlusPlus-ua/ha_tuya_ble → "unsupported"
- make-all/tuya-local → łączy przez bramkę ale otwarcie pisze że unlock wymaga chmury (DPS 60/61 potrzebuje dynamicznego klucza per request — to jest anti-replay protection)
- LocalTuya / xZetsubou → ten sam problem
- Sniffowanie kodu unlock z Tuya Cloud Device Logs → działa RAZ, potem klucz się rotuje (anti-replay swoje robi)
Przez miesiące te zamki były uznawane za "tylko lock, brak lokalnego unlock". To nieprawda.
Rozwiązanie: ShonP40/Tuya-BLE
To mały fork (3 gwiazdki w chwili pisania) bazujący na pracy PlusPlus-ua/redphx/SupaHotMoj0, który jawnie wymienia rlyxv7pe (jtmspro) z opisem "Allows lock/unlock control and status monitoring."
Repo: https://github.com/ShonP40/Tuya-BLE
Repo siostrzane retomarek/tuya_local_ble wygląda identycznie i powinno też działać — fallback.
Mój sprzęt (do referencji)
- Home Assistant OS 17.x, Core 2026.5+
- SLZB-06p10U od SMLight (koordynator Zigbee z ESP32-S3) sflashowany firmware ESPHome z smlight-dev/slzb-06-fw-esphome — dzięki temu jedno urządzenie obsługuje Zigbee + BT proxy jednocześnie
- SLZB ~1m od zamka, w korytarzu
- Zamek: Tuya A1 Pro Max (taka sama metoda powinna działać dla A1 Ultra, Raykube AT1, LA-T01 i innych jtmspro)
Krok po kroku
1. Wyciągnij credentials z Tuya IoT Platform
Najpierw musisz sparować zamek w aplikacji Smart Life (nie ma obejścia — chmura generuje local_key podczas pairing). Potem:
1. https://iot.tuya.com → utwórz Cloud Project, subskrybuj IoT Core API
2. Zlinkuj konto Smart Life (Central Europe Data Center dla PL)
3. API Explorer → Device Management → Query Device Details dla zamka
4. Zapisz: device_id, local_key, uuid (= node_id), product_id, category
2. Znajdź MAC adres BLE zamka
Dwa sposoby:
- W aplikacji Smart Life: zamek → ustawienia → Informacje o urządzeniu → MAC
- W HA: Settings → Urządzenia i usługi → Bluetooth → zamki Tuya nadają service UUID 0000fd50-0000-1000-8000-00805f9b34fb
3. Postaw Bluetooth proxy blisko zamka
Opcje:
- ESP32 z Ali za ~30 zł flashowany ESPHome bluetooth_proxy z https://esphome.github.io/bluetooth-proxies/
- Lub SLZB-06xU (jak ja) → flash ESPHome z https://github.com/smlight-dev/slzb-06-fw-esphome — zachowuje Zigbee + dodaje BT proxy
- Lub HA OS na RPi z natywnym BT (ograniczony zasięg)
4. Instalacja ShonP40/Tuya-BLE przez HACS
1. HACS → ⋮ → Custom repositories
2. URL: https://github.com/ShonP40/Tuya-BLE, Category: Integration
3. Pobierz "Tuya BLE"
4. NIE restartuj jeszcze — najpierw zrób plik konfiguracyjny
5. Utwórz devices.json
Stwórz plik /config/tuya_local_ble/devices.json:
{
"AA:BB:CC:DD:EE:FF": {
"address": "AA:BB:CC:DD:EE:FF",
"uuid": "<twoj_uuid_czyli_node_id>",
"local_key": "<twoj_local_key>",
"device_id": "<twoj_device_id>",
"category": "jtmspro",
"product_id": "rlyxv7pe",
"device_name": "Drzwi główne",
"product_model": "AT1",
"product_name": "Smart lock"
}
}
Podmień MAC, uuid, local_key, device_id na swoje wartości. Dla A1 Pro Max zostaw category i product_id jak wyżej. Dla A1 Ultra product_id może być inny — sprawdź listę wspieranych w repo.
Tip dla Windowsa: HA wystawia \\<IP-HA>\config\ jako udział SMB — możesz edytować pliki bezpośrednio z Eksploratora Windows + Notatnik. Uwaga na dwa pułapki:
- Plik MUSI nazywać się devices.json (nie devices.json.txt) — włącz "Pokaż rozszerzenia plików" w Eksploratorze
- Po zapisie sprawdź czy rozmiar > 0 KB
6. Restart HA i konfiguracja
Po restarcie integracja sama wykrywa zamek z devices.json. Idź do Ustawienia → Urządzenia i usługi → szukaj <MODEL> <KOŃCÓWKA_MAC> pod "Wykryte" z etykietą Tuya Local BLE. Kliknij "Utwórz".
7. Test
Encja zamka pojawia się z lock/unlock + bateria + kierunek + głośność. Klik unlock — drzwi się otwierają w ~1 sekundę.
Co dostajesz
- Lock i UNLOCK z HA (święty graal dla jtmspro)
- Status baterii, kierunek zamka, głośność klawiszy
- Automatyzacje na zdarzenia lock/unlock
- Voice unlock przez Alexa/Google (przez HA, nie skille Tuya)
- Status w czasie rzeczywistym
- Wszystkie metody fizyczne nadal działają (odcisk, PIN, klucz, NFC, aplikacja)
- 100% lokalnie — działa offline, bez połączeń z chmurą podczas użytkowania
Kiedy chmura nadal potrzebna (opcjonalnie)
- Dodawanie nowych odcisków/PIN — aplikacja Smart Life komunikuje się bezpośrednio przez BLE, nie chmurą
- Aktualizacje firmware — przez aplikację Smart Life
Pułapki na które ja wpadłem (uczcie się na moich błędach)
1. Literówka mkdir w SSH — wpisywałem kdir przez 4 razy zanim zauważyłem brakujące "m"
2. Tylda w nazwie folderu — przez błędne kopiowanie utworzył się tuya_local_ble~ (z ~), integracja nie znajdowała pliku
3. .txt w nazwie pliku JSON — Windows ukrywa rozszerzenia, plik nazywał się devices.json.txt
4. Pusty plik (0 KB) — zapomniałem Ctrl+S w Notatniku po wklejeniu treści
5. Strzelanie ślepą drogą — przez 2 sesje próbowałem PlusPlus-ua i make-all/tuya-local przekonany że to ślepy zaułek. Trzeba było tylko zapytać "ktoś musiał to rozwiązać" i poszukać niszowych forków.
Podziękowania
Ogromne podziękowania dla:
- @ShonP40 za działającą integrację
- @plusplus-u, @redphx, @SupaHotMoj0, @dmickeyus — bazowy kod
- SMLight za firmware ESPHome z BT proxy + Zigbee na SLZB-06xU
I dla CLAUDE, że wykopał
Jeśli ten post zaoszczędził Wam wieczór nerwów, dajcie ShonP40/Tuya-BLE gwiazdkę na GitHubie — mały projekt zasługuje na docenienie.
Dodano po 8 [minuty]:
Podziękowanie dla Claude (Anthropic) za pomoc w przekopywaniu się przez issues, debug i niszowe repo które bez głębokiego search bym nigdy nie znalazł.
Strzelanie ślepą drogą — przez 2 sesje próbowałem PlusPlus-ua make-all/tuya-local, HA-ble przekonywany, że to ślepy zaułek. Trzeba było tylko zapytać “ktoś musiał to rozwiązać kop głębiej” i poszukał niszowych forków 3* tylko ale dobry projekt na lokalne działanie w HA polecam i dajcie like gościowi bo niedoceniony, a to złożony problem bo szyfrowanie w nich zmienne i to dobre zamki i tanie mam 2 już 3 lata i działa śmiga na bateriach a nie akumulatorach jak na razie nie zawiodły mnie w utomatyzacjach dlatego tak chciałem je mieć lokalnie i jest! Dzielmy się wiedzą !