Added heartbeat to OSRAM bulb and Smartpower Outlet

-Added heartbeat attribute
-Event triggered each poll or check in
This commit is contained in:
larsfinander
2015-08-04 17:01:10 -07:00
parent 6ad3c4fd7a
commit 21095bde5e
2 changed files with 18 additions and 5 deletions

View File

@@ -18,6 +18,8 @@ metadata {
capability "Sensor"
attribute "colorName", "string"
// heartbeat is updated at every poll
attribute "heartbeat", "string"
fingerprint profileId: "0104", inClusters: "0000,0003,0004,0005,0006,0008,0300,0B04,FC0F", outClusters: "0019", manufacturer: "OSRAM", model: "Classic A60 TW"
@@ -93,16 +95,21 @@ def parse(String description) {
log.trace "descMap : $descMap"
if (descMap.cluster == "0300") {
// trigger heartbeat
def hb = createEvent(name: "heartbeat", value: "alive", isStateChange: true, displayed:false)
log.debug descMap.value
def tempInMired = convertHexToInt(descMap.value)
def tempInKelvin = Math.round(1000000/tempInMired)
log.trace "temp in kelvin: $tempInKelvin"
sendEvent(name: "colorTemperature", value: tempInKelvin, displayed:false)
def result = createEvent(name: "colorTemperature", value: tempInKelvin, displayed:false)
return [result, hb]
}
else if(descMap.cluster == "0008"){
def dimmerValue = Math.round(convertHexToInt(descMap.value) * 100 / 255)
log.debug "dimmer value is $dimmerValue"
sendEvent(name: "level", value: dimmerValue)
def result = createEvent(name: "level", value: dimmerValue)
return result
}
}
else {
@@ -189,7 +196,7 @@ def poll(){
}
def setLevel(value) {
state.levelValue = (value==null) ? 100 : value
state.levelValue = (value==null) ? 100 : value
log.trace "setLevel($value)"
def cmds = []

View File

@@ -14,6 +14,9 @@ metadata {
capability "Refresh"
capability "Sensor"
// heartbeat is updated every time device checks in
attribute "heartbeat", "string"
fingerprint profileId: "0104", inClusters: "0000,0003,0004,0005,0006,0B04,0B05", outClusters: "0019"
}
@@ -62,6 +65,9 @@ def parse(String description) {
name = "power"
// assume 16 bit signed for encoding and power divisor is 10
value = Integer.parseInt(reportValue, 16) / 10
// trigger heartbeat
sendEvent(name: "heartbeat", value: "alive", isStateChange: true, displayed:false)
}
} else if (description?.startsWith("on/off:")) {
log.debug "Switch command"
@@ -100,7 +106,7 @@ def refresh() {
def configure() {
[
"zdo bind 0x${device.deviceNetworkId} 1 1 6 {${device.zigbeeId}} {}", "delay 200",
"zdo bind 0x${device.deviceNetworkId} 1 1 0xB04 {${device.zigbeeId}} {}"
"zdo bind 0x${device.deviceNetworkId} 1 1 6 {${device.zigbeeId}} {}", "delay 200",
"zdo bind 0x${device.deviceNetworkId} 1 1 0xB04 {${device.zigbeeId}} {}"
]
}