[RELEASE] Samotech Drivers

Safety boop.

I've just added the SM323 driver and updated the SM308. Still very pleased with these devices!

@birdslikewires, i've just downloaded the Sm323 driver for my SM323 V2.

I have formerly been using the generic ZigBee driver with broad success but not perfection. Sometimes when I rotate the dial to turn on, my spotlights would turn on and then return back to the off position . I've spent hours and hours playing with the minimum/maximum brightness settings, connected/disconnected neutral, I even replaced my 10x Dimmable GU10 bulbs but with no success. Finally I replaced the dimmer module but the result was the same. The logs didn't give me an answer either. So I have been in an inconclusive state for over a year until now whereby I've stumbled upon this thread. (I don't know how I overlooked it)

So, I'm living in hope that the issue was with the generic driver and your driver will resolve the problem. I live in hope but will let you know. .. Appreciated in advance

1 Like

Oh, also. Is there a way to change the dimmers 2nd switch from retractive to standard toggle. I know the hardware does support this functionality but I can't fathom how Hubitat can update the hardware accordingly. Any help is always appreciated :+1:

I've not got that straight in my mind. The dimmer's second switch... do you mean a switch electically wired in traditional two-way control, like you would have at either end of a corridor or at the top and bottom of a flight of stairs?

If so, not a clue. :joy:

Ah, hope. I know it well. Well enough to spend countless hours writing drivers to move me to the neighbouring village of certainty.

Yeah exactly that. I'm talking of a two way lighting circuit. When I search on Google Gemini, it implies that you can force the hardware of the SM323 V2 to work with a toggle switch as opposed to a retractive switch. The language is way above my head but I'm sure it would make more sense to you @birdslikewires. Appreciate your reply in any event...Stu

I'm hoping to spend some time over the weekend field testing this. Unfortunately it was/is an inconsistent fault so it can take moons to fathom out it's success. Not particularly WAF pleasing as I bounce around the house turning the lights on and off like a plonker.

It's not in the Samotech documentation, but this appears to be possible. The new SM323 is based on Sunricher's hardware, and Zigbee2MQTT is able to set that mode using a manufacturer-specfic cluster.

That'd be a cool option to add to the driver, I'll try to find some time to unpick Z2M's driver code to uncover how it's done. Our drivers need to chat to the device using the actual Zigbee protocol, not abstracted up to something as cozy as MQTT. :slight_smile:

We had a "test" light switch in the hall which didn't work consistently for years. Literal years. They're all over the house and super-reliable now, but even the slightest delay (or even missing pressing the button!) causes the familiar sigh of disappointment.

If the SM323 is causing trouble then I'd say there's a communication issue back to your hub. I've found the Samotech gear to be top notch. If you have a C8 hub you could always try upping the Zigbee wireless power up a notch or two?

Ok, cool and interesting. So, regards the switch which didn't work for years, did you resolve this by upping the the ZigBee power @birdslikewires ? When you say switch, do you mean a SM323? brill, thanks for helping this far and feeding back

I guess this would be the final piece of the jigsaw. You're right though. The Samotech is really powerful and reliable. I've just got to engineer out my few gremlins which I hope will be relieved by your driver or by turning up the ZigBee power as recommended :+1::heartpulse::heartpulse:

@birdslikewires could you help please. Are you able to change the driver so that the difference between a digital on/off and a physical on/off is recognised please. I have the sm323 V2 version whereby the logs just show on/off and omit the physical/digital narrative.

I formerly used a different driver for my original sm323 V1's and recall the digital/physical being apparent in the logs and working. I can't recall what this driver is/was.

A bit of a story to obtain WAF but I need this function to be available if you could please help a man in distress ha ha

Oh, actually I found it @birdslikewires . See screenshots of the
RGBGenie Micro ZigBee Dimmer driver which shows the difference between [physical] and [digital] on/off's.

It would be awesome if you could bring this onto your driver


No, this was an Aqara product. Nightmare.

Should be doable, though I'm crazy busy with work at the moment. What I'll need are those logs you posted from my driver with debug mode on, and just pop a note to say which actuations were local and which were remote, for both on and off triggers in each instance. You'll likely see a difference in the Zigbee messages when they're compared. :+1:

Just out of curiosity, what's the use case here?

Oh, thanks you so much for this. So here are the first logs which show On/OFF controlled digitally from the Hubitat Commands Page. The next set of logs wil be the Physical pressing of the dimmer knob.

2026-04-04 18:58:22.580

debug

SPOTLIGHTS HALL : Real Level : 3

dev:13802026-04-04 18:58:22.578

