codetheweb / tuyapi

🌧 An easy-to-use API for devices that use Tuya's cloud services. Documentation: https://codetheweb.github.io/tuyapi.
MIT License
2.04k stars 332 forks source link

get() timeout error after the result was successfully retrieved #617

Closed Apollon77 closed 1 year ago

Apollon77 commented 1 year ago

Discussed in https://github.com/codetheweb/tuyapi/discussions/613

Originally posted by **kardoka** November 21, 2022 Greetings, I am getting a timeout error for the `get()` command after I successfully process the result of it. What could be the issue here? Would it be possible to handle this error? The error message (note that I am hiding the device ids and full path to working directory): ``` node:internal/errors:478 ErrorCaptureStackTrace(err); ^ Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('Timeout waiting for status response from device id: hidden) at new NodeError (node:internal/errors:387:5) at TuyaDevice.emit (node:events:502:17) at ./node_modules/tuyapi/index.js:411:12 at Timeout._onTimeout (./node_modules/p-timeout/index.js:25:13) at listOnTimeout (node:internal/timers:559:17) at processTimers (node:internal/timers:502:7) { code: 'ERR_UNHANDLED_ERROR', context: 'Timeout waiting for status response from device id: hidden } ``` The code itself: ``` const TuyAPI = require('tuyapi'); require('dotenv').config(); const device = new TuyAPI({ id: process.env.GATEWAY_DEVICE_ID, key: process.env.LOCAL_KEY, version: 3.3, issueRefreshOnConnect: true, }); (async () => { await device.find(); await device.connect(); let status = await device.get({ cid: process.env.CHILD_ID, dps: 1 }); console.log(`Current status: ${status}.`); device.disconnect(); })(); ``` EDIT: I am able to catch it using: ``` process.on('uncaughtException', error => { console.log('Caught it!'); }) ``` But is there some more elegant way to catch it or to avoid this exception altogether?
Apollon77 commented 1 year ago

@kardoka basically it is an issue and no discussion, so I created an issue

Please install tuyapi from my Fork (https://github.com/Apollon77/tuyapi) and try if it now works that you get the get response and so not get the exception. Please comment in the PR to tstate if it fixes your issue

kardoka commented 1 year ago

Hi, thanks for creating the fork! Sadly I cannot test it because my Tuya Cloud trial has just expired.. I'll test it once I'll sort that out.

Apollon77 commented 1 year ago

@kardoka any chance? I would like to get that Draft PR into a real one before I forget that topic