-
Notifications
You must be signed in to change notification settings - Fork 240
Open
Labels
tuya_deviceSupport for specific Tuya DevicesSupport for specific Tuya Devices
Description
I bought a "Wireless Bluetooth gateway" (of type wg2) with 2 BLE lamps (of type "dj"), "C1206_P0_B1_LT01". They are bluetooth mesh on what I understand. I can connect via the SmartLife App and control them wth no issue. Tried adding it to the Tuya Local in Home Assistant and no success. The official Tuya componnent detected the lamp but it shows like this:
As you can see, no color controls and I can only turn on and off the lamp.
I tried with the tinytuya:
import tinytuya
import time
tinytuya.set_debug(True)
# Ble Gateway
gateway = tinytuya.Device('bfe', '192.168.1.194', local_key='REDACTED', version=3.4, persist=True) #
gateway.disabledetect = True
gateway.set_socketTimeout(1)
print(gateway.subdev_query())
The logs:
DEBUG:TinyTuya [1.17.4]
DEBUG:Python 3.13.12 (main, Feb 4 2026, 15:06:39) [GCC 15.2.0] on linux
DEBUG:Using pyca/cryptography 45.0.1 for crypto, GCM is supported
DEBUG:final payload_dict for 'bfe...' ('v3.4'/'default'): {1: {'command': {'gwId': '', 'devId': '', 'uid': '', 't': ''}}, 7: {'command': {'protocol': 5, 't': 'int', 'data': {}}, 'command_override': 13}, 8: {'command': {'gwId': '', 'devId': ''}}, 9: {'command': {'gwId': '', 'devId': ''}}, 10: {'command': {}, 'command_override': 16}, 13: {'command': {'protocol': 5, 't': 'int', 'data': {}}}, 16: {'command': {}}, 18: {'command': {'dpId': [18, 19, 20]}}, 64: {'command': {'reqType': '', 'data': {}}}}
DEBUG:building command 64 payload=b'{"reqType":"subdev_online_stat_query","data":{"cids":[]}}'
DEBUG:sending payload quick
DEBUG:final payload: b'0123456789abcdef'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:received data=b'REDACTED'
DEBUG:decrypting=b'REDACTED'
DEBUG:decrypted session key negotiation step 2 payload=b'REDACTED'
DEBUG:payload type = <class 'bytes'> len = 48
DEBUG:session local nonce: b'0123456789abcdef' remote nonce: b'REDACTED'
DEBUG:sending payload quick
DEBUG:final payload: b"REDACTED"
DEBUG:payload encrypted=b'REDACTED'
DEBUG:Session nonce XOR'd: b'REDACTED'
DEBUG:Session key negotiate success! session key: b'REDACTED'
DEBUG:sending payload
DEBUG:final payload: b'{"reqType":"subdev_online_stat_query","data":{"cids":[]}}'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:received data=b'REDACTED'
DEBUG:received null payload (TuyaMessage(seqno=30844, cmd=64, retcode=0, payload=b'', crc=b'REDACTED', crc_good=True, prefix=21930, iv=None)), fetch new one - retry 0 / 5
DEBUG:received data=b'REDACTED'
DEBUG:received message=TuyaMessage(seqno=30845, cmd=64, retcode=0, payload=b'REDACTED', crc=b'REDACTED', crc_good=True, prefix=21930, iv=None)
DEBUG:raw unpacked message = TuyaMessage(seqno=30845, cmd=64, retcode=0, payload=b'REDACTED', crc=b'REDACTED', crc_good=True, prefix=21930, iv=None)
DEBUG:decode payload=b'REDACTED'
DEBUG:decrypting=b'REDACTED'
DEBUG:decrypted 3.x payload=b'{"reqType":"subdev_online_stat_report","data":{"online":["lamp1SubDev","lamp2SubDev"],"offline":[]}}'
DEBUG:payload type = <class 'bytes'>
DEBUG:decoded results='{"reqType":"subdev_online_stat_report","data":{"online":["lamp1SubDev","lamp2SubDev"],"offline":[]}}'
DEBUG:caching: {'reqType': 'subdev_online_stat_report', 'data': {'online': ['lamp1SubDev', 'lamp2SubDev'], 'offline': []}}
DEBUG:merged: {'reqType': 'subdev_online_stat_report', 'data': {'online': ['lamp1SubDev', 'lamp2SubDev'], 'offline': []}}
gateway.status()
DEBUG:status() entry (dev_type is default)
DEBUG:building command 10 payload=b'{}'
DEBUG:sending payload
DEBUG:final payload: b'{}'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:Network connection error in _send_receive() - retry 1/5
Traceback (most recent call last):
File "/REDACTED/.local/lib/python3.13/site-packages/tinytuya/core/XenonDevice.py", line 563, in _send_receive
self.socket.sendall(enc_payload)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer
DEBUG:sending payload quick
DEBUG:final payload: b'0123456789abcdef'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:received data=b'REDACTED'
DEBUG:decrypting=b'REDACTED'
DEBUG:decrypted session key negotiation step 2 payload=b'REDACTED'
DEBUG:payload type = <class 'bytes'> len = 48
DEBUG:session local nonce: b'0123456789abcdef' remote nonce: b'REDACTED'
DEBUG:sending payload quick
DEBUG:final payload: b'REDACTED'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:Session nonce XOR'd: b'REDACTED'
DEBUG:Session key negotiate success! session key: b'REDACTED'
DEBUG:sending payload
DEBUG:final payload: b'{}'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:received data=b'REDACTED'
DEBUG:received message=TuyaMessage(seqno=41365, cmd=16, retcode=1, payload=b'REDACTED', crc=b'=REDACTED', crc_good=True, prefix=21930, iv=None)
DEBUG:raw unpacked message = TuyaMessage(seqno=41365, cmd=16, retcode=1, payload=b'REDACTED', crc=b'=REDACTED', crc_good=True, prefix=21930, iv=None)
DEBUG:decode payload=b'REDACTED'
DEBUG:decrypting=b'REDACTED'
DEBUG:decrypted 3.x payload=b'json obj data unvalid'
DEBUG:payload type = <class 'bytes'>
DEBUG:decoded results='json obj data unvalid'
DEBUG:ERROR Invalid JSON Response from Device - 900 - payload: "json obj data unvalid"
DEBUG:caching: {'Error': 'Invalid JSON Response from Device', 'Err': '900', 'Payload': 'json obj data unvalid', 'invalid_json': 'json obj data unvalid'}
DEBUG:merged: {}
DEBUG:status() received data={'Error': 'Invalid JSON Response from Device', 'Err': '900', 'Payload': 'json obj data unvalid', 'invalid_json': 'json obj data unvalid'}
lamp = tinytuya.BulbDevice('lamp2Id', cid='lamp2SubDev', parent=gateway, version=3.4)
lamp.set_socketTimeout(1)
on = False
lamp.turn_off()
DEBUG:status() entry (dev_type is default)
DEBUG:final payload_dict for 'lamp2Id' ('v3.4'/'default'): {1: {'command': {'gwId': '', 'devId': '', 'uid': '', 't': ''}}, 7: {'command': {'protocol': 5, 't': 'int', 'data': {'cid': ''}}, 'command_override': 13}, 8: {'command': {'gwId': '', 'devId': ''}}, 9: {'command': {'gwId': '', 'devId': ''}}, 10: {'command': {}, 'command_override': 16}, 13: {'command': {'protocol': 5, 't': 'int', 'data': {'cid': ''}}}, 16: {'command': {}}, 18: {'command': {'dpId': [18, 19, 20]}}, 64: {'command': {'reqType': '', 'data': {}}}}
DEBUG:building command 10 payload=b'{"cid":"lamp2SubDev"}'
DEBUG:sending payload
DEBUG:final payload: b'{"cid":"lamp2SubDev"}'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:received data=b'REDACTED'
DEBUG:received message=TuyaMessage(seqno=16959, cmd=16, retcode=1, payload=b'REDACTED', crc=b'REDACTED', crc_good=True, prefix=21930, iv=None)
DEBUG:raw unpacked message = TuyaMessage(seqno=16959, cmd=16, retcode=1, payload=b'REDACTED', crc=b'REDACTED', crc_good=True, prefix=21930, iv=None)
DEBUG:decode payload=b'REDACTED'
DEBUG:decrypting=b'REDACTED'
DEBUG:decrypted 3.x payload=b'json obj data unvalid'
DEBUG:payload type = <class 'bytes'>
DEBUG:decoded results='json obj data unvalid'
DEBUG:ERROR Invalid JSON Response from Device - 900 - payload: "json obj data unvalid"
DEBUG:Recieved async update for wrong CID None while looking for CID lamp2SubDev, trying again
DEBUG:caching: {'Error': 'Invalid JSON Response from Device', 'Err': '900', 'Payload': 'json obj data unvalid', 'invalid_json': 'json obj data unvalid'}
DEBUG:merged: {'reqType': 'subdev_online_stat_report', 'data': {'online': ['dc2352d28192', 'lamp2SubDev'], 'offline': []}}
DEBUG:status() received data=None
DEBUG:building command 7 payload=b'{"protocol":5,"t":1770818185,"data":{"cid":"lamp2SubDev","ctype":0,"dps":{"1":false}},"cid":"lamp2SubDev"}'
DEBUG:sending payload
DEBUG:final payload: b'3.4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00{"protocol":5,"t":1770818185,"data":{"cid":"lamp2SubDev","ctype":0,"dps":{"1":false}},"cid":"lamp2SubDev"}'
DEBUG:payload encrypted=b'REDACTED'
DEBUG:received data=b'REDACTED'
DEBUG:received null payload (TuyaMessage(seqno=16960, cmd=13, retcode=0, payload=b'', crc=b'REDACTEDe', crc_good=True, prefix=21930, iv=None)), fetch new one - retry 0 / 5
DEBUG:set_status received data=None
I can't get the lamp.status(), getting the error "json obj data unvalid".
Can anyone help me? Thanks!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
tuya_deviceSupport for specific Tuya DevicesSupport for specific Tuya Devices