Sure.
I caution you about what I had said earlier, above. The bottom line is that when I connected another ZigBee device (an Orbit drip timer that is also ZigBee controlled, and purchased from Lowes) 1480 extraneous devices were automatically added which required me to manually delete them to get my hub back. Not only that, when I took my drip valve to Las Vegas NV and connected it to a hub which is in my account but 10 hours away, these unwanted devices connected even though the device type was not installed on that hub at all. All of these unwanted devices connected as a ZigBee Load Control Switch, as defined in the included device type.
Also note that I still use this device type and do not have any problems with it as designed, but I have not attempted to screw around with the Orbit valve since.
I do have several other ZigBee devices on both hubs with no problems encountered.
Here’s the device type code:
[CODE]
metadata {
// Automatically generated. Make future change here.
definition (name: “Zigbee Load Control Switch”, namespace: “GR_Load_Control”, author: “George Richards”, oauth: true) {
capability “Switch”
command "on"
command "off"
fingerprint profileId: "0104", inClusters: "0000,0003,0006", outClusters: "000A"
}
simulator {
// simulator metedata
status “on”:"on/off: 1"
status “off”:“on/off: 0”
reply "zcl on-off on":"on/off: 1"
reply "zcl on-off off":"on/off: 0"
}
tiles {
standardTile(“switch”, “device.switch”, width: 2, height: 2, canChangeIcon: true) {
state “off”, label: ‘Off’, action: “switch.on”, icon: “st.Outdoor.outdoor16”, backgroundColor: "#ffffff"
state “on”, label: ‘On’, action: “switch.off”, icon: “st.Outdoor.outdoor16”, backgroundColor: “#53a7c0”
}
main "switch"
details([“switch”])
}
}
// parse events into attributes
def parse(String description) {
log.info description
if (description?.startsWith(“catchall:”)) {
def value = name == “switch” ? (description?.endsWith(" 1") ? “on” : “off”) : null
def result = createEvent(name: name, value: value)
def msg = zigbee.parse(description)
log.debug "Parse returned ${result?.descriptionText}"
return result
log.trace msg
log.trace “data: $msg.data”
}
else {
def name = description?.startsWith(“on/off: “) ? “switch” : null
def value = name == “switch” ? (description?.endsWith(” 1”) ? “on” : “off”) : null
def result = createEvent(name: name, value: value)
log.debug "Parse returned ${result?.descriptionText}"
return result
}
}
// handle commands
def on() {
log.debug "Executing ‘on()’"
sendEvent(name: “switch”, value: “on”)
“st cmd 0x${device.deviceNetworkId} ${endpointId} 6 1 {}”
‘zcl on-off on’
}
def off() {
log.debug "Executing ‘off’"
sendEvent(name: “switch”, value: “off”)
“st cmd 0x${device.deviceNetworkId} ${endpointId} 6 0 {}”
‘zcl on-off off’
}
[/CODE]
Best of Luck.