info

SPOTLIGHTS HALL : Level : 3

dev:13802026-04-04 18:58:22.575

debug

SPOTLIGHTS HALL : Parse : [raw:5F27010008080000200A, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:22.459

debug

SPOTLIGHTS HALL : Real Level : 3

dev:13802026-04-04 18:58:22.457

info

SPOTLIGHTS HALL : Level : 3

dev:13802026-04-04 18:58:22.455

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002009, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:09, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:22.359

debug

SPOTLIGHTS HALL : Real Level : 3

dev:13802026-04-04 18:58:22.357

info

SPOTLIGHTS HALL : Level : 3

dev:13802026-04-04 18:58:22.355

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002008, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:08, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:22.223

debug

SPOTLIGHTS HALL : Real Level : 2

dev:13802026-04-04 18:58:22.221

info

SPOTLIGHTS HALL : Level : 2

dev:13802026-04-04 18:58:22.219

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002007, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:07, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:22.106

debug

SPOTLIGHTS HALL : Real Level : 2

dev:13802026-04-04 18:58:22.104

info

SPOTLIGHTS HALL : Level : 2

dev:13802026-04-04 18:58:22.102

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002006, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:06, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:22.007

debug

SPOTLIGHTS HALL : Real Level : 1

dev:13802026-04-04 18:58:22.006

info

SPOTLIGHTS HALL : Level : 1

dev:13802026-04-04 18:58:22.001

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002005, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:05, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:21.868

debug

SPOTLIGHTS HALL : Real Level : 1

dev:13802026-04-04 18:58:21.867

info

SPOTLIGHTS HALL : Level : 1

dev:13802026-04-04 18:58:21.862

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002004, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:04, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:21.750

debug

SPOTLIGHTS HALL : Real Level : 1

dev:13802026-04-04 18:58:21.748

info

SPOTLIGHTS HALL : Level : 1

dev:13802026-04-04 18:58:21.742

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002003, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:03, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:21.637

debug

SPOTLIGHTS HALL : Real Level : 0

dev:13802026-04-04 18:58:21.635

info

SPOTLIGHTS HALL : Level : 0

dev:13802026-04-04 18:58:21.633

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002002, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:02, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:21.477

debug

SPOTLIGHTS HALL : Real Level : 0

dev:13802026-04-04 18:58:21.474

info

SPOTLIGHTS HALL : Level : 0

dev:13802026-04-04 18:58:21.469

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002001, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:01, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:21.459

info

SPOTLIGHTS HALL : Switch : On

dev:13802026-04-04 18:58:21.455

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001001, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]

dev:13802026-04-04 18:58:21.411

debug

SPOTLIGHTS HALL : Skipped : Match Descriptor Request

dev:13802026-04-04 18:58:21.409

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0006 01 01 0040 00 5F27 00 00 0000 0B 01 0100, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[01, 00]]

dev:13802026-04-04 18:58:18.132

debug

SPOTLIGHTS HALL : Real Level : 3

dev:13802026-04-04 18:58:18.087

info

SPOTLIGHTS HALL : Level : 3

dev:13802026-04-04 18:58:18.085

debug

SPOTLIGHTS HALL : Parse : [raw:5F27010008080000200A, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]

dev:13802026-04-04 18:58:17.366

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0008 01 01 0040 00 5F27 00 00 0000 07 01 00, profileId:0104, clusterId:0008, clusterInt:8, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00]]

dev:13802026-04-04 18:58:17.150

info

SPOTLIGHTS HALL : Switch : Off

dev:13802026-04-04 18:58:17.148

debug

SPOTLIGHTS HALL : Skipped : Match Descriptor Request

dev:13802026-04-04 18:58:17.146

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]

dev:13802026-04-04 18:58:17.135

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0006 01 01 0040 00 5F27 00 00 0000 0B 01 0000, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]

dev:13802026-04-04 18:58:16.738

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0008 01 01 0040 00 5F27 00 00 0000 07 01 00, profileId:0104, clusterId:0008, clusterInt:8, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00]]

dev:13802026-04-04 18:58:15.355

debug

SPOTLIGHTS HALL : Skipped : Bind Response

dev:13802026-04-04 18:58:15.353

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0000 8021 00 00 0040 00 5F27 00 00 0000 00 00 F500, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[F5, 00]]

dev:13802026-04-04 18:58:14.737

debug

SPOTLIGHTS HALL : Skipped : Bind Response

dev:13802026-04-04 18:58:14.735

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0000 8021 00 00 0040 00 5F27 00 00 0000 00 00 F300, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[F3, 00]]

