cli icon indicating copy to clipboard operation
cli copied to clipboard

Parse Data Errors

Open t3h-n00b opened this issue 4 years ago • 17 comments

Hi,

Facing an issue with some new LED Strip Controllers. Originally bought these expecting to find an ESP inside to flash with Tasmota, but they use a W600 chip that rules that out...

Version of TuyAPI is 5.3.1.

I noted some similar issues (#23, #64), however all of those seemed to be resolved with protocol changes and some time ago - so wondering if this is yet another new protocol or similar...

Example Set commands:

DEBUG=* tuya-cli set --ip 192.168.2.Z --id XXXXX --key YYYYY --protocol-version 3.3 --dps 1 --set 1
  TuyAPI IP and ID are already both resolved. +0ms
  TuyAPI Connecting to 192.168.2.Z... +11ms
  TuyAPI Socket connected. +59ms
  TuyAPI GET Payload: +1ms
  TuyAPI {
  TuyAPI   gwId: 'XXXXX',
  TuyAPI   devId: 'XXXXX',
  TuyAPI   t: '1595491332',
  TuyAPI   dps: {},
  TuyAPI   uid: 'XXXXX'
  TuyAPI } +0ms
  TuyAPI SET Payload: +12ms
  TuyAPI {
  TuyAPI   devId: 'XXXXX',
  TuyAPI   gwId: 'XXXXX',
  TuyAPI   uid: '',
  TuyAPI   t: 1595491331,
  TuyAPI   dps: { '1': 1 }
  TuyAPI } +0ms
  TuyAPI Received data: 000055aa000000010000000a0000002c000000011fd12f2145a2b4e48d0bc6f78454ef31ce04d93fc98d24d84e47a9045c13e0bd73b5e0ba0000aa55 +7ms
  TuyAPI Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('json obj data unvalid')
  TuyAPI     at TuyaDevice.emit (events.js:304:17)
  TuyAPI     at Socket.<anonymous> (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:318:22)
  TuyAPI     at Socket.emit (events.js:315:20)
  TuyAPI     at addChunk (_stream_readable.js:295:12)
  TuyAPI     at readableAddChunk (_stream_readable.js:271:9)
  TuyAPI     at Socket.Readable.push (_stream_readable.js:212:10)
  TuyAPI     at TCP.onStreamRead (internal/stream_base_commons.js:186:23) +4ms
events.js:292
      throw er; // Unhandled 'error' event
      ^

Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('json obj data unvalid')
    at TuyaDevice.emit (events.js:304:17)
    at Socket.<anonymous> (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:318:22)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.Readable.push (_stream_readable.js:212:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23)
Emitted 'error' event on TuyaDevice instance at:
    at Socket.<anonymous> (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:334:18)
    at Socket.emit (events.js:315:20)
    [... lines matching original stack trace ...]
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
  code: 'ERR_UNHANDLED_ERROR',
  context: 'json obj data unvalid'
}
DEBUG=* tuya-cli set --ip 192.168.2.Z --id XXXXX --key YYYYY --protocol-version 3.2 --dps 1 --set 1
  TuyAPI IP and ID are already both resolved. +0ms
  TuyAPI Connecting to 192.168.2.Z... +6ms
  TuyAPI Socket connected. +111ms
  TuyAPI GET Payload: +2ms
  TuyAPI {
  TuyAPI   gwId: 'XXXXX',
  TuyAPI   devId: 'XXXXX',
  TuyAPI   t: '1595491352',
  TuyAPI   dps: {},
  TuyAPI   uid: 'XXXXX'
  TuyAPI } +0ms
  TuyAPI SET Payload: +9ms
  TuyAPI {
  TuyAPI   devId: 'XXXXX',
  TuyAPI   gwId: 'XXXXX',
  TuyAPI   uid: '',
  TuyAPI   t: 1595491352,
  TuyAPI   dps: { '1': 1 }
  TuyAPI } +1ms
  TuyAPI Received data: 000055aa000000010000000a0000002c00000001341e53faf713cd68b0675c61c34f2a87a6efc804260729dec5b4d916506bdcf4c31a296e0000aa55 +22ms
  TuyAPI Parsed: +2ms
  TuyAPI {
  TuyAPI   payload: 'parse data error',
  TuyAPI   leftover: false,
  TuyAPI   commandByte: 10,
  TuyAPI   sequenceN: 1
  TuyAPI } +0ms
  TuyAPI Received data: 000055aa00000002000000070000002c00000001341e53faf713cd68b0675c61c34f2a87a6efc804260729dec5b4d916506bdcf42f0215500000aa55 +15ms
  TuyAPI Parsed: +0ms
  TuyAPI {
  TuyAPI   payload: 'parse data error',
  TuyAPI   leftover: false,
  TuyAPI   commandByte: 7,
  TuyAPI   sequenceN: 2
  TuyAPI } +0ms
  TuyAPI Pinging 192.168.2.36 +10s
  TuyAPI Received data: 000055aa00000000000000090000000c00000000b051ab030000aa55 +35ms
  TuyAPI Parsed: +1ms
  TuyAPI { payload: false, leftover: false, commandByte: 9, sequenceN: 0 } +0ms
  TuyAPI Pong from 192.168.2.Z +1ms
  TuyAPI Pinging 192.168.2.Z +10s
  TuyAPI Received data: 000055aa00000000000000090000000c00000000b051ab030000aa55 +51ms
  TuyAPI Parsed: +1ms
  TuyAPI { payload: false, leftover: false, commandByte: 9, sequenceN: 0 } +0ms
  TuyAPI Pong from 192.168.2.Z +1ms
  TuyAPI Pinging 192.168.2.Z +10s
  TuyAPI Received data: 000055aa00000000000000090000000c00000000b051ab030000aa55 +5ms
  TuyAPI Parsed: +1ms
  TuyAPI { payload: false, leftover: false, commandByte: 9, sequenceN: 0 } +0ms
  TuyAPI Pong from 192.168.2.Z +1ms
  TuyAPI Pinging 192.168.2.Z +10s
  TuyAPI Received data: 000055aa00000000000000090000000c00000000b051ab030000aa55 +97ms
  TuyAPI Parsed: +1ms
  TuyAPI { payload: false, leftover: false, commandByte: 9, sequenceN: 0 } +0ms
  TuyAPI Pong from 192.168.2.Z +0ms
  TuyAPI Pinging 192.168.2.Z +10s
  TuyAPI Received data: 000055aa00000000000000090000000c00000000b051ab030000aa55 +111ms
  TuyAPI Parsed: +1ms
  TuyAPI { payload: false, leftover: false, commandByte: 9, sequenceN: 0 } +0ms
  TuyAPI Pong from 192.168.2.Z +1ms
  TuyAPI Pinging 192.168.2.Z +10s
  TuyAPI Received data: 000055aa00000000000000090000000c00000000b051ab030000aa55 +29ms
  TuyAPI Parsed: +1ms
  TuyAPI { payload: false, leftover: false, commandByte: 9, sequenceN: 0 } +0ms
  TuyAPI Pong from 192.168.2.Z +0ms
