question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

SP600 is flooding the network with messages

See original GitHub issue

This is a small sample of the debug log from my network with a single SP600.

zigbee2mqtt:debug 2020-01-14 00:47:52: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:52: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:52: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"instantaneousDemand":1,"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:52: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0.1,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:53: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:53: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0.1,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:54: Received MQTT message on 'zigbee2mqtt/bridge/config/devices' with data '1578962874587'
zigbee2mqtt:info  2020-01-14 00:47:54: MQTT publish: topic 'zigbee2mqtt/bridge/log' //removed
zigbee2mqtt:debug 2020-01-14 00:47:54: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"instantaneousDemand":0,"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:54: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":28,"power":0,"energy":0.6636000000000001}'
zigbee2mqtt:info  2020-01-14 00:47:55: MQTT publish: topic 'zigbee2mqtt/bridge/config', payload '{"version":"1.8.0","commit":"da4d26a","coordinator":{"type":"zStack12","meta":{"transportrev":2,"product":0,"majorrel":2,"minorrel":6,"maintrel":3,"revision":20190608}},"log_level":"debug","permit_join":false}'
zigbee2mqtt:debug 2020-01-14 00:47:55: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:55: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":28,"power":0,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:56: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"instantaneousDemand":1,"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:56: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0.1,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:57: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"instantaneousDemand":0,"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:57: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:58: Received MQTT message on 'zigbee2mqtt/bridge/config/devices' with data '1578962878589'
zigbee2mqtt:info  2020-01-14 00:47:58: MQTT publish: topic 'zigbee2mqtt/bridge/log',  //removed
zigbee2mqtt:debug 2020-01-14 00:47:58: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:58: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0,"energy":0.6636000000000001}'
zigbee2mqtt:debug 2020-01-14 00:47:59: Received Zigbee message from 'SmartPlug6', type 'attributeReport', cluster 'seMetering', data '{"currentSummDelivered":[0,6636]}' from endpoint 9 with groupID 0
zigbee2mqtt:info  2020-01-14 00:47:59: MQTT publish: topic 'zigbee2mqtt/SmartPlug6', payload '{"state":"OFF","linkquality":26,"power":0,"energy":0.6636000000000001}'

As you can see, that single device is sending 2 to 3 messages per second, which sounds quite a lot to me!

I doubt that if instead of just one I had 2 or 3, the network would not be able to cope with them!

There’s nothing attached to the smart plug and it is currently off, yet I do see the power value on the received messages oscillating between 0 and 1, which given the multiplier of 10000 it then translates to a real power value between 0.0W and 0.1W (so not very important)

Any idea why we see these oscillations?

There also seems to be a javascript math rounding error in mqtt message energy attribute, so I’ve created PR #905 to fix that.

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:19 (19 by maintainers)

github_iconTop GitHub Comments

1reaction
pedrolamascommented, Apr 15, 2020

Amazing work @lwfitzgerald, I’ve now tested your changes and I can confirm that my SP600 stopped flooding the network! 😁

1reaction
lwfitzgeraldcommented, Apr 14, 2020

I had some time to look at this last night and I’ve worked out the issue is.

I’ve raised PR #1157 which includes an explanation of the issue and a fix.

After breaking out the sniffer, I noticed that the currentSummDelivered reports were being sent even though the value was not changing:

image

I then had a look at the configureReporting message sent when manually triggering configuration of the device:

image

Here I noticed that the reportableChange value was incorrect (0 instead of the expected 1).

currentSummDelivered is a uint48 value and as such, when reporting is being configured, the reportableChange needs to be of the same type. BuffaloZcl.writeUInt48 expects to be passed a 2 element array of numbers, the first representing the 2 most significant bytes and the second the 4 least significant bytes. This means the default payload had an incorrect value of 1, which should instead be [0, 1].

Read more comments on GitHub >

github_iconTop Results From Across the Web

Unicast Flooding in Switched Campus Networks - Cisco
This document discusses possible causes and implications of unicast packet flooding in switched networks.
Read more >
What is network flooding and how does it work? - TechTarget
In a computer network, flooding occurs when a router uses a nonadaptive routing algorithm to send an incoming packet to every outgoing link...
Read more >
zigbee2mqtt 1.13.0 on Node.js NPM - NewReleases.io
... in all messages; #3308 Fix position out-of-sync when Blaupunkt SCM-S1 is controlled via remote; #903 SP600 is flooding the network with messages...
Read more >
Flooding (computer networking) - Wikipedia
Flooding is used in computer networks routing algorithm in which every incoming packet is sent through every outgoing link except the one it...
Read more >
Corrida Sanding Sheet SP-600 Grit P600 PK100 : SupplyVan.com ...
Buy Original Corrida Sanding Sheet SP-600 Grit P600 PK100 from SupplyVan.com. Also available other Sandpaper Sheets and Fabricating and Machining products ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found