[BETA] Matter Advanced RGBW Light w/ healthStatus [MATTER]


Thanks to Hubitat for publishing the first sample Matter driver on GitHub !

The work on this driver is still in progress, hence the [ALPHA] tag. It adds some additional custom capabilities and attributes not present in the stock Matter RGBW Light driver :

  • healthCheck - fires 'offline' event when there is no communication to the device.
  • ping() - custom action that measures the RTT (round-trip time) between sending a simple command to the Matter device and receiving the answer.

The custom driver for Hubitat can be manually installed from GitHub :

https://raw.githubusercontent.com/kkossev/Hubitat/development/Drivers/Matter%20Advanced%20RGBW%20Light/Matter_Advanced_RGBW_Light.groovy

5 Likes

Reserved

The next custom feature that I will be working on is better handling of the 'Color Animation' mode.

This is probably the cheapest Matter toy that I found on Amazon UK : BENEXMART Smart Light Bulbs with Matter.
image

I'll give this a shot from Aliexpress, quicker advertised delivery than Amazon.

1 Like

@kkossev,
Matter bulb received today - seems to be working okay.
Could not commission in Google - used Smartlife Zemismart Hub then shared code to Hubitat.

Colours:
"Color" changes from Smartlife app are reflected correctly in driver/Hubitat.
"White" colour changes are not reflected in driver/Hubitat i.e. the colorName and hue does not change!

Summary



image

Duplicate on/off events

Logs

dev:31572024-01-04 07:02:25.431 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:FFFB, value:[00, 01, 0F, 4000, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:8, attrInt:65531] description:read attr - endpoint: 01, cluster: 0008, attrId: FFFB, value: 1604000401040F05004005F8FF05F9FF05FBFF05FCFF05FDFF18

dev:31572024-01-04 07:02:25.409 PMinfoMatter bulb [FFF9] AcceptedCommandList = [00, 01, 02, 03, 04, 05, 06, 07]

dev:31572024-01-04 07:02:25.406 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0008

dev:31572024-01-04 07:02:25.404 PMwarnMatter bulb skipped level, attribute:FFF9, value:[00, 01, 02, 03, 04, 05, 06, 07]

dev:31572024-01-04 07:02:25.400 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:FFF9, value:[00, 01, 02, 03, 04, 05, 06, 07], clusterInt:8, attrInt:65529] description:read attr - endpoint: 01, cluster: 0008, attrId: FFF9, value: 160400040104020403040404050406040718

dev:31572024-01-04 07:02:25.380 PMinfoMatter bulb [FFF8] GeneratedCommandList = 0x1618 (5656)

dev:31572024-01-04 07:02:25.377 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0008

dev:31572024-01-04 07:02:25.375 PMwarnMatter bulb skipped level, attribute:FFF8, value:1618

dev:31572024-01-04 07:02:25.371 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:FFF8, value:1618, clusterInt:8, attrInt:65528] description:read attr - endpoint: 01, cluster: 0008, attrId: FFF8, value: 1618

dev:31572024-01-04 07:02:25.354 PMinfoMatter bulb [0001] RemainingTime = 00

dev:31572024-01-04 07:02:25.351 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0008

dev:31572024-01-04 07:02:25.348 PMwarnMatter bulb skipped level, attribute:0001, value:00

dev:31572024-01-04 07:02:25.345 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:0001, value:00, clusterInt:8, attrInt:1] description:read attr - endpoint: 01, cluster: 0008, attrId: 0001, value: 0400

dev:31572024-01-04 07:02:25.325 PMinfoMatter bulb [0000] CurrentLevel = 0xFE (254)

dev:31572024-01-04 07:02:25.322 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0008

dev:31572024-01-04 07:02:25.319 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:0000, value:FE, clusterInt:8, attrInt:0] description:read attr - endpoint: 01, cluster: 0008, attrId: 0000, value: 04FE

dev:31572024-01-04 07:02:25.305 PMinfoMatter bulb [4000] StartUpCurrentLevel = 0x80 (128)

dev:31572024-01-04 07:02:25.302 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0008

dev:31572024-01-04 07:02:25.287 PMwarnMatter bulb skipped level, attribute:4000, value:80

dev:31572024-01-04 07:02:25.284 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:4000, value:80, clusterInt:8, attrInt:16384] description:read attr - endpoint: 01, cluster: 0008, attrId: 4000, value: 0480

dev:31572024-01-04 07:02:25.191 PMdebugMatter bulb sendToDevice (String): (he rattrs [{"ep":"0x01","cluster":"0x0008","attr":"0x0000"},{"ep":"0x01","cluster":"0x0008","attr":"0x0001"},{"ep":"0x01","cluster":"0x0008","attr":"0x000F"},{"ep":"0x01","cluster":"0x0008","attr":"0x4000"},{"ep":"0x01","cluster":"0x0008","attr":"0xFFF8"},{"ep":"0x01","cluster":"0x0008","attr":"0xFFF9"},{"ep":"0x01","cluster":"0x0008","attr":"0xFFFB"},{"ep":"0x01","cluster":"0x0008","attr":"0xFFFC"},{"ep":"0x01","cluster":"0x0008","attr":"0xFFFD"}])

dev:31572024-01-04 07:02:25.127 PMdebugMatter bulb requestMatterClusterAttributesValues: attrList:[0, 1, 15, 16384, 65528, 65529, 65531, 65532, 65533]

dev:31572024-01-04 07:02:25.124 PMinfoMatter bulb Requesting Cluster LevelControl (0x0008) endpoint 01 attributes values ...

dev:31572024-01-04 07:02:22.185 PMdebugMatter bulb pareseAttributeList: state.matter[0x0008] = [00, 01, 0F, 4000, FFF8, FFF9, FFFB, FFFC, FFFD]

dev:31572024-01-04 07:02:22.182 PMdebugMatter bulb pareseAttributeList: descMap:[endpoint:01, cluster:0008, attrId:FFFB, value:[00, 01, 0F, 4000, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:8, attrInt:65531]

dev:31572024-01-04 07:02:22.179 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0008, attrId:FFFB, value:[00, 01, 0F, 4000, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:8, attrInt:65531] description:read attr - endpoint: 01, cluster: 0008, attrId: FFFB, value: 1604000401040F05004005F8FF05F9FF05FBFF05FCFF05FDFF18

dev:31572024-01-04 07:02:22.099 PMdebugMatter bulb sendToDevice (String): (he rattrs [{"ep":"0x01","cluster":"0x0008","attr":"0xFFFB"}])

dev:31572024-01-04 07:02:22.096 PMinfoMatter bulb Requesting Cluster LevelControl (0x0008) endpoint 01 attributes list ...

dev:31572024-01-04 07:02:19.077 PMinfoMatter bulb Cluster OnOff (0x0006) endpoint 01 attributes and values list :
[4000] GlobalSceneControl = 01
[0000] Switch = 01
[4001] OnTime = 00
[4002] OffWaitTime = 00
[4003] StartUpOnOff = 00
[FFF8] GeneratedCommandList = 0x1618 (5656)
[FFF9] AcceptedCommandList = [00, 01, 02, 40, 41, 42]
[FFFC] FeatureMap = 01
[FFFD] ClusterRevision = 04

dev:31572024-01-04 07:02:10.468 PMinfoMatter bulb parse: Switch: ClusterRevision = 04

dev:31572024-01-04 07:02:10.465 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:FFFD, value:04, clusterInt:6, attrInt:65533]

dev:31572024-01-04 07:02:10.463 PMinfoMatter bulb [FFFD] ClusterRevision = 04

dev:31572024-01-04 07:02:10.460 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.457 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:FFFD, value:04, clusterInt:6, attrInt:65533] description:read attr - endpoint: 01, cluster: 0006, attrId: FFFD, value: 0404

dev:31572024-01-04 07:02:10.441 PMinfoMatter bulb parse: Switch: FeatureMap = 01

dev:31572024-01-04 07:02:10.438 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:FFFC, value:01, clusterInt:6, attrInt:65532]

dev:31572024-01-04 07:02:10.436 PMinfoMatter bulb [FFFC] FeatureMap = 01

dev:31572024-01-04 07:02:10.433 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.430 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:FFFC, value:01, clusterInt:6, attrInt:65532] description:read attr - endpoint: 01, cluster: 0006, attrId: FFFC, value: 0401

dev:31572024-01-04 07:02:10.410 PMdebugMatter bulb pareseAttributeList: state.matter[0x0006] = [00, 4000, 4001, 4002, 4003, FFF8, FFF9, FFFB, FFFC, FFFD]

dev:31572024-01-04 07:02:10.408 PMdebugMatter bulb pareseAttributeList: descMap:[endpoint:01, cluster:0006, attrId:FFFB, value:[00, 4000, 4001, 4002, 4003, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:6, attrInt:65531]

dev:31572024-01-04 07:02:10.405 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:FFFB, value:[00, 4000, 4001, 4002, 4003, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:6, attrInt:65531] description:read attr - endpoint: 01, cluster: 0006, attrId: FFFB, value: 16040005004005014005024005034005F8FF05F9FF05FBFF05FCFF05FDFF18

dev:31572024-01-04 07:02:10.385 PMinfoMatter bulb parse: Switch: AcceptedCommandList = [00, 01, 02, 40, 41, 42]

dev:31572024-01-04 07:02:10.382 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:FFF9, value:[00, 01, 02, 40, 41, 42], clusterInt:6, attrInt:65529]

dev:31572024-01-04 07:02:10.379 PMinfoMatter bulb [FFF9] AcceptedCommandList = [00, 01, 02, 40, 41, 42]

dev:31572024-01-04 07:02:10.377 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.374 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:FFF9, value:[00, 01, 02, 40, 41, 42], clusterInt:6, attrInt:65529] description:read attr - endpoint: 01, cluster: 0006, attrId: FFF9, value: 1604000401040204400441044218

dev:31572024-01-04 07:02:10.355 PMinfoMatter bulb parse: Switch: GeneratedCommandList = 1618

dev:31572024-01-04 07:02:10.352 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:FFF8, value:1618, clusterInt:6, attrInt:65528]

dev:31572024-01-04 07:02:10.349 PMinfoMatter bulb [FFF8] GeneratedCommandList = 0x1618 (5656)

dev:31572024-01-04 07:02:10.347 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.344 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:FFF8, value:1618, clusterInt:6, attrInt:65528] description:read attr - endpoint: 01, cluster: 0006, attrId: FFF8, value: 1618

dev:31572024-01-04 07:02:10.327 PMinfoMatter bulb parse: Switch: StartUpOnOff = 00 (Off)

dev:31572024-01-04 07:02:10.325 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:4003, value:00, clusterInt:6, attrInt:16387]

dev:31572024-01-04 07:02:10.322 PMinfoMatter bulb [4003] StartUpOnOff = 00

dev:31572024-01-04 07:02:10.320 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.317 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:4003, value:00, clusterInt:6, attrInt:16387] description:read attr - endpoint: 01, cluster: 0006, attrId: 4003, value: 0400

dev:31572024-01-04 07:02:10.300 PMinfoMatter bulb parse: Switch: OffWaitTime = 00

dev:31572024-01-04 07:02:10.298 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:4002, value:00, clusterInt:6, attrInt:16386]

dev:31572024-01-04 07:02:10.295 PMinfoMatter bulb [4002] OffWaitTime = 00

dev:31572024-01-04 07:02:10.293 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.290 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:4002, value:00, clusterInt:6, attrInt:16386] description:read attr - endpoint: 01, cluster: 0006, attrId: 4002, value: 0400

dev:31572024-01-04 07:02:10.274 PMinfoMatter bulb parse: Switch: OnTime = 00

dev:31572024-01-04 07:02:10.271 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:4001, value:00, clusterInt:6, attrInt:16385]

dev:31572024-01-04 07:02:10.269 PMinfoMatter bulb [4001] OnTime = 00

dev:31572024-01-04 07:02:10.266 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.263 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:4001, value:00, clusterInt:6, attrInt:16385] description:read attr - endpoint: 01, cluster: 0006, attrId: 4001, value: 0400

dev:31572024-01-04 07:02:10.247 PMdebugMatter bulb ignored duplicated switch event, value:on

dev:31572024-01-04 07:02:10.244 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:0000, value:01, clusterInt:6, attrInt:0]

dev:31572024-01-04 07:02:10.242 PMinfoMatter bulb [0000] Switch = 01

dev:31572024-01-04 07:02:10.239 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.236 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:0000, value:01, clusterInt:6, attrInt:0] description:read attr - endpoint: 01, cluster: 0006, attrId: 0000, value: 09

dev:31572024-01-04 07:02:10.221 PMinfoMatter bulb parse: Switch: GlobalSceneControl = 01

dev:31572024-01-04 07:02:10.218 PMdebugMatter bulb parseOnOffCluster: descMap:[endpoint:01, cluster:0006, attrId:4000, value:01, clusterInt:6, attrInt:16384]

dev:31572024-01-04 07:02:10.215 PMinfoMatter bulb [4000] GlobalSceneControl = 01

dev:31572024-01-04 07:02:10.213 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 0006

dev:31572024-01-04 07:02:10.210 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:4000, value:01, clusterInt:6, attrInt:16384] description:read attr - endpoint: 01, cluster: 0006, attrId: 4000, value: 09

dev:31572024-01-04 07:02:10.112 PMdebugMatter bulb sendToDevice (String): (he rattrs [{"ep":"0x01","cluster":"0x0006","attr":"0x0000"},{"ep":"0x01","cluster":"0x0006","attr":"0x4000"},{"ep":"0x01","cluster":"0x0006","attr":"0x4001"},{"ep":"0x01","cluster":"0x0006","attr":"0x4002"},{"ep":"0x01","cluster":"0x0006","attr":"0x4003"},{"ep":"0x01","cluster":"0x0006","attr":"0xFFF8"},{"ep":"0x01","cluster":"0x0006","attr":"0xFFF9"},{"ep":"0x01","cluster":"0x0006","attr":"0xFFFB"},{"ep":"0x01","cluster":"0x0006","attr":"0xFFFC"},{"ep":"0x01","cluster":"0x0006","attr":"0xFFFD"}])

dev:31572024-01-04 07:02:10.052 PMdebugMatter bulb requestMatterClusterAttributesValues: attrList:[0, 16384, 16385, 16386, 16387, 65528, 65529, 65531, 65532, 65533]

dev:31572024-01-04 07:02:10.049 PMinfoMatter bulb Requesting Cluster OnOff (0x0006) endpoint 01 attributes values ...

dev:31572024-01-04 07:02:07.111 PMdebugMatter bulb pareseAttributeList: state.matter[0x0006] = [00, 4000, 4001, 4002, 4003, FFF8, FFF9, FFFB, FFFC, FFFD]

