I picked up 6 @ $18 each. I’ll make an attempt at my first zigbee device handler.
I got these on clearance at HD also but my plumber wants $250 to install the valve with a manual bypass. Seems like a cool device but I just can’t justify spending over $400 on it. I’ll take my chances with homeowners insurance 
That is a good price for installation. I spent double that for the same thing.
Good to know,(it’s a side job and so it wasn’t a retail price) I didn’t think it was a rip off, but rather I have bigger expenses now and don’t want to spend that on this need.
@dhelm2 / @John_Luikart - Have either of you made progress? I’ve also started but a bit stuck. I’ve never done a zigbee device before and the documentation is a bear. Still working…
I looked through the code for the smartsense moisture sensor that John_Luikart posted. Refresh is called at line 303, those two commands appear to be working to get us the necessary battery and temperature info. At the end of the refresh the code calls enroleResponse(), it looks as if this is asking the Zigbee device to subscribe to the network, perhaps this needs to be tweaked before it knows that something is listening for the lead detected events?
And then there’s configure() which is probably doing something similar but might need to have the commands adjusted.
I’m still stumped. I’m not able to get any data from the sensor except when I call “refresh” and even then it’s only temperature and battery data, nothing regarding moisture.
I understand when you connect it to a wink hub it updates the firmware which fixes a battery drain issue.
Is it possible the device needs an update before it starts reporting the moisture state?
I am also stumped. I think they use a manufacturer specific attribute.
I picked up three more at $18 at my local HD for a total of 6. It will suck big time if we can’t get them to work.
I’ve been able to get Cluster 500 data from the device on refresh, but no idea what it means, and I still can’t get an alert back when the device detects water.
Code snippets…
Added cluster 0x0500 to the case statement in the parseCatchAll:
private Map parseCatchAllMessage(String description) {
Map resultMap = [:]
def cluster = zigbee.parse(description)
if (shouldProcessMessage(cluster)) {
switch(cluster.clusterId) {
case 0x0001:
log.debug "001 Cluster Data: ${cluster.data}"
resultMap = getBatteryResult(cluster.data.last())
break
case 0x0402:
// temp is last 2 data values. reverse to swap endian
log.debug "402 Cluster Data: ${cluster.data}"
String temp = cluster.data[-2..-1].reverse().collect { cluster.hex1(it) }.join()
def value = getTemperature(temp)
resultMap = getTemperatureResult(value)
break
case 0x0500:
log.debug "500 Cluster Data: ${cluster.data}"
break
}
}
else {
log.debug “Did not process message ${cluster}”
}
return resultMap
}
Added readAttribute to refresh for cluster 0x0500:
def refresh() {
log.debug "Refreshing"
def refreshCmds = [
zigbee.readAttribute(0x0402, 0x0000), “delay 200”,
zigbee.readAttribute(0x0001, 0x0020), “delay 200”,
zigbee.readAttribute(0x0500, 0x0000), “delay 200”
// “st rattr 0x${device.deviceNetworkId} 1 0x402 0”, “delay 200”,
// “st rattr 0x${device.deviceNetworkId} 1 1 0x20”, “delay 200”,
]
return refreshCmds + enrollResponse()
}
Attempting to configureReport for cluster 0x0500:
def configure() {
sendEvent(name: “checkInterval”, value: 7200, displayed: true)
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
log.debug "Configuring Reporting, IAS CIE, and Bindings."
def configCmds = [
// “zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}”, “delay 200”,
// “send 0x${device.deviceNetworkId} 1 1”, “delay 500”,
zigbee.configureReporting(0x0001, 0x0020, 0x20, 30, 21600, 0x01), "delay 500",
zigbee.configureReporting(0x0402, 0x0000, 0x29, 30, 3600, 0x0064), "delay 500",
zigbee.configureReporting(0x0500, 0x0000, 0x10, 0, 3600, null), "delay 500"
// “zdo bind 0x${device.deviceNetworkId} ${endpointId} 1 1 {${device.zigbeeId}} {}”, “delay 500”,
// “zcl global send-me-a-report 1 0x20 0x20 30 21600 {01}”, //checkin time 6 hrs
// “send 0x${device.deviceNetworkId} 1 1”, “delay 500”,
// “zdo bind 0x${device.deviceNetworkId} ${endpointId} 1 0x402 {${device.zigbeeId}} {}”, “delay 500”,
// “zcl global send-me-a-report 0x402 0 0x29 30 3600 {6400}”,
// “send 0x${device.deviceNetworkId} 1 1”, “delay 500”,
]
return configCmds + refresh() // send refresh cmds as part of config
}
Data returned is [0,0,134] while the device is in a non-alarm state
If the leaksmart unit detected water, would it send an Alarm report (Alarm on / off ) ?
Not sure if this is of any help, but playing with changing types to see what could possibly be sent, I received this debug log entry after briefly touching the sensor pins. Have not been able to repeat it.
283b2303-c1d6-4d74-af6d-2f513bd1e0d4 12:57:48 PM: debug [raw:0104 0006 01 01 0140 00 C48B 00 00 0000 0B 01 0081, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0140, messageType:00, dni:C48B, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 81]]
283b2303-c1d6-4d74-af6d-2f513bd1e0d4 12:57:48 PM: warn DID NOT PARSE MESSAGE for description : catchall: 0104 0006 01 01 0140 00 C48B 00 00 0000 0B 01 0081
Also interested in getting these working. Haven’t gotten them to pair yet.
@jksearles - Press and hold the button under the batter cover until it beeps it should start pairing then.
@whoismoses Thanks! I held it for about 2 minutes and it never beeped, so I let go and bingo, a loud beep followed by successful pairing. Not sure how long you have to hold it to reset it (probably not 2 minutes lol).
I think to reset it you have to take the batteries out and and hold the button when you put them back in. I did it last night. I can’t remember now.
To factory Reset the leakSMART Water Sensor: Press and hold the pairing button on the sensor for 5 seconds. If successful the sensor will beep and the blue LED on top will blink repeatedly.
Does you guys have a repo up? Looking for a pull and I will give it a few cycles.
Here you go, it’s a bit of a mess.
I implemented the stuff from @dhelm2’s last update but haven’t tested that yet.
Here’s a response from leakSmart, I asked for technical documentation…
Hello,
Zigbee publishes some information about their cluster. I’m sorry, we do not publish our specific cluster information or specifics on our Zigbee integration.
Regards,
David Jones
leakSMART