dev:13802026-04-04 18:58:13.340

info

SPOTLIGHTS HALL : Configuration : Received and accepted by device.

dev:13802026-04-04 18:58:13.338

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0006 01 01 0040 00 5F27 00 00 0000 07 01 00, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00]]

dev:13802026-04-04 18:58:12.743

info

SPOTLIGHTS HALL : Configuration : Received and accepted by device.

dev:13802026-04-04 18:58:12.741

debug

SPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0006 01 01 0040 00 5F27 00 00 0000 07 01 00, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00]]

@birdslikewires, here are the logs for the physical press of the dimmer. Appreciated in advance, you're really helpful :slight_smile:

2026-04-04 19:02:43.017

debug

SPOTLIGHTS HALL : Health Status : Last report received 19 seconds ago.

dev:13802026-04-04 19:02:23.913

debug

SPOTLIGHTS HALL : Real Level : 31

dev:13802026-04-04 19:02:23.911

info

SPOTLIGHTS HALL : Level : 31

dev:13802026-04-04 19:02:23.909

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002051, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:51, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:23.842

info

SPOTLIGHTS HALL : Switch : Off

dev:13802026-04-04 19:02:23.840

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]

dev:13802026-04-04 19:02:19.852

debug

SPOTLIGHTS HALL : Real Level : 31

dev:13802026-04-04 19:02:19.850

info

SPOTLIGHTS HALL : Level : 31

dev:13802026-04-04 19:02:19.847

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002051, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:51, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:19.702

debug

SPOTLIGHTS HALL : Real Level : 12

dev:13802026-04-04 19:02:19.700

info

SPOTLIGHTS HALL : Level : 12

dev:13802026-04-04 19:02:19.697

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002021, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:21, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:19.610

debug

SPOTLIGHTS HALL : Real Level : 0

dev:13802026-04-04 19:02:19.608

info

SPOTLIGHTS HALL : Level : 0

dev:13802026-04-04 19:02:19.605

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002001, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:01, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:19.594

info

SPOTLIGHTS HALL : Switch : On

dev:13802026-04-04 19:02:19.590

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001001, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]

dev:13802026-04-04 19:02:14.245

debug

SPOTLIGHTS HALL : Real Level : 3

dev:13802026-04-04 19:02:14.243

info

SPOTLIGHTS HALL : Level : 3

dev:13802026-04-04 19:02:14.241

debug

SPOTLIGHTS HALL : Parse : [raw:5F27010008080000200A, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:13.181

info

SPOTLIGHTS HALL : Switch : Off

dev:13802026-04-04 19:02:13.179

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]

dev:13802026-04-04 19:02:12.984

debug

SPOTLIGHTS HALL : Real Level : 0

dev:13802026-04-04 19:02:12.982

info

SPOTLIGHTS HALL : Level : 0

dev:13802026-04-04 19:02:12.977

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100080800002001, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:01, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:12.965

info

SPOTLIGHTS HALL : Switch : On

dev:13802026-04-04 19:02:12.963

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001001, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]

dev:13802026-04-04 19:02:09.296

debug

SPOTLIGHTS HALL : Real Level : 3

dev:13802026-04-04 19:02:09.295

info

SPOTLIGHTS HALL : Level : 3

dev:13802026-04-04 19:02:09.291

debug

SPOTLIGHTS HALL : Parse : [raw:5F27010008080000200A, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]

dev:13802026-04-04 19:02:08.254

info

SPOTLIGHTS HALL : Switch : Off

dev:13802026-04-04 19:02:08.251

debug

SPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]

Give this a try - just copy 'n' paste it over the existing SM323 driver in the Driver Code page.

/*
 * 
 *  Samotech SM323 Dimmer Module Driver
 *	
 */


@Field String driverVersion = "v1.05b (4th April 2026)"
@Field boolean debugMode = false

#include BirdsLikeWires.library
import groovy.transform.Field

@Field int reportIntervalMinutes = 1
@Field String deviceMan = "Samotech"
@Field String deviceType = "Dimmer Module"


metadata {

	definition (name: "$deviceMan $deviceType SM323", namespace: "BirdsLikeWires", author: "Andrew Davison",
		importUrl: "https://raw.githubusercontent.com/birdslikewires/hubitat/main/samotech/drivers/samotech_dimmer_module.groovy") {

		capability "Actuator"
		capability "Configuration"
		capability "HealthCheck"
		capability "Light"
		capability "PowerMeter"
		capability "Refresh"
		capability "Switch"
		capability "SwitchLevel"

		attribute "healthStatus", "enum", ["offline", "online"]

		if (debugMode) {
			command "testCommand"
		}

		fingerprint profileId: "0104", inClusters: "0000,0003,0004,0005,0006,0008,0702,0B04,0B05,1000", outClusters: "0019", manufacturer: "Samotech", model: "SM323", deviceJoinName: "$deviceMan $deviceType SM323"

	}

}


