zigpy / zha-device-handlers

ZHA device handlers bridge the functionality gap created when manufacturers deviate from the ZCL specification, handling deviations and exceptions by parsing custom messages to and from Zigbee devices.
Apache License 2.0
756 stars 695 forks source link

[BUG] smart plugs polling frequency too high #3385

Open Apfelstruhdl opened 1 month ago

Apfelstruhdl commented 1 month ago

Bug description

Hi,

I have a bigger ZHA network running with about 100 devices and multiple smart plugs that i hoped to be able to use as routers and track the power consumption around the house.

I fear, that the network traffic the zigbee network is almost at a maximum (reports of ~85% utilization occured multiple times). I already moved the wifi away from the zigbee channel. Besides the power report on the zigbee channel I find it hard with the standard tools to get a feeling for the traffic that is going on in the network and to distinguish actual traffic that the network generated from noise on the channel. Is there anyway to just monitor the message or data rate of the coordinator?

Back to the routers. They are 14x TS011F by _TZ3000_gjnozsaz 3x TS011F by _TZ3000_w0qqde0g

both are using the quirk Quirk: zhaquirks.tuya.ts011f_plug.Plug

So far I understood, that there are push messages by the devices and I think in this case it is cluster 0x0702 for which I can also read and set the respective parameters that influence the pushing of messages by the device: min_interval: 60 max_interval: 900 reportable_change: 10 tries: 3

this seems to be only energy (kWh delivered).

The cluster 0x0b04 seems to provide the values for voltage, current and power. There is no setting for the reporting (push) interval, so I guess that these values are collected by issuing pull request, correct?

How can I influence the frequency of these pull messages? I really would love to better understand and configure the traffic on the network. Or do I misunderstand sth?

Thanks a lot for your help!

Steps to reproduce

Check the polling interval of the above mentioned smart plugs and try to change the frequency.

Expected behavior

Option to alter the polling interval per device or globally.

A monitor that reports the overall traffic and traffic by device

Screenshots/Video

Screenshots/Video [Paste/upload your media here]

Device signature

Device signature ```json [Paste the device signature here] ```

Diagnostic information

Diagnostic information ```json [Paste the diagnostic information here] ```

Logs

Logs ```python [Paste the logs here] ```

Additional information

No response

Apfelstruhdl commented 2 days ago

I really think that this is an issue. Why is there no option to configure the polling interval. Can somebody point me to the source code, that controls the behavior? I tried going through the classes but it was not very intuitive where the actual polling is implemented.

I have a smart card, that sorts all zigbee devices based on the last seen timestamp. This list is the only easy way I found to get a feeling for the number of messages that are on the network. an indeed the smart plugs are updated in intervals of seconds and are thus very likely causing the overall network to get jammed.