unparagoned / njsTuya

Openhab interface for Tuya home automation devices sold under various names
27 stars 11 forks source link

Plug Compatibility Question - #28

Closed walmer-bolfet closed 5 months ago

walmer-bolfet commented 4 years ago

Greetings,

When I run ‘node node_modules/njstuya’ the returned devices are only my two Smart Power Strips. I also have four WiFi Smart Plugs WiFi Smart plugs with Energy Monitoring from Amazon:

https://www.amazon.com/gp/product/B07SGP1BCY/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

They work great with the Smart Life app and with IFTTT but they don’t appear as devices with the command above. They showed up as “ThinkTurn_#### on my router. And Smart Life shows them as running Firmware 1.4.1 (with no update available) whereas the Power Strips show firmware 1.0.4 (with no update available).

Any recommendations or help would be appreciated.

unparagoned commented 3 years ago

Can you try with the latest version

walmer-bolfet commented 3 years ago

Running 'node node_modules/njstuya’ does identify the previously missed switches (see below). I will continue to see whether I can command them later and update you.

{"id":"ebb3728730aad57411us9i","broadcast":{"ip":"10.0.1.80","port":6668,"id":"ebb3728730aad57411us9i","gwID":"ebb3728730aad57411us9i","version":""},"schema":"�q�*P\u001b!4_�����t�w�\b&'����˷�?���"}

{"id":"ebb508bf95ccbedbabjxrb","broadcast":{"ip":"10.0.1.81","port":6668,"id":"ebb508bf95ccbedbabjxrb","gwID":"ebb508bf95ccbedbabjxrb","version":""},"schema":"X�V��>q\u0001[�J�\b�.\u0011%rI�\bn\u0000�\u000b�\n�h:��"}

walmer-bolfet commented 3 years ago

This plug item does not execute commands.

When I run 'node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f ON’ get this response:

(node:15430) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/js-node/node_modules/njstuya/njstuya.js:330:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/js-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/js-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/js-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:15430) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:15430) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Thanks for you work on this capability.

Richard Paul

On Dec 8, 2020, at 11:20 AM, RB Paul rbpaul@me.com wrote:

Sorry - I was able to work the issue with git and install njsTuya https://github.com/unparagoned/njsTuya without sudo in my home directory with warnings (below).

Running 'node node_modules/njstuya’ does identify the previously missing switches (see below). I will continue to see whether I can command them later and update you.

npm WARN npm npm does not support Node.js v10.21.0 npm WARN npm You should probably upgrade to a newer version of node as we npm WARN npm can't make any promises that npm will work with this version. npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9. npm WARN npm You can find the latest version at https://nodejs.org/ https://nodejs.org/ npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 https://github.com/request/request/issues/3142 npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797 https://github.com/visionmedia/debug/issues/797) npm WARN saveError ENOENT: no such file or directory, open '/home/walmer/js-node/package.json' npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open '/home/walmer/js-node/package.json' npm WARN js-node No description npm WARN js-node No repository field. npm WARN js-node No README data npm WARN js-node No license field.

{"id":"ebb3728730aad57411us9i","broadcast":{"ip":"10.0.1.80","port":6668,"id":"ebb3728730aad57411us9i","gwID":"ebb3728730aad57411us9i","version":""},"schema":"�q�*P\u001b!4_�����t�w�\b&'����˷�?���"}

{"id":"ebb508bf95ccbedbabjxrb","broadcast":{"ip":"10.0.1.81","port":6668,"id":"ebb508bf95ccbedbabjxrb","gwID":"ebb508bf95ccbedbabjxrb","version":""},"schema":"X�V��>q\u0001[�J�\b�.\u0011%rI�\bn\u0000�\u000b�\n�h:��"}

On Dec 8, 2020, at 11:01 AM, RB Paul <rbpaul@me.com mailto:rbpaul@me.com> wrote:

I got chance to check it out with my new Debian machine. didn’t work - if you have some suggestions, please share.

When trying to install with 'sudo npm install unparagoned/njsTuya ’

debian returned:

npm WARN npm npm does not support Node.js v10.21.0 npm WARN npm You should probably upgrade to a newer version of node as we npm WARN npm can't make any promises that npm will work with this version. npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9. npm WARN npm You can find the latest version at https://nodejs.org/ https://nodejs.org/ npm ERR! code ENOGIT npm ERR! Error while executing: npm ERR! undefined ls-remote -h -t ssh://git@github.com/unparagoned/njsTuya.git ssh://git@github.com/unparagoned/njsTuya.git npm ERR! npm ERR! undefined npm ERR! No git binary found in $PATH npm ERR! npm ERR! Failed using git. npm ERR! Please check if you have git installed and in your PATH.

npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2020-12-08T16_56_03_609Z-debug.log

On Nov 9, 2020, at 11:52 AM, unparagoned <notifications@github.com mailto:notifications@github.com> wrote:

Can you try with the latest version

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/unparagoned/njsTuya/issues/28#issuecomment-724172151, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAYJZNBQSDKQUCXZWCDCBH3SPAT4XANCNFSM4J3CBT6A.

unparagoned commented 3 years ago

Can you make sure the app on the phone has been closed for a few hours and then run it in debug mode

DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f ON
DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f
walmer-bolfet commented 3 years ago

'DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f ON’ returns:

njstuya booting njstuya +0ms njstuya "{argName} value is: 10.0.1.80 +2ms njstuya "{argName} value is: ebb3728730aad57411us9i +0ms njstuya "{argName} value is: 45ba5d9ceaecc76f +0ms njstuya api {} or undefined +1ms TuyAPI Connecting to 10.0.1.80... +0ms TuyAPI Socket connected. +274ms njstuya Connected to device! +276ms TuyAPI GET Payload: +1ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607610863', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c00000001c071ca2a501b21345fabb2adbea874c677930826278bab918fcbb7fd3ffbe9c018dfa88a0000aa55 +25ms TuyAPI Parsed: +2ms TuyAPI { payload: 'parse data error', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya runCommand has started with data "parse data error" +29ms (node:30249) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/switches-node/node_modules/njstuya/njstuya.js:330:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/switches-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/switches-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/switches-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:30249) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:30249) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TuyAPI Disconnect +10s njstuya undefined +10s TuyAPI Socket closed: 10.0.1.80 +1ms njstuya Disconnected from device. +0ms

'DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f’ returns

njstuya booting njstuya +0ms njstuya "{argName} value is: 10.0.1.80 +2ms njstuya "{argName} value is: ebb3728730aad57411us9i +0ms njstuya "{argName} value is: 45ba5d9ceaecc76f +0ms njstuya api {} or undefined +1ms TuyAPI Connecting to 10.0.1.80... +0ms TuyAPI Socket connected. +4ms njstuya Connected to device! +6ms TuyAPI GET Payload: +0ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607610953', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c00000001c071ca2a501b21345fabb2adbea874c677930826278bab918fcbb7fd3ffbe9c018dfa88a0000aa55 +21ms TuyAPI Parsed: +2ms TuyAPI { payload: 'parse data error', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya runCommand has started with data "parse data error" +23ms (node:30313) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/switches-node/node_modules/njstuya/njstuya.js:330:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/switches-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/switches-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/switches-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:30313) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:30313) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TuyAPI Disconnect +10s njstuya undefined +10s TuyAPI Socket closed: 10.0.1.80 +1ms njstuya Disconnected from device. +0ms

Hope this helps

unparagoned commented 3 years ago

I've updated njstuya to use the latest version of tuyapi, which may help. Also make sure you have all apps and other cloud connections like alexa disabled for an hour or so and try local mode again.

But I think there may be some issues with the newer devices and local mode. I personally just use cloud mode for my newer devices.

Edit: You might need to specify version 3.3, see below.

unparagoned commented 3 years ago

Actually, try

DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3
DEBUG=* node njstuya.js
walmer-bolfet commented 3 years ago

Greetings,

I have 2 smart bars (10.0.1.66 & .67) that work well with njstuya and 2 of two smart plugs that don’t seem to work (10.0.1.80 & .81)

I have run the commands you provided and the return output is below. Thanks again, I don’t really have much use for these smart plugs, and I could send you one if you think it might be helpful to your purposes. Let me know.

*DEBUG= node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3** RETURNED:

njstuya booting njstuya +0ms njstuya "{argName} value is: 10.0.1.80 +2ms njstuya "{argName} value is: ebb3728730aad57411us9i +0ms njstuya "{argName} value is: 45ba5d9ceaecc76f +0ms njstuya "{argName} value is: 3.3 +0ms njstuya api {} or undefined +1ms TuyAPI Connecting to 10.0.1.80... +0ms TuyAPI Socket connected. +46ms njstuya Connected to device! +48ms TuyAPI GET Payload: +1ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607783590', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c0000000141059323d9bd1a6835fb96cc45f3b4aab11093b1c46bf8e9e3af55d17093ab98d7c7b90f0000aa55 +9ms TuyAPI Parsed: +1ms TuyAPI { payload: 'json obj data unvalid', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya runCommand has started with data "json obj data unvalid" +12ms TuyAPI SET Payload: +2ms TuyAPI { devId: 'ebb3728730aad57411us9i', TuyAPI gwId: 'ebb3728730aad57411us9i', TuyAPI uid: '', TuyAPI t: 1607783590, TuyAPI dps: { '1': null } } +0ms (node:3547) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/switches-node/node_modules/njstuya/njstuya.js:334:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/switches-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/switches-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/switches-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:3547) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:3547) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TuyAPI Received data: 000055aa00000000000000080000004b00000000332e330000000000000056000000016f32f3374a7cd3a8deb2e56740882c95e224b6ccdbed16b9250d22fd45a533b6663a2316ce89c584788a8c502ecdeb93a30288750000aa55 +19ms TuyAPI Parsed: +1ms TuyAPI { payload: { dps: { '1': true }, t: 1607783589 }, TuyAPI leftover: false, TuyAPI commandByte: 8, TuyAPI sequenceN: 0 } +0ms TuyAPI Received data: 000055aa00000002000000070000000c0000000018cfc5da0000aa55 +43ms TuyAPI Parsed: +1ms TuyAPI { payload: false, leftover: false, commandByte: 7, sequenceN: 2 } +0ms TuyAPI Got SET ack. +0ms TuyAPI Disconnect +10s njstuya undefined +10s TuyAPI Socket closed: 10.0.1.80 +1ms njstuya Disconnected from device. +1ms

*DEBUG= node njstuya.js** RETURNED:

njstuya booting njstuya +0ms njstuya api {} or undefined +3ms TuyAPI Finding missing IP or ID 00000000000000000000 +0ms TuyAPI Received UDP message. +100ms TuyAPI UDP data: +3ms TuyAPI { payload: TuyAPI { ip: '10.0.1.66', TuyAPI gwId: '03200121dc4f22237eeb', TuyAPI active: 2, TuyAPI ability: 0, TuyAPI mode: 0, TuyAPI encrypt: true, TuyAPI productKey: 'of0VDuFcWsBTfzWt', TuyAPI version: '3.1' }, TuyAPI leftover: false, TuyAPI commandByte: 0, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +1s TuyAPI UDP data: +0ms TuyAPI { payload: TuyAPI { ip: '10.0.1.67', TuyAPI gwId: '03200121dc4f22242ba7', TuyAPI active: 2, TuyAPI ability: 0, TuyAPI mode: 0, TuyAPI encrypt: true, TuyAPI productKey: 'of0VDuFcWsBTfzWt', TuyAPI version: '3.1' }, TuyAPI leftover: false, TuyAPI commandByte: 0, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +1s TuyAPI UDP data: +1ms TuyAPI { payload: TuyAPI { ip: '10.0.1.80', TuyAPI gwId: 'ebb3728730aad57411us9i', TuyAPI active: 2, TuyAPI ablilty: 0, TuyAPI encrypt: true, TuyAPI productKey: 'bm37x1lrv6v7lfja', TuyAPI version: '3.3' }, TuyAPI leftover: false, TuyAPI commandByte: 19, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +648ms TuyAPI UDP data: +1ms TuyAPI { payload: TuyAPI { ip: '10.0.1.66', TuyAPI gwId: '03200121dc4f22237eeb', TuyAPI active: 2, TuyAPI ability: 0, TuyAPI mode: 0, TuyAPI encrypt: true, TuyAPI productKey: 'of0VDuFcWsBTfzWt', TuyAPI version: '3.1' }, TuyAPI leftover: false, TuyAPI commandByte: 0, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +91ms TuyAPI UDP data: +0ms TuyAPI { payload: TuyAPI { ip: '10.0.1.81', TuyAPI gwId: 'ebb508bf95ccbedbabjxrb', TuyAPI active: 2, TuyAPI ablilty: 0, TuyAPI encrypt: true, TuyAPI productKey: 'bm37x1lrv6v7lfja', TuyAPI version: '3.3' }, TuyAPI leftover: false, TuyAPI commandByte: 19, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +1s TuyAPI UDP data: +0ms TuyAPI { payload: TuyAPI { ip: '10.0.1.67', TuyAPI gwId: '03200121dc4f22242ba7', TuyAPI active: 2, TuyAPI ability: 0, TuyAPI mode: 0, TuyAPI encrypt: true, TuyAPI productKey: 'of0VDuFcWsBTfzWt', TuyAPI version: '3.1' }, TuyAPI leftover: false, TuyAPI commandByte: 0, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +2s TuyAPI UDP data: +1ms TuyAPI { payload: TuyAPI { ip: '10.0.1.66', TuyAPI gwId: '03200121dc4f22237eeb', TuyAPI active: 2, TuyAPI ability: 0, TuyAPI mode: 0, TuyAPI encrypt: true, TuyAPI productKey: 'of0VDuFcWsBTfzWt', TuyAPI version: '3.1' }, TuyAPI leftover: false, TuyAPI commandByte: 0, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +1s TuyAPI UDP data: +1ms TuyAPI { payload: TuyAPI { ip: '10.0.1.67', TuyAPI gwId: '03200121dc4f22242ba7', TuyAPI active: 2, TuyAPI ability: 0, TuyAPI mode: 0, TuyAPI encrypt: true, TuyAPI productKey: 'of0VDuFcWsBTfzWt', TuyAPI version: '3.1' }, TuyAPI leftover: false, TuyAPI commandByte: 0, TuyAPI sequenceN: 0 } +0ms TuyAPI Received UDP message. +28ms TuyAPI UDP data: +0ms TuyAPI { payload: TuyAPI { ip: '10.0.1.80', TuyAPI gwId: 'ebb3728730aad57411us9i', TuyAPI active: 2, TuyAPI ablilty: 0, TuyAPI encrypt: true, TuyAPI productKey: 'bm37x1lrv6v7lfja', TuyAPI version: '3.3' }, TuyAPI leftover: false, TuyAPI commandByte: 19, TuyAPI sequenceN: 0 } +0ms njstuya devices [{"id":"03200121dc4f22237eeb","ip":"10.0.1.66"},{"id":"03200121dc4f22242ba7","ip":"10.0.1.67"},{"id":"ebb3728730aad57411us9i","ip":"10.0.1.80"},{"id":"ebb508bf95ccbedbabjxrb","ip":"10.0.1.81"}] +8s njstuya [ { id: '03200121dc4f22237eeb', ip: '10.0.1.66' }, njstuya { id: '03200121dc4f22242ba7', ip: '10.0.1.67' }, njstuya { id: 'ebb3728730aad57411us9i', ip: '10.0.1.80' }, njstuya { id: 'ebb508bf95ccbedbabjxrb', ip: '10.0.1.81' } ] +0ms { "devices": [ TuyAPI Connecting to 10.0.1.66... +565ms TuyAPI Socket connected. +84ms njstuya Connected to device! +87ms TuyAPI GET Payload: +1ms TuyAPI { gwId: '03200121dc4f22237eeb', TuyAPI devId: '03200121dc4f22237eeb', TuyAPI t: '1607783246', TuyAPI dps: {}, TuyAPI uid: '03200121dc4f22237eeb' } +0ms TuyAPI Received data: 000055aa000000010000000a00000067000000007b226465764964223a223033323030313231646334663232323337656562222c22647073223a7b2231223a747275652c2232223a747275652c2233223a747275652c2234223a747275652c2235223a747275652c2236223a307d7d05c477ed0000aa55 +7ms TuyAPI Parsed: +1ms TuyAPI { payload: TuyAPI { devId: '03200121dc4f22237eeb', TuyAPI dps: TuyAPI { '1': true, '2': true, '3': true, '4': true, '5': true, '6': 0 } }, TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya 03200121dc4f22237eeb: {"devId":"03200121dc4f22237eeb","dps":{"1":true,"2":true,"3":true,"4":true,"5":true,"6":0}} +10ms TuyAPI Disconnect +1ms {"id":"03200121dc4f22237eeb","broadcast":{"ip":"10.0.1.66","port":6668,"id":"03200121dc4f22237eeb","gwID":"03200121dc4f22237eeb","version":""},"schema":{"devId":"03200121dc4f22237eeb","dps":{"1":true,"2":true,"3":true,"4":true,"5":true,"6":0}}} njstuya devId: "03200121dc4f22237eeb" +1ms njstuya dps: {"1":true,"2":true,"3":true,"4":true,"5":true,"6":0} +0ms TuyAPI Connecting to 10.0.1.67... +1ms TuyAPI Socket closed: 10.0.1.66 +1ms njstuya Disconnected from device. +1ms TuyAPI Socket connected. +2ms njstuya Connected to device! +2ms TuyAPI GET Payload: +0ms TuyAPI { gwId: '03200121dc4f22242ba7', TuyAPI devId: '03200121dc4f22242ba7', TuyAPI t: '1607783246', TuyAPI dps: {}, TuyAPI uid: '03200121dc4f22242ba7' } +0ms TuyAPI Received data: 000055aa000000010000000a00000068000000007b226465764964223a223033323030313231646334663232323432626137222c22647073223a7b2231223a66616c73652c2232223a747275652c2233223a747275652c2234223a747275652c2235223a747275652c2236223a307d7dd72931750000aa55 +5ms TuyAPI Parsed: +1ms TuyAPI { payload: TuyAPI { devId: '03200121dc4f22242ba7', TuyAPI dps: TuyAPI { '1': false, '2': true, '3': true, '4': true, '5': true, '6': 0 } }, TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +1ms njstuya 03200121dc4f22242ba7: {"devId":"03200121dc4f22242ba7","dps":{"1":false,"2":true,"3":true,"4":true,"5":true,"6":0}} +7ms TuyAPI Disconnect +0ms {"id":"03200121dc4f22242ba7","broadcast":{"ip":"10.0.1.67","port":6668,"id":"03200121dc4f22242ba7","gwID":"03200121dc4f22242ba7","version":""},"schema":{"devId":"03200121dc4f22242ba7","dps":{"1":false,"2":true,"3":true,"4":true,"5":true,"6":0}}} njstuya devId: "03200121dc4f22242ba7" +0ms njstuya dps: {"1":false,"2":true,"3":true,"4":true,"5":true,"6":0} +0ms TuyAPI Connecting to 10.0.1.80... +1ms TuyAPI Socket closed: 10.0.1.67 +0ms njstuya Disconnected from device. +1ms TuyAPI Socket connected. +2ms njstuya Connected to device! +2ms TuyAPI GET Payload: +0ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607783246', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c00000001c071ca2a501b21345fabb2adbea874c677930826278bab918fcbb7fd3ffbe9c018dfa88a0000aa55 +17ms TuyAPI Parsed: +0ms TuyAPI { payload: '�q�P\u001b!4_�����t�w�\b&\'����˷�?���', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya ebb3728730aad57411us9i: "�q�P\u001b!4�����t�w�\b&'����˷�?���" +18ms TuyAPI Disconnect +1ms {"id":"ebb3728730aad57411us9i","broadcast":{"ip":"10.0.1.80","port":6668,"id":"ebb3728730aad57411us9i","gwID":"ebb3728730aad57411us9i","version":""},"schema":"�q�*P\u001b!4�����t�w�\b&'����˷�?���"} njstuya 0: "�" +0ms njstuya 1: "q" +0ms njstuya 2: "�" +0ms njstuya 3: "" +0ms njstuya 4: "P" +0ms njstuya 5: "\u001b" +0ms njstuya 6: "!" +0ms njstuya 7: "4" +0ms njstuya 8: "_" +0ms njstuya 9: "�" +0ms njstuya 10: "�" +0ms njstuya 11: "�" +0ms njstuya 12: "�" +0ms njstuya 13: "�" +0ms njstuya 14: "t" +0ms njstuya 15: "�" +0ms njstuya 16: "w" +0ms njstuya 17: "�" +0ms njstuya 18: "\b" +0ms njstuya 19: "&" +0ms njstuya 20: "'" +0ms njstuya 21: "�" +0ms njstuya 22: "�" +1ms njstuya 23: "�" +0ms njstuya 24: "�" +0ms njstuya 25: "˷" +0ms njstuya 26: "�" +0ms njstuya 27: "?" +0ms njstuya 28: "�" +0ms njstuya 29: "�" +0ms njstuya 30: "�" +0ms TuyAPI Connecting to 10.0.1.81... +1ms TuyAPI Socket closed: 10.0.1.80 +0ms njstuya Disconnected from device. +0ms TuyAPI Socket connected. +3ms njstuya Connected to device! +3ms TuyAPI GET Payload: +0ms TuyAPI { gwId: 'ebb508bf95ccbedbabjxrb', TuyAPI devId: 'ebb508bf95ccbedbabjxrb', TuyAPI t: '1607783246', TuyAPI dps: {}, TuyAPI uid: 'ebb508bf95ccbedbabjxrb' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c0000000158b256afb23e71015bde4aef08862e11257249f9086e00b70b8d0af1683ab8ec4e9cc4690000aa55 +18ms TuyAPI Parsed: +1ms TuyAPI { payload: 'X�V��>q\u0001[�J�\b�.\u0011%rI�\bn\u0000�\u000b�\n�h:��', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya ebb508bf95ccbedbabjxrb: "X�V��>q\u0001[�J�\b�.\u0011%rI�\bn\u0000�\u000b�\n�h:��" +19ms TuyAPI Disconnect +1ms {"id":"ebb508bf95ccbedbabjxrb","broadcast":{"ip":"10.0.1.81","port":6668,"id":"ebb508bf95ccbedbabjxrb","gwID":"ebb508bf95ccbedbabjxrb","version":""},"schema":"X�V��>q\u0001[�J�\b�.\u0011%rI�\bn\u0000�\u000b�\n�h:��"} njstuya 0: "X" +1ms njstuya 1: "�" +0ms njstuya 2: "V" +0ms njstuya 3: "�" +0ms njstuya 4: "�" +0ms njstuya 5: ">" +1ms njstuya 6: "q" +0ms njstuya 7: "\u0001" +0ms njstuya 8: "[" +0ms njstuya 9: "�" +0ms njstuya 10: "J" +0ms njstuya 11: "�" +0ms njstuya 12: "\b" +0ms njstuya 13: "�" +0ms njstuya 14: "." +0ms njstuya 15: "\u0011" +0ms njstuya 16: "%" +0ms njstuya 17: "r" +1ms njstuya 18: "I" +0ms njstuya 19: "�" +0ms njstuya 20: "\b" +0ms njstuya 21: "n" +0ms njstuya 22: "\u0000" +0ms njstuya 23: "�" +0ms njstuya 24: "\u000b" +0ms njstuya 25: "�" +0ms njstuya 26: "\n" +0ms njstuya 27: "�" +0ms njstuya 28: "h" +0ms njstuya 29: ":" +0ms njstuya 30: "�" +1ms njstuya 31: "�" +0ms ] } njstuya Updated Devices [{"id":"03200121dc4f22237eeb","ip":"10.0.1.66"},{"id":"03200121dc4f22242ba7","ip":"10.0.1.67"},{"id":"ebb3728730aad57411us9i","ip":"10.0.1.80"},{"id":"ebb508bf95ccbedbabjxrb","ip":"10.0.1.81"}] +0ms njstuya All devices [{"id":"03200121dc4f22237eeb","broadcast":{"ip":"10.0.1.66","port":6668,"id":"03200121dc4f22237eeb","gwID":"03200121dc4f22237eeb","version":""},"schema":{"devId":"03200121dc4f22237eeb","dps":{"1":true,"2":true,"3":true,"4":true,"5":true,"6":0}}},{"id":"03200121dc4f22242ba7","broadcast":{"ip":"10.0.1.67","port":6668,"id":"03200121dc4f22242ba7","gwID":"03200121dc4f22242ba7","version":""},"schema":{"devId":"03200121dc4f22242ba7","dps":{"1":false,"2":true,"3":true,"4":true,"5":true,"6":0}}},{"id":"ebb3728730aad57411us9i","broadcast":{"ip":"10.0.1.80","port":6668,"id":"ebb3728730aad57411us9i","gwID":"ebb3728730aad57411us9i","version":""},"schema":"�q�P\u001b!4_�����t�w�\b&'����˷�?���"},{"id":"ebb508bf95ccbedbabjxrb","broadcast":{"ip":"10.0.1.81","port":6668,"id":"ebb508bf95ccbedbabjxrb","gwID":"ebb508bf95ccbedbabjxrb","version":""},"schema":"X�V��>q\u0001[�J�\b�.\u0011%rI�\bn\u0000�\u000b�\n�h:��"}] +1ms TuyAPI Socket closed: 10.0.1.81 +4ms njstuya Disconnected from device. +0ms TuyAPI Disconnect +2s njstuya Timeout +5s TuyAPI Disconnect +3s njstuya Timeout +94ms TuyAPI Disconnect +95ms njstuya Timeout +11ms TuyAPI Disconnect +10ms njstuya Timeout +20ms TuyAPI Disconnect +20ms

unparagoned commented 3 years ago

It seems like -v 3.3 kind of works, see if you can turn it on or off. njsTuya may just need to work on dealing with the responses better.

DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3 ON

walmer-bolfet commented 3 years ago

Command had no affect on the plugs setting -

DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3 ON RETURNS:

njstuya booting njstuya +0ms njstuya "{argName} value is: 10.0.1.80 +2ms njstuya "{argName} value is: ebb3728730aad57411us9i +0ms njstuya "{argName} value is: 45ba5d9ceaecc76f +0ms njstuya "{argName} value is: 3.3 +0ms njstuya api {} or undefined +1ms TuyAPI Connecting to 10.0.1.80... +0ms TuyAPI Socket connected. +151ms njstuya Connected to device! +154ms TuyAPI GET Payload: +1ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607786281', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c0000000141059323d9bd1a6835fb96cc45f3b4aab11093b1c46bf8e9e3af55d17093ab98d7c7b90f0000aa55 +13ms TuyAPI Parsed: +1ms TuyAPI { payload: 'json obj data unvalid', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya runCommand has started with data "json obj data unvalid" +15ms TuyAPI SET Payload: +1ms TuyAPI { devId: 'ebb3728730aad57411us9i', TuyAPI gwId: 'ebb3728730aad57411us9i', TuyAPI uid: '', TuyAPI t: 1607786281, TuyAPI dps: { '1': null } } +0ms (node:6354) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/switches-node/node_modules/njstuya/njstuya.js:334:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/switches-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/switches-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/switches-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:6354) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:6354) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TuyAPI Received data: 000055aa00000000000000080000004b00000000332e33000000000000005f000000016f32f3374a7cd3a8deb2e56740882c95152db001682884bbf5ac90f58b346260663a2316ce89c584788a8c502ecdeb93014aa3810000aa55 +9ms TuyAPI Parsed: +0ms TuyAPI { payload: { dps: { '1': true }, t: 1607786280 }, TuyAPI leftover: false, TuyAPI commandByte: 8, TuyAPI sequenceN: 0 } +0ms TuyAPI Received data: 000055aa00000002000000070000000c0000000018cfc5da0000aa55 +45ms TuyAPI Parsed: +0ms TuyAPI { payload: false, leftover: false, commandByte: 7, sequenceN: 2 } +0ms TuyAPI Got SET ack. +1ms TuyAPI Disconnect +10s njstuya undefined +10s TuyAPI Socket closed: 10.0.1.80 +1ms njstuya Disconnected from device. +0ms

unparagoned commented 3 years ago

It might be useful to see the content of DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3 OFF

You could also try turning it on using a different dps, try dps 2-6.

 DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3  -set '{ "dps": 2, "set": true }'

Alternatively, give https://github.com/TuyaAPI/cli a try, if you can get it working there then there might be something I can do.

walmer-bolfet commented 3 years ago

Greetings from Alabama.

Let me thank you for addressing this issue I found in these particular plugs. I also want to assure you that I have no expectation there is anything more you might need do for me. I will be pleased to try the suggestions you forward and will share the results —but only to return the benefit (it is small compared to the benefit I have enjoyed using your work).

I do not expect to deploy any fix you may devise. I am resolved to move away from this plug technology toward something more suited to an old man in Alabama; meaning it will be a while before I muster the time and attention to try the tuyaAPI-CLI alternative.

DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3 OFF RETURNED:

njstuya booting njstuya +0ms njstuya "{argName} value is: 10.0.1.80 +2ms njstuya "{argName} value is: ebb3728730aad57411us9i +0ms njstuya "{argName} value is: 45ba5d9ceaecc76f +0ms njstuya "{argName} value is: 3.3 +0ms njstuya api {} or undefined +1ms TuyAPI Connecting to 10.0.1.80... +0ms TuyAPI Socket connected. +223ms njstuya Connected to device! +226ms TuyAPI GET Payload: +2ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607978789', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c0000000141059323d9bd1a6835fb96cc45f3b4aab11093b1c46bf8e9e3af55d17093ab98d7c7b90f0000aa55 +14ms TuyAPI Parsed: +1ms TuyAPI { payload: 'json obj data unvalid', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya runCommand has started with data "json obj data unvalid" +17ms TuyAPI SET Payload: +2ms TuyAPI { devId: 'ebb3728730aad57411us9i', TuyAPI gwId: 'ebb3728730aad57411us9i', TuyAPI uid: '', TuyAPI t: 1607978788, TuyAPI dps: { '1': null } } +0ms (node:18932) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/switches-node/node_modules/njstuya/njstuya.js:334:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/switches-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/switches-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/switches-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:18932) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:18932) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TuyAPI Received data: 000055aa00000000000000080000004b00000000332e330000000000000088000000018dbc6821150666186cfbc2a58ab9f0a1e82bf2ca7a9456fe9660c9697e7ed3c4a806a38c3dac7ed3cf90478e24c518fb304c07310000aa55 +30ms TuyAPI Parsed: +1ms TuyAPI { payload: { dps: { '1': false }, t: 1607978788 }, TuyAPI leftover: false, TuyAPI commandByte: 8, TuyAPI sequenceN: 0 } +0ms TuyAPI Received data: 000055aa00000002000000070000000c0000000018cfc5da0000aa55 +60ms TuyAPI Parsed: +0ms TuyAPI { payload: false, leftover: false, commandByte: 7, sequenceN: 2 } +0ms TuyAPI Got SET ack. +0ms TuyAPI Disconnect +10s njstuya undefined +10s TuyAPI Socket closed: 10.0.1.80 +2ms njstuya Disconnected from device. +1ms

DEBUG=* node njstuya.js -ip 10.0.1.80 -id ebb3728730aad57411us9i -key 45ba5d9ceaecc76f -v 3.3 -set '{ "dps": 2, "set": true }' RETURNED:

njstuya booting njstuya +0ms njstuya "{argName} value is: 10.0.1.80 +2ms njstuya "{argName} value is: ebb3728730aad57411us9i +0ms njstuya "{argName} value is: 45ba5d9ceaecc76f +0ms njstuya "{argName} value is: 3.3 +0ms njstuya "{argName} value is: { "dps": 2, "set": true } +0ms njstuya api {} or undefined +1ms TuyAPI Connecting to 10.0.1.80... +0ms TuyAPI Socket connected. +29ms njstuya Connected to device! +32ms TuyAPI GET Payload: +1ms TuyAPI { gwId: 'ebb3728730aad57411us9i', TuyAPI devId: 'ebb3728730aad57411us9i', TuyAPI t: '1607978962', TuyAPI dps: {}, TuyAPI uid: 'ebb3728730aad57411us9i' } +0ms TuyAPI Received data: 000055aa000000010000000a0000002c0000000141059323d9bd1a6835fb96cc45f3b4aab11093b1c46bf8e9e3af55d17093ab98d7c7b90f0000aa55 +10ms TuyAPI Parsed: +1ms TuyAPI { payload: 'json obj data unvalid', TuyAPI leftover: false, TuyAPI commandByte: 10, TuyAPI sequenceN: 1 } +0ms njstuya runCommand has started with data "json obj data unvalid" +11ms TuyAPI SET Payload: +1ms TuyAPI { devId: 'ebb3728730aad57411us9i', TuyAPI gwId: 'ebb3728730aad57411us9i', TuyAPI uid: '', TuyAPI t: 1607978962, TuyAPI dps: { '1': null } } +0ms (node:19067) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined at TuyaDevice.runCommand (/home/walmer/switches-node/node_modules/njstuya/njstuya.js:334:33) at TuyaDevice.emit (events.js:198:13) at TuyaDevice._packetHandler (/home/walmer/switches-node/node_modules/tuyapi/index.js:492:10) at packets.forEach.packet (/home/walmer/switches-node/node_modules/tuyapi/index.js:385:43) at Array.forEach () at Socket.client.on.data (/home/walmer/switches-node/node_modules/tuyapi/index.js:381:19) at Socket.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at Socket.Readable.push (_stream_readable.js:224:10) (node:19067) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:19067) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TuyAPI Received data: 000055aa00000000000000080000004b00000000332e33000000000000008c000000016f32f3374a7cd3a8deb2e56740882c95107620866d87445b983e2cc79860d217663a2316ce89c584788a8c502ecdeb933e357aa90000aa55 +9ms TuyAPI Parsed: +0ms TuyAPI { payload: { dps: { '1': true }, t: 1607978962 }, TuyAPI leftover: false, TuyAPI commandByte: 8, TuyAPI sequenceN: 0 } +0ms TuyAPI Received data: 000055aa00000002000000070000000c0000000018cfc5da0000aa55 +42ms TuyAPI Parsed: +0ms TuyAPI { payload: false, leftover: false, commandByte: 7, sequenceN: 2 } +0ms TuyAPI Got SET ack. +0ms TuyAPI Disconnect +10s njstuya undefined +10s TuyAPI Socket closed: 10.0.1.80 +1ms njstuya Disconnected from device. +1ms

unparagoned commented 3 years ago

Sorry, it's a bit too difficult to debug it like this. I'd suggest giving cloud mode a try.