preferences {
	
	input name: "electricalMeasure", type: "bool", title: "Enable electrical measurement", description: "Requests power reporting. This will not work properly if the module is wired without neutral.", defaultValue: false
	input name: "levelMax", type: "number", title: "Maximum level", description: "Set the maximum brightness level for the dimmer (1-100%).", range: "1..100", defaultValue: 100

	input name: "infoLogging", type: "bool", title: "Enable logging", defaultValue: true
	input name: "debugLogging", type: "bool", title: "Enable debug logging", defaultValue: false
	input name: "traceLogging", type: "bool", title: "Enable trace logging", defaultValue: false	

}


void testCommand() {

	logging("${device} : Test Command", "info")

}


void configureSpecifics() {

	requestBasic()

	String deviceModel = getDeviceDataByName('model')
	device.name = "$deviceMan $deviceType $deviceModel"

	// Reporting
	int reportIntervalSeconds = reportIntervalMinutes * 60

	ArrayList<String> cmds = []
	cmds = zigbee.writeAttribute(0x0006, 0x4003, 0x30, 0xFF)	// If power is lost, return to previous state when re-energised.
	cmds += zigbee.configureReporting(0x0006, 0x0000, 0x10, 0, reportIntervalSeconds, 0x00)
	cmds += zigbee.configureReporting(0x0008, 0x0000, 0x20, 0, reportIntervalSeconds, 0x01)
	sendZigbeeCommands(cmds)

	if (settings.electricalMeasure) {
		cmds = zigbee.configureReporting(0x0B04, 0x050B, 0x29, 0, reportIntervalSeconds, 0x01)
		sendZigbeeCommands(cmds)
	}

}


void updateSpecifics() {

	configureSpecifics()

}


void ping() {

	logging("${device} : Ping", "info")
	refresh()

}


void refresh() {

	logging("${device} : Refreshing", "debug")
	sendZigbeeCommands([
		"he rattr 0x${device.deviceNetworkId} 0x01 0x0006 0x0000 {}",	// state
		"he rattr 0x${device.deviceNetworkId} 0x01 0x0008 0x0000 {}"	// level
	])

}


void off() {

	logging("${device} : off()", "debug")
	sendZigbeeCommands(["he cmd 0x${device.deviceNetworkId} 0x01 0x0006 0x00 {}"])

}


void on() {

	logging("${device} : on()", "debug")
	sendZigbeeCommands(["he cmd 0x${device.deviceNetworkId} 0x01 0x0006 0x01 {}"])

}


void setLevel(BigDecimal level) {

	setLevel(level,1)

}


void setLevel(BigDecimal level, BigDecimal duration) {

	// Calculate the allowable level using the levelMax preference.
	Integer maxLevelPercent = (settings.levelMax as Integer) ?: 100
	BigDecimal effectivePercentage = (level / 100.0) * maxLevelPercent
	int finalDeviceLevel = Math.round(effectivePercentage).intValue()
	String hexLevel = percentageToHex(finalDeviceLevel)

	BigDecimal safeDuration = duration <= 25 ? (duration*10) : 255
	String hexDuration = Integer.toHexString(safeDuration.intValue()).padLeft(2,'0')

	String pluralisor = duration == 1 ? "" : "s"
	logging("${device} : setLevel : Got level request of '${level}' (${finalDeviceLevel}%) [${hexLevel}] over '${duration}' (${safeDuration} decisecond${pluralisor}) [${hexDuration}].", "debug")

	sendZigbeeCommands(["he cmd 0x${device.deviceNetworkId} 0x01 0x0008 0x04 {${hexLevel} ${hexDuration} 00}"])

}


void parse(String description) {

	updateHealthStatus()
	checkDriver()

	Map descriptionMap = zigbee.parseDescriptionAsMap(description)

	if (descriptionMap) {

		logging("${device} : Parse : ${descriptionMap}", "debug")
		processMap(descriptionMap)

	} else {
		
		logging("${device} : Parse : Failed to parse received data. Please report these messages to the developer.", "warn")
		logging("${device} : Parse : ${description}", "error")

	}

}


