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
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 ![]()
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. ![]()
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. ![]()
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 ![]()
![]()
![]()
@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. ![]()
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 ![]()
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! ![]()
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 ![]()
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 ![]()
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()