^C

Example Get Command

DEBUG=* tuya-cli get --ip 192.168.2.X --id XXXXX --key YYYYY --protocol-version 3.3 --all
  TuyAPI IP and ID are already both resolved. +0ms
  TuyAPI Connecting to 192.168.2.Z... +6ms
  TuyAPI Socket connected. +72ms
  TuyAPI GET Payload: +1ms
  TuyAPI {
  TuyAPI   gwId: 'XXXXX',
  TuyAPI   devId: 'XXXXX',
  TuyAPI   t: '1595490890',
  TuyAPI   dps: {},
  TuyAPI   uid: 'XXXXX'
  TuyAPI } +0ms
  TuyAPI GET Payload: +12ms
  TuyAPI {
  TuyAPI   gwId: 'XXXXX',
  TuyAPI   devId: 'XXXXX',
  TuyAPI   t: '1595490890',
  TuyAPI   dps: {},
  TuyAPI   uid: 'XXXXX'
  TuyAPI } +0ms
  TuyAPI Received data: 000055aa000000010000000a0000002c000000011fd12f2145a2b4e48d0bc6f78454ef31ce04d93fc98d24d84e47a9045c13e0bd73b5e0ba0000aa55 +6ms
  TuyAPI Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('json obj data unvalid')
  TuyAPI     at TuyaDevice.emit (events.js:304:17)
  TuyAPI     at Socket.<anonymous> (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:318:22)
  TuyAPI     at Socket.emit (events.js:315:20)
  TuyAPI     at addChunk (_stream_readable.js:295:12)
  TuyAPI     at readableAddChunk (_stream_readable.js:271:9)
  TuyAPI     at Socket.Readable.push (_stream_readable.js:212:10)
  TuyAPI     at TCP.onStreamRead (internal/stream_base_commons.js:186:23) +4ms
events.js:292
      throw er; // Unhandled 'error' event
      ^

Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('json obj data unvalid')
    at TuyaDevice.emit (events.js:304:17)
    at Socket.<anonymous> (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:318:22)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.Readable.push (_stream_readable.js:212:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23)
Emitted 'error' event on TuyaDevice instance at:
    at Socket.<anonymous> (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:334:18)
    at Socket.emit (events.js:315:20)
    [... lines matching original stack trace ...]
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
  code: 'ERR_UNHANDLED_ERROR',
  context: 'json obj data unvalid'
}

t3h-n00b avatar Jul 23 '20 22:07 t3h-n00b

Does this happen every single time, or only sometimes?

codetheweb avatar Jul 25 '20 01:07 codetheweb

Yep, so far haven’t been successful with these devices (other than to get the ID/Key values)

t3h-n00b avatar Jul 25 '20 01:07 t3h-n00b