void processMap(Map map) {

	logging("${device} : processMap() : ${map}", "trace")

	if (map.cluster == "0006" || map.clusterId == "0006") {

		if (map.command == "01" || map.command == "0A") {
			// Relay States

			boolean isDigital = state.lastDigitalCommand && (now() - (state.lastDigitalCommand as Long)) < 500
			String eventType = isDigital ? "digital" : "physical"

			if (map.value == "00") {

				sendEvent(name: "switch", value: "off", type: eventType)
				logging("${device} : Switch : Off", "info")

			} else {

				sendEvent(name: "switch", value: "on", type: eventType)
				logging("${device} : Switch : On", "info")

			}

		} else if (map.command == "07") {

			processConfigurationResponse(map)

		} else if (map.command == "0B") {
			// Default Response - device is ACKing a command sent from Hubitat, so next state change is digital

			state.lastDigitalCommand = now()
			logging("${device} : Digital Command : Acknowledged by device.", "debug")

		} else if (map.command == "00") {

			logging("${device} : Skipped : State Counter Message", "debug")

		} else {

			filterThis(map)

		}

	} else if (map.cluster == "0008" || map.clusterId == "0008") {
		// Level

		if (map.command == "01" || map.command == "0A") {
			// Reading

			Integer maxLevelPercent = (settings.levelMax as Integer) ?: 100
			int currentLevel = hexToPercentage("${map.value}")
			long scaledPercentage = Math.round((currentLevel / maxLevelPercent.toDouble()) * 100.0)
			scaledPercentage = Math.min(100L, Math.max(0L, scaledPercentage))
			scaledPercentage = scaledPercentage >= 98 ? 100 : scaledPercentage

			if (currentLevel > maxLevelPercent) {
				logging("${device} : Over Level : Reported ${currentLevel} is over the configured maximum of ${maxLevelPercent}. Correcting!", "warn")
				setLevel(100,0)
			}

			sendEvent(name: "level", value: "${scaledPercentage}")
			logging("${device} : Level : ${scaledPercentage}", "info")
			logging("${device} : Real Level : ${currentLevel}", "debug")

		} else if (map.command == "0B") {
			// Status

			logging("${device} : Fading", "debug")

		} else {

			filterThis(map)

		}

	} else if (map.cluster == "0B04") {
		// Electrical Measurement

		if (settings.electricalMeasure) {

			if (map.attrId == "050B") {
				// Instantaneous power reading. 
				int powerValue = zigbee.convertHexToInt(map.value)
				powerValue = Math.round(powerValue / 10.0)
				sendEvent(name: "power", value: powerValue, unit: "W")
			}

		} else {

			return

		}

	} else {

		filterThis(map)

	}
	
}

Might take a press or two to start behaving, but it should send "physical" and "digital" signals that can be interpreted in Rule Machine.

I've written it but not tested it beyond checking that it runs, so good luck! :wink:

Hi, so thanks this far for helping out here. I've overwritten the driver with your new code but the result appears the same. Do you think I'm missing something somewhere. See logs below whereby the earlier 2 On/Offs are digital, the latter 2 on/offs are by pressing the dimmer button. Hope you can help, and appreciated in advance again :slight_smile:

dev:13802026-04-05 23:25:47.098debugSPOTLIGHTS HALL : Real Level : 19
dev:13802026-04-05 23:25:47.096infoSPOTLIGHTS HALL : Level : 19
dev:13802026-04-05 23:25:47.094debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002031, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:31, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:47.093infoSPOTLIGHTS HALL : Switch : Off
dev:13802026-04-05 23:25:47.088debugSPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]
dev:13802026-04-05 23:25:43.739debugSPOTLIGHTS HALL : Real Level : 19
dev:13802026-04-05 23:25:43.738infoSPOTLIGHTS HALL : Level : 19
dev:13802026-04-05 23:25:43.735debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002031, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:31, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:43.614debugSPOTLIGHTS HALL : Real Level : 12
dev:13802026-04-05 23:25:43.611infoSPOTLIGHTS HALL : Level : 12
dev:13802026-04-05 23:25:43.606debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002021, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:21, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:43.355infoSPOTLIGHTS HALL : Switch : On
dev:13802026-04-05 23:25:43.350debugSPOTLIGHTS HALL : Parse : [raw:5F270100060800001001, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]
dev:13802026-04-05 23:25:42.555debugSPOTLIGHTS HALL : Real Level : 0
dev:13802026-04-05 23:25:42.554infoSPOTLIGHTS HALL : Level : 0
dev:13802026-04-05 23:25:42.552debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002001, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:01, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:41.620debugSPOTLIGHTS HALL : Real Level : 0
dev:13802026-04-05 23:25:41.618infoSPOTLIGHTS HALL : Switch : Off
dev:13802026-04-05 23:25:41.616infoSPOTLIGHTS HALL : Level : 0
dev:13802026-04-05 23:25:41.615debugSPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]
dev:13802026-04-05 23:25:41.608infoSPOTLIGHTS HALL : Switch : On
dev:13802026-04-05 23:25:41.606debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002001, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:01, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:41.604debugSPOTLIGHTS HALL : Parse : [raw:5F270100060800001001, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]
dev:13802026-04-05 23:25:35.473debugSPOTLIGHTS HALL : Real Level : 3
dev:13802026-04-05 23:25:35.470infoSPOTLIGHTS HALL : Level : 3
dev:13802026-04-05 23:25:35.468debugSPOTLIGHTS HALL : Parse : [raw:5F27010008080000200A, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:35.069debugSPOTLIGHTS HALL : Real Level : 1
dev:13802026-04-05 23:25:35.067infoSPOTLIGHTS HALL : Level : 1
dev:13802026-04-05 23:25:35.065debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002004, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:04, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:34.410infoSPOTLIGHTS HALL : Switch : Off
dev:13802026-04-05 23:25:34.408debugSPOTLIGHTS HALL : Parse : [raw:5F270100060800001000, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]
dev:13802026-04-05 23:25:34.369debugSPOTLIGHTS HALL : Skipped : Match Descriptor Request
dev:13802026-04-05 23:25:34.367debugSPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0006 01 01 0040 00 5F27 00 00 0000 0B 01 0000, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]
dev:13802026-04-05 23:25:34.283debugSPOTLIGHTS HALL : Health Status : Last report received 5 seconds ago.
dev:13802026-04-05 23:25:28.606debugSPOTLIGHTS HALL : Real Level : 3
dev:13802026-04-05 23:25:28.604infoSPOTLIGHTS HALL : Level : 3
dev:13802026-04-05 23:25:28.599debugSPOTLIGHTS HALL : Parse : [raw:5F27010008080000200A, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:28.490debugSPOTLIGHTS HALL : Real Level : 3
dev:13802026-04-05 23:25:28.488infoSPOTLIGHTS HALL : Level : 3
dev:13802026-04-05 23:25:28.486debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002009, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:09, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:28.399debugSPOTLIGHTS HALL : Real Level : 3
dev:13802026-04-05 23:25:28.397infoSPOTLIGHTS HALL : Level : 3
dev:13802026-04-05 23:25:28.395debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002008, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:08, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:28.282debugSPOTLIGHTS HALL : Real Level : 2
dev:13802026-04-05 23:25:28.280infoSPOTLIGHTS HALL : Level : 2
dev:13802026-04-05 23:25:28.275debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002007, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:07, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:28.137debugSPOTLIGHTS HALL : Real Level : 2
dev:13802026-04-05 23:25:28.135infoSPOTLIGHTS HALL : Level : 2
dev:13802026-04-05 23:25:28.133debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002006, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:06, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:28.024debugSPOTLIGHTS HALL : Real Level : 1
dev:13802026-04-05 23:25:28.022infoSPOTLIGHTS HALL : Level : 1
dev:13802026-04-05 23:25:28.019debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002005, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:05, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:27.927debugSPOTLIGHTS HALL : Real Level : 1
dev:13802026-04-05 23:25:27.925infoSPOTLIGHTS HALL : Level : 1
dev:13802026-04-05 23:25:27.894debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002004, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:04, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:27.784debugSPOTLIGHTS HALL : Real Level : 1
dev:13802026-04-05 23:25:27.781infoSPOTLIGHTS HALL : Level : 1
dev:13802026-04-05 23:25:27.776debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002003, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:03, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:27.666debugSPOTLIGHTS HALL : Real Level : 0
dev:13802026-04-05 23:25:27.664infoSPOTLIGHTS HALL : Level : 0
dev:13802026-04-05 23:25:27.661debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002002, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:02, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:27.537debugSPOTLIGHTS HALL : Real Level : 0
dev:13802026-04-05 23:25:27.534infoSPOTLIGHTS HALL : Level : 0
dev:13802026-04-05 23:25:27.532infoSPOTLIGHTS HALL : Switch : On
dev:13802026-04-05 23:25:27.528debugSPOTLIGHTS HALL : Parse : [raw:5F270100080800002001, dni:5F27, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:01, clusterInt:8, attrInt:0]
dev:13802026-04-05 23:25:27.503debugSPOTLIGHTS HALL : Parse : [raw:5F270100060800001001, dni:5F27, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]
dev:13802026-04-05 23:25:27.442debugSPOTLIGHTS HALL : Skipped : Match Descriptor Request
dev:13802026-04-05 23:25:27.440debugSPOTLIGHTS HALL : Parse : [raw:catchall: 0104 0006 01 01 0040 00 5F27 00 00 0000 0B 01 0100, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5F27, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[01, 00]]

Hi @birdslikewires I've continued to have a play but I still can't see the turned on/off by physical/digital in the logs. I can see a reference stating:

"SPOTLIGHTS BATHROOM : Digital Command : Acknowledged by device". Which shows shortly before an ON but that's where the trail runs cold.

Any help would be appreciated and welcomed. Appreciated :pray:

dev:13812026-04-15 22:23:22.019

debug

SPOTLIGHTS BATHROOM : Health Status : Last report received 26 seconds ago.

dev:13812026-04-15 22:23:19.836

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:23:19.707

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0805214600, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:0508, encoding:21, command:0A, value:0046, clusterInt:2820, attrInt:1288]

