`dp-refresh` fire for all devices of the gateway instead of the only one concerned
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]
- Connect to 2+ devices through a gateway with
tuyapi(preferably same device type). - Fire a
dp-refreshon one of them, like clicking a button or anything dp-refreshis emitted from all devices bytuyapi
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
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.
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.