Skip to content

Changes in other clusters, after change in OnOff.onOff, are ignored for 2 seconds #140

@Rodrigodd

Description

@Rodrigodd

Describe the bug

I have a device with genOnOff and seMetering clusters. When I turn it on or off, the instantaneousDemand changes immediately after, and may fluctuate a little. But the matterbridge is skipping those power changes, it show on the logs as "Skipping (no update) MQTT message".

What appears to be happening is that the Matterbridge have a 2s debounce for the "state" change, but it is also affecting the "power" changes, that happens in the same payload.

To Reproduce

I am working with a custom Zigbee device, so I cannot offer a proper reproduction, but my steps are as follow:

  1. Connect the Matterbridge to a matter controller, and the Zigbee device in the zigbee2mqtt.
  2. Send a OnOff.on or OnOff.off command to the bridged device.
  3. The bridge device will report a attribute change in the attribute OnOff.onOff, but does not report a change in the ElectricalPowerMeasurement.measureValue.
  4. From the logs below we can see that the updates in power are being reported by zigbee2mqtt but are being skipped by the Matterbridge.

Turn off

Zigbee2Mqtt logs:

[12/2/2025, 10:49:41 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:49:41+00:00","linkquality":0,"power":9.65,"state":"ON"}'
[12/2/2025, 10:49:52 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:49:52+00:00","linkquality":0,"power":9.65,"state":"OFF"}'
[12/2/2025, 10:49:52 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:49:52+00:00","linkquality":0,"power":0,"state":"OFF"}'

Matterbridge logs:

info[13:49:52.162][ProtocolService]Invoke Matterbridge.Matterbridge.0x000d6f00145d311a.onOff.off online#cc86e96@cf83dd68320f2fb7 (no payload)
info[13:49:52.163][0x000d6f00145d311a]Switching device off (endpoint 0x000d6f00145d311a.7)
debug[13:49:52.165][0x000d6f00145d311a]Command off called for 0x000d6f00145d311a endpoint: 0x000d6f00145d311a:7
debug[13:49:52.165][0x000d6f00145d311a]MatterbridgeOnOffServer: off called
debug[13:49:52.179][Matterbridge]Bridged endpoint 0x000d6f00145d311a:7 attribute OnOff.onOff changed to false
debug[13:49:52.180][Frontend]Sending an attribute update message to all connected clients
debug[13:49:52.180][Frontend]Sending a broadcast message: { id: 0, src: 'Matterbridge', dst: 'Frontend', method: 'state_update', success: true, response: { plugin: 'matterbridge-zigbee2mqtt', serialNumber: '0x000d6f00145d311a', uniqueId: '2f9f511be5fe6d27479d75a450a4468b', number: 7, id: '0x000d6f00145d311a', cluster: 'OnOff', attribute: 'onOff', value: false } }
debug[13:49:52.266][0x000d6f00145d311a]PublishCommand off called for 0x000d6f00145d311a payload: { state: 'OFF' }
info[13:49:52.267][Matterbridge zigbee2mqtt plugin]MQTT publish topic: zigbee2mqtt/0x000d6f00145d311a/set payload: {"state":"OFF"}
debug[13:49:52.268][Zigbee2MQTT]Publishing [0] topic: zigbee2mqtt/0x000d6f00145d311a/set message: {"state":"OFF"}
debug[13:49:52.269][0x000d6f00145d311a]No update for 2 seconds to allow the device 0x000d6f00145d311a to update its state
debug[13:49:52.273][Zigbee2MQTT]Publish [1] success on topic: zigbee2mqtt/0x000d6f00145d311a/set message: {"state":"OFF"}
debug[13:49:52.420][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:49:52.421][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:49:52.422][0x000d6f00145d311a]Skipping not changed MQTT message for accessory 0x000d6f00145d311a
debug[13:49:52.423][0x000d6f00145d311a]Skipping not changed MQTT message for accessory 0x000d6f00145d311a
debug[13:49:54.271][0x000d6f00145d311a]No update is now reset for the device 0x000d6f00145d311a

Turn on:

Zigbee2Mqtt:

[12/2/2025, 10:51:05 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:51:05+00:00","linkquality":0,"power":9.64,"state":"OFF"}'
[12/2/2025, 10:51:05 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:51:05+00:00","linkquality":0,"power":9.64,"state":"ON"}'
[12/2/2025, 10:51:05 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:51:05+00:00","linkquality":0,"power":4.77,"state":"ON"}'
[12/2/2025, 10:51:06 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:51:06+00:00","linkquality":0,"power":7.56,"state":"ON"}'
[12/2/2025, 10:51:06 AM] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x000d6f00145d311a', payload '{"last_seen":"2025-12-02T13:51:06+00:00","linkquality":0,"power":8.85,"state":"ON"}'

Matterbridge logs:

info[13:51:05.017][ProtocolService]Invoke Matterbridge.Matterbridge.0x000d6f00145d311a.onOff.on online#cc86e9d@cf83dd68320f2fb7 (no payload)
info[13:51:05.018][0x000d6f00145d311a]Switching device on (endpoint 0x000d6f00145d311a.7)
debug[13:51:05.020][0x000d6f00145d311a]Command on called for 0x000d6f00145d311a endpoint: 0x000d6f00145d311a:7
debug[13:51:05.021][0x000d6f00145d311a]Set attributes called for 0x000d6f00145d311a colorMode OnOff payload { }
debug[13:51:05.021][0x000d6f00145d311a]MatterbridgeOnOffServer: on called
debug[13:51:05.035][Matterbridge]Bridged endpoint 0x000d6f00145d311a:7 attribute OnOff.onOff changed to true
debug[13:51:05.036][Frontend]Sending an attribute update message to all connected clients
debug[13:51:05.036][Frontend]Sending a broadcast message: { id: 0, src: 'Matterbridge', dst: 'Frontend', method: 'state_update', success: true, response: { plugin: 'matterbridge-zigbee2mqtt', serialNumber: '0x000d6f00145d311a', uniqueId: '2f9f511be5fe6d27479d75a450a4468b', number: 7, id: '0x000d6f00145d311a', cluster: 'OnOff', attribute: 'onOff', value: true } }
debug[13:51:05.122][0x000d6f00145d311a]PublishCommand on called for 0x000d6f00145d311a payload: { state: 'ON' }
info[13:51:05.123][Matterbridge zigbee2mqtt plugin]MQTT publish topic: zigbee2mqtt/0x000d6f00145d311a/set payload: {"state":"ON"}
debug[13:51:05.123][Zigbee2MQTT]Publishing [0] topic: zigbee2mqtt/0x000d6f00145d311a/set message: {"state":"ON"}
debug[13:51:05.124][0x000d6f00145d311a]No update for 2 seconds to allow the device 0x000d6f00145d311a to update its state
debug[13:51:05.128][Zigbee2MQTT]Publish [1] success on topic: zigbee2mqtt/0x000d6f00145d311a/set message: {"state":"ON"}
debug[13:51:05.264][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:51:05.265][0x000d6f00145d311a]Skipping not changed MQTT message for accessory 0x000d6f00145d311a
debug[13:51:05.266][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:51:05.267][0x000d6f00145d311a]Skipping not changed MQTT message for accessory 0x000d6f00145d311a
debug[13:51:05.706][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:51:06.201][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:51:06.488][Frontend]Received message from websocket client: { id: 121670, method: 'ping', src: 'Frontend', dst: 'Matterbridge', params: { } }
debug[13:51:06.489][Frontend]Sending api response message: { id: 121670, method: 'pong', src: 'Matterbridge', dst: 'Frontend', success: true }
debug[13:51:06.700][0x000d6f00145d311a]Skipping (no update) MQTT message for accessory 0x000d6f00145d311a
debug[13:51:07.126][0x000d6f00145d311a]No update is now reset for the device 0x000d6f00145d311a

Expected behavior

The bridge device should report changes in the measureValue attribute.

Info

Plugin:

  • Version v2.8.1

Matterbridge:

  • Host mode: service
  • Bridge mode: bridge
  • Version: v3.3.0
  • OS: aarch64 GNU/Linux

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions