Reducing power reporting noise in a device type

I wasn’t able to figure out the “minimum change amount” part of the configuration, but at least could set the reporting interval.

The definition of “maximum reporting frequency” vs. “minimum” should be obvious, but… well, results aren’t always as expected.

Regardless, I hope I can still earn my “Helpful” title by sharing this commented code section below.
NB: I highly recommend adding a “Config” sub-tile to your DTH so you can call the configure() method on demand.

def configure() {
    /* Call configure using raw zdo bind and zcl clusters. */
	zigbee.onOffConfig() + powerConfig() + refresh()
    /* Call zigbee.configureReporting() method. */
    //powerConfigST() + refresh()
}

//power config for devices with min reporting interval as 1 seconds and reporting interval if no activity as 10min (600s)
//min change in value is 01
def powerConfig() {
    log.debug "powerConfig send..."
    /* Per ZigBee Cluster Library Specification, Page ~26-27 of this or later doc:
       https://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/s2011/kjb79_ajm232/pmeter/ZigBee%20Cluster%20Library.pdf
    
       Direction, Attribute identifier, Attribute data type, Minimum reporting interval, Maximum reporting interval, Reportable change
    */
	[
		"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x0B04 {${device.zigbeeId}} {}", "delay 200",
        /* From Forum post, 6400 / 6401 supposed to be 1 hour reporting -- but why not 2600? */
        //"zcl global send-me-a-report 0x0B04 0x050B 0x29 6400 6401 {64 0000}",	//The send-me-a-report is custom to the attribute type for CentraLite
        /* Using 120 instead of 6400 results in 2 minutes, though isn't that the min instead of max? Gotta experiment with both min and max. */
		"zcl global send-me-a-report 0x0B04 0x050B 0x29 300 300 {64 0000}",	
		"send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500"
	]
}

def powerConfigST() {
	log.debug "powerConfigST (zigbee.configureReporting) send..."
    /* Attempting 3600 = 1 hour maximum reporting interval. 600 = Five minutes minimum reporting interval. 0 = minimum change. */
    zigbee.configureReporting(0x0B04, 0x050B, 0x29, 3600, 600, 1)
}
2 Likes