dev:31572024-01-04 07:02:07.108 PMdebugMatter bulb pareseAttributeList: descMap:[endpoint:01, cluster:0006, attrId:FFFB, value:[00, 4000, 4001, 4002, 4003, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:6, attrInt:65531]

dev:31572024-01-04 07:02:07.105 PMdebugMatter bulb parse: descMap:[endpoint:01, cluster:0006, attrId:FFFB, value:[00, 4000, 4001, 4002, 4003, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:6, attrInt:65531] description:read attr - endpoint: 01, cluster: 0006, attrId: FFFB, value: 16040005004005014005024005034005F8FF05F9FF05FBFF05FCFF05FDFF18

dev:31572024-01-04 07:02:07.030 PMdebugMatter bulb sendToDevice (String): (he rattrs [{"ep":"0x01","cluster":"0x0006","attr":"0xFFFB"}])

dev:31572024-01-04 07:02:07.027 PMinfoMatter bulb Requesting Cluster OnOff (0x0006) endpoint 01 attributes list ...

dev:31572024-01-04 07:02:04.007 PMinfoMatter bulb Cluster Descriptor (0x001D) endpoint 00 attributes and values list :
[0000] DeviceTypeList = [16, 1818]
[0001] ServerList = [04, 1D, 1F, 28, 2A, 30, 31, 33, 36, 3C, 3E, 3F]
[0002] ClientList = [29]
[0003] PartsList = [01]
[FFF8] GeneratedCommandList = 0x1618 (5656)
[FFF9] AcceptedCommandList = 0x1618 (5656)
[FFFC] FeatureMap = 00
[FFFD] ClusterRevision = 01

dev:31572024-01-04 07:01:55.363 PMinfoMatter bulb [FFFD] ClusterRevision = 01

dev:31572024-01-04 07:01:55.355 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.352 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:FFFD, value:01, clusterInt:29, attrInt:65533] description:read attr - endpoint: 00, cluster: 001D, attrId: FFFD, value: 0401

dev:31572024-01-04 07:01:55.330 PMinfoMatter bulb [FFFC] FeatureMap = 00

dev:31572024-01-04 07:01:55.328 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.325 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:FFFC, value:00, clusterInt:29, attrInt:65532] description:read attr - endpoint: 00, cluster: 001D, attrId: FFFC, value: 0400

dev:31572024-01-04 07:01:55.261 PMdebugMatter bulb pareseAttributeList: state.matter[0x001D] = [00, 01, 02, 03, FFF8, FFF9, FFFB, FFFC, FFFD]

dev:31572024-01-04 07:01:55.259 PMdebugMatter bulb pareseAttributeList: descMap:[endpoint:00, cluster:001D, attrId:FFFB, value:[00, 01, 02, 03, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:29, attrInt:65531]

dev:31572024-01-04 07:01:55.256 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:FFFB, value:[00, 01, 02, 03, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:29, attrInt:65531] description:read attr - endpoint: 00, cluster: 001D, attrId: FFFB, value: 16040004010402040305F8FF05F9FF05FBFF05FCFF05FDFF18

dev:31572024-01-04 07:01:55.230 PMinfoMatter bulb [FFF9] AcceptedCommandList = 0x1618 (5656)

dev:31572024-01-04 07:01:55.227 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.224 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:FFF9, value:1618, clusterInt:29, attrInt:65529] description:read attr - endpoint: 00, cluster: 001D, attrId: FFF9, value: 1618

dev:31572024-01-04 07:01:55.204 PMinfoMatter bulb [FFF8] GeneratedCommandList = 0x1618 (5656)

dev:31572024-01-04 07:01:55.201 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.198 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:FFF8, value:1618, clusterInt:29, attrInt:65528] description:read attr - endpoint: 00, cluster: 001D, attrId: FFF8, value: 1618

dev:31572024-01-04 07:01:55.179 PMinfoMatter bulb [0003] PartsList = [01]

dev:31572024-01-04 07:01:55.177 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.174 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:0003, value:[01], clusterInt:29, attrInt:3] description:read attr - endpoint: 00, cluster: 001D, attrId: 0003, value: 16040118

dev:31572024-01-04 07:01:55.154 PMinfoMatter bulb [0002] ClientList = [29]

dev:31572024-01-04 07:01:55.152 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.149 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:0002, value:[29], clusterInt:29, attrInt:2] description:read attr - endpoint: 00, cluster: 001D, attrId: 0002, value: 16042918

dev:31572024-01-04 07:01:55.130 PMinfoMatter bulb [0001] ServerList = [04, 1D, 1F, 28, 2A, 30, 31, 33, 36, 3C, 3E, 3F]

