From cf9d123aa0afda9375f3d640ac289d3d2a9907c8 Mon Sep 17 00:00:00 2001 From: Zach Varberg Date: Mon, 14 Nov 2016 11:06:09 -0600 Subject: [PATCH] Handle all messages in smartpower dimming outlet Previously the implementation of isKnownDescription didn't cover all possible messages that could be parsed and this caused null pointer exceptions with certain messages. This now handles all the possibilities. This resolves: https://smartthings.atlassian.net/browse/DVCSMP-2227 --- .../smartpower-dimming-outlet.groovy | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy b/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy index a4c240a..9539376 100644 --- a/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy +++ b/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy @@ -71,7 +71,7 @@ def parse(String description) { def event = [:] def finalResult = isKnownDescription(description) - if (finalResult != "false") { + if (finalResult) { log.info finalResult if (finalResult.type == "update") { log.info "$device updates: ${finalResult.value}" @@ -212,13 +212,16 @@ def isKnownDescription(description) { else if (descMap.cluster == "0B04" || descMap.clusterId == "0B04"){ isDescriptionPower(descMap) } + else { + return [:] + } } else if(description?.startsWith("on/off:")) { def switchValue = description?.endsWith("1") ? "on" : "off" return [type: "switch", value : switchValue] } else { - return "false" + return [:] } } @@ -252,7 +255,7 @@ def isDescriptionOnOff(descMap) { return [type: "switch", value : switchValue] } else { - return "false" + return [:] } } @@ -279,10 +282,9 @@ def isDescriptionLevel(descMap) { if (dimmerValue != -1){ return [type: "level", value : dimmerValue] - } else { - return "false" + return [:] } } @@ -304,7 +306,7 @@ def isDescriptionPower(descMap) { return [type: "power", value : powerValue] } else { - return "false" + return [:] } }