Did you try omitting the protocol version parameter / setting it to 3.1 (the default)?

Are you able to capture the network traffic between your device and app to see if the packets look similar to what TuyAPI sends?

codetheweb avatar Jul 27 '20 23:07 codetheweb

Yep, tried using no protocol version, and then iterating from 3.1-3.3.

I’ll try and capture some traffic over the next couple of days

t3h-n00b avatar Jul 31 '20 02:07 t3h-n00b

Alrighty, I've had a look at the wireshark data.

The responses received seem pretty accurate.

TuyAPI seems to be sending a SYN message to Port 6668 on the device, receive an ACK, then send an ACK.

It then seems to send (with protocol set to 3.3): 000055aa000000010000000a000000887dd4c8fc414aaaef33337a15ca02b6162d8854fee5583d05aff271bc5d1871bf0be2d365fe5623eaf7b0f83fcbafb848d5e9cae2a2a1a135c9ea60ff636ce0533d8b92947c046e26c7f63614790fa7a18a9c5920d82d37a9eca0c7a182a74feaab3a98c2cf2c10ac3d72d7021a64cfe630423d71bf69b0007acf53d0d569bf1629afc2fe0000aa55 which looks pretty similar to the data that it is receiving later.

For protocol set to 3.1: 000055aa000000010000000a000000837b2267774964223a2262666266363537373030636634663639376566766c77222c226465764964223a2262666266363537373030636634663639376566766c77222c2274223a2231353936363139393535222c22647073223a7b7d2c22756964223a2262666266363537373030636634663639376566766c77227d1dde88cb0000aa55 Next command it sends is: 000055aa000000040000000900000008387f5d2e0000aa55

Not sure how much help this is...

t3h-n00b avatar Aug 05 '20 09:08 t3h-n00b

Those are the packets that TuyAPI sends, correct? Could you also try recording the packets the official app sends to see how similar they are?

codetheweb avatar Aug 10 '20 23:08 codetheweb

Hi guys, I got same error with tuya plug socket. Here is the tcpdump from app. dump.zip

nug321 avatar Aug 19 '20 18:08 nug321

@nug321 have you retried getting the local key / relinking your device to confirm it's not an issue with that? The key changes every time you relink it / add it to the app.

codetheweb avatar Aug 23 '20 16:08 codetheweb

Yep, checked the keys twice.

nug321 avatar Aug 31 '20 07:08 nug321

@nug321 can you post / email me the local key for that dump you posted earlier so I can try to decode it?

codetheweb avatar Aug 31 '20 15:08 codetheweb

@nug321 I emailed back with a possible solution. Feel free to post here with the results.

codetheweb avatar Aug 31 '20 18:08 codetheweb

Any news regards to this I'm having the same error?

chrisca26 avatar Sep 24 '20 06:09 chrisca26

@chrisca26 @nug321 hasn't responded to my last email yet.

It looks like their uid parameter may be different then their id/devId parameter. Not sure if that helps, but I can help investigate further if you email me a packet capture (+ device ID and key) of the app controlling your device.

codetheweb avatar Sep 24 '20 14:09 codetheweb

@nug321 thank you for the additional information. I'm not really sure what's going on at this point; but more data would be helpful. @chrisca26 are you able to provide a packet capture?

codetheweb avatar Sep 27 '20 19:09 codetheweb

How would I go about to do a packet capture? Wireshark and filter on the IP?

chrisca26 avatar Oct 03 '20 13:10 chrisca26

Yep. 👍

codetheweb avatar Oct 03 '20 18:10 codetheweb

I seem to getting an error too. Not sure if the error is related:

` TuyAPI Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('json obj data unvalid') TuyAPI at TuyaDevice.emit (events.js:303:17) TuyAPI at Socket. (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:319:22) TuyAPI at Socket.emit (events.js:314:20) TuyAPI at addChunk (_stream_readable.js:298:12) TuyAPI at readableAddChunk (_stream_readable.js:273:9) TuyAPI at Socket.Readable.push (_stream_readable.js:214:10) TuyAPI at TCP.onStreamRead (internal/stream_base_commons.js:188:23) +12ms events.js:291 throw er; // Unhandled 'error' event ^

Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('json obj data unvalid') at TuyaDevice.emit (events.js:303:17) at Socket. (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:319:22) at Socket.emit (events.js:314:20) at addChunk (_stream_readable.js:298:12) at readableAddChunk (_stream_readable.js:273:9) at Socket.Readable.push (_stream_readable.js:214:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) Emitted 'error' event on TuyaDevice instance at: at Socket. (/usr/lib/node_modules/@tuyapi/cli/node_modules/tuyapi/index.js:335:18) at Socket.emit (events.js:314:20) [... lines matching original stack trace ...] at TCP.onStreamRead (internal/stream_base_commons.js:188:23) { code: 'ERR_UNHANDLED_ERROR', context: 'json obj data unvalid' }`

bb165source avatar Nov 26 '20 18:11 bb165source