dev:31572024-01-04 07:01:55.128 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.125 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:0001, value:[04, 1D, 1F, 28, 2A, 30, 31, 33, 36, 3C, 3E, 3F], clusterInt:29, attrInt:1] description:read attr - endpoint: 00, cluster: 001D, attrId: 0001, value: 160404041D041F0428042A0430043104330436043C043E043F18

dev:31572024-01-04 07:01:55.103 PMinfoMatter bulb [0000] DeviceTypeList = [16, 1818]

dev:31572024-01-04 07:01:55.101 PMdebugMatter bulb gatherAttributesValuesInfo: isInfo:true state.states['cluster'] = 001D

dev:31572024-01-04 07:01:55.098 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:0000, value:[16, 1818], clusterInt:29, attrInt:0] description:read attr - endpoint: 00, cluster: 001D, attrId: 0000, value: 16152400162401011818

dev:31572024-01-04 07:01:55.000 PMdebugMatter bulb sendToDevice (String): (he rattrs [{"ep":"0x00","cluster":"0x001D","attr":"0x0000"},{"ep":"0x00","cluster":"0x001D","attr":"0x0001"},{"ep":"0x00","cluster":"0x001D","attr":"0x0002"},{"ep":"0x00","cluster":"0x001D","attr":"0x0003"},{"ep":"0x00","cluster":"0x001D","attr":"0xFFF8"},{"ep":"0x00","cluster":"0x001D","attr":"0xFFF9"},{"ep":"0x00","cluster":"0x001D","attr":"0xFFFB"},{"ep":"0x00","cluster":"0x001D","attr":"0xFFFC"},{"ep":"0x00","cluster":"0x001D","attr":"0xFFFD"}])

dev:31572024-01-04 07:01:54.991 PMdebugMatter bulb requestMatterClusterAttributesValues: attrList:[0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]

dev:31572024-01-04 07:01:54.988 PMinfoMatter bulb Requesting Cluster Descriptor (0x001D) endpoint 00 attributes values ...

dev:31572024-01-04 07:01:53.771 PMdebugMatter bulb pareseAttributeList: state.matter[0x001D] = [00, 01, 02, 03, FFF8, FFF9, FFFB, FFFC, FFFD]

dev:31572024-01-04 07:01:53.768 PMdebugMatter bulb pareseAttributeList: descMap:[endpoint:00, cluster:001D, attrId:FFFB, value:[00, 01, 02, 03, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:29, attrInt:65531]

dev:31572024-01-04 07:01:53.765 PMdebugMatter bulb parse: descMap:[endpoint:00, cluster:001D, attrId:FFFB, value:[00, 01, 02, 03, FFF8, FFF9, FFFB, FFFC, FFFD], clusterInt:29, attrInt:65531] description:read attr - endpoint: 00, cluster: 001D, attrId: FFFB, value: 16040004010402040305F8FF05F9FF05FBFF05FCFF05FDFF18

dev:31572024-01-04 07:01:51.966 PMdebugMatter bulb sendToDevice (String): (he rattrs [{"ep":"0x00","cluster":"0x001D","attr":"0xFFFB"}])

dev:31572024-01-04 07:01:51.964 PMinfoMatter bulb Requesting Cluster Descriptor (0x001D) endpoint 00 attributes list ...

dev:31572024-01-04 07:01:49.951 PMinfoMatter bulb Cluster BasicInformation (0x0028) endpoint 00 attributes and values list :
[0000] DataModelRevision = 01
[0001] VendorName = Zemismart Technology Limited
[0002] VendorID = 0x139C (5020)
[0003] ProductName = Zemismart bulb
[0004] ProductID = 0xD002 (53250)
[0006] Location = US
[0007] HardwareVersion = 00
[0008] HardwareVersionString = 1.0
[0009] SoftwareVersion = 00
[000A] SoftwareVersionString = 1.10
[0013] CapabilityMinima = 1524000324010318
[FFF8] GeneratedCommandList = 0x1618 (5656)
[FFF9] AcceptedCommandList = 0x1618 (5656)
[FFFC] FeatureMap = 00
[FFFD] ClusterRevision = 01

1 Like

@junk2 don't hive up! :slight_smile:

As a temporary solution, can you test this driver version 1.0.4 2024/01/23 10:54 PM ( the download link is on the top post).

Activate the 'Advanced options', click Save, then select a debounce filter timing and click on Save Preferences again.

I was testing with Nanoleaf A19 bulb, it seems to be less spammy than yours :

Can you give this test driver a try and let me know the results?
(you may need to reboot your hub after switching to this driver to clear the HE system device statistics)

@dmunn can you also try this driver, until the next HE update? Will it work with your bulb?

Note that this driver is rather simple (less than 5,000 lines of code :slight_smile: ) - it is based on the published simple matter driver example by Hubitat and lacks some of the RGBW commands available in the more advanced stock "Generic Matter RGBW Light" driver.

1 Like

Testing it now.

this is with only bulb 1 updated. We can use this as a baseline and I will do 3 more bulbs for a side-by-side comparison.

I'd rather not reset the hub, but if you really need it, let me know and I can do it later after the family is asleep.

1 Like

Here is one bulb before and after the driver.

Before
firefox_K9qIcOewpB
Immediately After
firefox_wTtmskr23Q
After a bit
firefox_Qqdy6bHS6d

I noticed that the color mode is missing after the driver was updated.

1 Like

These stats seems OK, compared to your previous screenshot :


Here the real problem is not the high Count number, but the Hub actions.
This driver should dramatically reduce the number of the Hub actions, that are actually clogging the hub ...

No no - there is no need for that!

The color mode and the color temperature attributes are not implemented in this driver (yet). Hopefully, you will not need these for the spam filtering/performance tests now ...

Now, the most important question is whether the algorithm implemented for delaying the spammy events / reducing the hub load is working as expected. My Nanoleaf bulb does not produce such a bing number of update events as your bulb, so I can't test the driver in the same conditions.

Those 15K counts was after the hub being up for 2 days. Also, I was running some tests with a HS300+ Dimmer and webcore to do different tasks depending upon different "buttons" being held or pressed.

Here are the device stats this morning. Bulbs 1-4 are on the alpha driver and the others are still on the generic matter driver. I'm not seeing a difference...

ETA: The hub rebooted at 8am. I don't know why. So, the usage above is for 2 hours.

1 Like

In normal conditions, there should be no differences in the Counts and States between the different drivers, The custom driver count may be a bit higher, as it periodically sends ping commands to the bulb to check its healthStatus.

You can stress-test the bulbs using the HE built-in 'Color Animations' app.

Updated counts. Bulbs 1-4 still new driver. Seems to be using a tiny bit of processor where the built-in drive does not.

I disabled my webcore app that I was using to turn on these lights. Right now, I have a virtual switch that when turned on activates an Alexa routine to turn on the lights. Obviously this is not ideal as when internet is down, it would not work. Also, there is an (about) 500 ms delay.

Webcore was only turning on and turning off the lights and setting the colors. This ONLY happened a few times a day when the zwave switch in the bathroom was turned on and off. It should NOT have been polling the lights. So, I am unclear why they got so spammy when they were included in a webcore piston. I'll do some testing this weekend to see if I can figure out the issue.

1 Like

Hey @kkossev , Is there anyway for this driver to have a bulb snap on/off without a ramp up/down. I'm trying to use a Linkind bulb. It turns on nice and fast but then has a 2 second ramp down when turning off.

  • endpointId: 01
  • hardwareVersion: 1.0.0
  • inClusters: 001D,0003,0004,0005,0006,0008,0300
  • manufacturer: Leedarson
  • model: Smart RGBTW Bulb
  • outClusters:
  • serialNumber: 00002606374
  • softwareVersion: 1.00.00
  • uniqueId: F21D41BD6DA18FB4

Thanks for looking