dev:13812026-04-15 22:23:16.873

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:23:15.662

debug

SPOTLIGHTS BATHROOM : Real Level : 50

dev:13812026-04-15 22:23:15.659

info

SPOTLIGHTS BATHROOM : Level : 50

dev:13812026-04-15 22:23:15.657

info

SPOTLIGHTS BATHROOM : Switch : On

dev:13812026-04-15 22:23:15.654

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100080800002081, dni:03C1, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:81, clusterInt:8, attrInt:0]

dev:13812026-04-15 22:23:15.650

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100060800001001, dni:03C1, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]

dev:13812026-04-15 22:23:10.882

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:58.855

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:55.860

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:49.854

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:43.878

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:40.862

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:31.870

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:25.875

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:22:22.882

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B04140B05294F00050521E305, dni:03C1, endpoint:01, cluster:0B04, size:14, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:05E3, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285]]]

dev:13812026-04-15 22:22:22.013

debug

SPOTLIGHTS BATHROOM : Health Status : Last report received 32 seconds ago.

dev:13812026-04-15 22:22:19.884

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B041E0B05293D000505219E040805213800, dni:03C1, endpoint:01, cluster:0B04, size:1E, attrId:050B, encoding:29, command:0A, value:003D, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:049E, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285], [value:0038, encoding:21, attrId:0508, consumedBytes:5, attrInt:1288]]]

dev:13812026-04-15 22:22:16.882

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B04140B05290D000505213E01, dni:03C1, endpoint:01, cluster:0B04, size:14, attrId:050B, encoding:29, command:0A, value:000D, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:013E, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285]]]

dev:13812026-04-15 22:22:15.860

debug

SPOTLIGHTS BATHROOM : Real Level : 50

dev:13812026-04-15 22:22:15.857

info

SPOTLIGHTS BATHROOM : Level : 50

dev:13812026-04-15 22:22:15.855

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100080800002081, dni:03C1, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:81, clusterInt:8, attrInt:0]

dev:13812026-04-15 22:22:15.849

info

SPOTLIGHTS BATHROOM : Switch : On

dev:13812026-04-15 22:22:15.846

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100060800001001, dni:03C1, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]

dev:13812026-04-15 22:22:10.884

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B04140B052900000505214100, dni:03C1, endpoint:01, cluster:0B04, size:14, attrId:050B, encoding:29, command:0A, value:0000, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:0041, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285]]]

dev:13812026-04-15 22:22:07.886

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B041E0B05290500050521C5000805210A00, dni:03C1, endpoint:01, cluster:0B04, size:1E, attrId:050B, encoding:29, command:0A, value:0005, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:00C5, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285], [value:000A, encoding:21, attrId:0508, consumedBytes:5, attrInt:1288]]]

dev:13812026-04-15 22:22:04.885

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B04140B052936000505212304, dni:03C1, endpoint:01, cluster:0B04, size:14, attrId:050B, encoding:29, command:0A, value:0036, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:0423, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285]]]

dev:13812026-04-15 22:22:03.127

debug

SPOTLIGHTS BATHROOM : Real Level : 50

dev:13812026-04-15 22:22:03.125

info

SPOTLIGHTS BATHROOM : Level : 50

dev:13812026-04-15 22:22:03.095

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100080800002081, dni:03C1, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:81, clusterInt:8, attrInt:0]

dev:13812026-04-15 22:22:03.092

info

SPOTLIGHTS BATHROOM : Switch : Off

dev:13812026-04-15 22:22:03.089

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100060800001000, dni:03C1, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]

dev:13812026-04-15 22:21:58.884

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294E00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004E, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:55.887

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:52.903

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294E00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004E, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:49.891

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:46.892

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:43.901

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:40.903

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05295000, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:0050, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:32.642

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294F00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004F, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:28.903

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0B05294E00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:050B, encoding:29, command:0A, value:004E, clusterInt:2820, attrInt:1291]

dev:13812026-04-15 22:21:25.910

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B041E0B05294D00050521D3050805214600, dni:03C1, endpoint:01, cluster:0B04, size:1E, attrId:050B, encoding:29, command:0A, value:004D, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:05D3, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285], [value:0046, encoding:21, attrId:0508, consumedBytes:5, attrInt:1288]]]

dev:13812026-04-15 22:21:22.910

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B04140B05291F000505219902, dni:03C1, endpoint:01, cluster:0B04, size:14, attrId:050B, encoding:29, command:0A, value:001F, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:0299, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285]]]

dev:13812026-04-15 22:21:22.015

debug

SPOTLIGHTS BATHROOM : Health Status : Last report received 5 seconds ago.

dev:13812026-04-15 22:21:20.818

debug

SPOTLIGHTS BATHROOM : Real Level : 50

dev:13812026-04-15 22:21:20.816

info

SPOTLIGHTS BATHROOM : Level : 50

dev:13812026-04-15 22:21:20.806

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100080800002081, dni:03C1, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:81, clusterInt:8, attrInt:0]

dev:13812026-04-15 22:21:20.800

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0805212A00, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:0508, encoding:21, command:0A, value:002A, clusterInt:2820, attrInt:1288]

dev:13812026-04-15 22:21:20.028

debug

SPOTLIGHTS BATHROOM : Real Level : 3

dev:13812026-04-15 22:21:20.026

info

SPOTLIGHTS BATHROOM : Level : 3

dev:13812026-04-15 22:21:20.023

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010008080000200A, dni:03C1, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:0A, clusterInt:8, attrInt:0]

dev:13812026-04-15 22:21:20.021

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B04140B05292E000505218E03, dni:03C1, endpoint:01, cluster:0B04, size:14, attrId:050B, encoding:29, command:0A, value:002E, clusterInt:2820, attrInt:1291, additionalAttrs:[[value:038E, encoding:21, attrId:0505, consumedBytes:5, attrInt:1285]]]

dev:13812026-04-15 22:21:19.948

info

SPOTLIGHTS BATHROOM : Switch : On

dev:13812026-04-15 22:21:19.942

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100060800001001, dni:03C1, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0]

dev:13812026-04-15 22:21:19.828

debug

SPOTLIGHTS BATHROOM : Digital Command : Acknowledged by device.

dev:13812026-04-15 22:21:19.826

debug

SPOTLIGHTS BATHROOM : Parse : [raw:catchall: 0104 0006 01 01 0040 00 03C1 00 00 0000 0B 01 0100, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:03C1, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[01, 00]]

dev:13812026-04-15 22:21:19.796

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C1010B040A0805214600, dni:03C1, endpoint:01, cluster:0B04, size:0A, attrId:0508, encoding:21, command:0A, value:0046, clusterInt:2820, attrInt:1288]

dev:13812026-04-15 22:21:19.759

debug

SPOTLIGHTS BATHROOM : on()

dev:13812026-04-15 22:21:17.728

debug

SPOTLIGHTS BATHROOM : Real Level : 50

dev:13812026-04-15 22:21:17.727

info

SPOTLIGHTS BATHROOM : Level : 50

dev:13812026-04-15 22:21:17.725

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100080800002081, dni:03C1, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, command:0A, value:81, clusterInt:8, attrInt:0]

dev:13812026-04-15 22:21:17.723

info

SPOTLIGHTS BATHROOM : Switch : Off

dev:13812026-04-15 22:21:17.719

debug

SPOTLIGHTS BATHROOM : Parse : [raw:03C10100060800001000, dni:03C1, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0]

dev:13812026-04-15 22:21:16.907

debug

SPOTLIGHTS BATHROOM : Digital Command : Acknowledged by device.

dev:13812026-04-15 22:21:16.905

debug

SPOTLIGHTS BATHROOM : Parse : [raw:catchall: 0104 0006 01 01 0040 00 03C1 00 00 0000 0B 01 0000, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:03C1, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]

dev:13812026-04-15 22:21:16.806

debug

SPOTLIGHTS BATHROOM : off()