tuyapi icon indicating copy to clipboard operation
tuyapi copied to clipboard

`dp-refresh` fire for all devices of the gateway instead of the only one concerned

Open Buom01 opened this issue 2 years ago • 1 comments

Hello,

Describe the bug Tuyapi's devices sharing a gateway emits dp-refresh events of all other devices of the gateway, like if the event come from the tuyapi's device itself.

To Reproduce [Ask if you need more details, I didn't make a separate repo]

  1. Connect to 2+ devices through a gateway with tuyapi (preferably same device type).
  2. Fire a dp-refresh on one of them, like clicking a button or anything
  3. dp-refresh is emitted from all devices by tuyapi

Solution dp-refresh provide anything like

{
  dps: { '2': 'single_click' },
  cid: '[...]',
  t: 1700543876
}

.

The cid is the uuid we got on the Query Device Details API page from Tuya. Should use it to only emits from the right device instead of the whole gateway.

Screenshots Capture d’écran du 2023-11-21

Desktop (please complete the following information):

  • OS: Linux Fedora
  • OS Version: Workstation 38
  • Node Version: v18.18.2

Additional context I'm currently making a small abstraction layer for my smart house, making an object for each kind of devices. According to my research, device's events from the same gateway seem to not being filtered, according to the source code ( https://github.com/codetheweb/tuyapi/blob/master/index.js#L827 ). I don't think it's intended.

Buom01 avatar Nov 21 '23 05:11 Buom01

As an abstraction layer see TuyaDAEMON. It uses a different approach: a big json object handles all devices, DP properties, and quirks. Adding a new device only requires an update of this object ('global.alldevices', a global singleton with set and get methods). Evens are filtered by ID AND CID, so no problems.

msillano avatar Nov 24 '23 18:11 msillano