From 376779598aded8108f8966ac49f7547143b071d9 Mon Sep 17 00:00:00 2001 From: Vinay Rao Date: Mon, 15 Feb 2016 13:01:12 -0800 Subject: [PATCH] Prepping up v1 multi for garage door functionality --- .../smartsense-multi.groovy | 60 ++++++++++++++----- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/devicetypes/smartthings/smartsense-multi.src/smartsense-multi.groovy b/devicetypes/smartthings/smartsense-multi.src/smartsense-multi.groovy index a6d2d14..0450d09 100644 --- a/devicetypes/smartthings/smartsense-multi.src/smartsense-multi.groovy +++ b/devicetypes/smartthings/smartsense-multi.src/smartsense-multi.groovy @@ -22,6 +22,8 @@ metadata { capability "Battery" fingerprint profileId: "FC01", deviceId: "0139" + + attribute "status", "string" } simulator { @@ -102,7 +104,7 @@ def parse(String description) { } -private Map parseSingleMessage(description) { +private List parseSingleMessage(description) { def name = parseName(description) def value = parseValue(description) @@ -111,8 +113,9 @@ private Map parseSingleMessage(description) { def handlerName = value == 'open' ? 'opened' : value def isStateChange = isStateChange(device, name, value) - def results = [ - name: name, + def results = [] + results << createEvent( + name: "contact", value: value, unit: null, linkText: linkText, @@ -120,8 +123,18 @@ private Map parseSingleMessage(description) { handlerName: handlerName, isStateChange: isStateChange, displayed: displayed(description, isStateChange) - ] - log.debug "Parse results for $device: $results" + ) + + results << createEvent( + name: "status", + value: value, + unit: null, + linkText: linkText, + descriptionText: descriptionText, + handlerName: handlerName, + isStateChange: isStateChange, + displayed: displayed(description, isStateChange) + ) results } @@ -272,7 +285,7 @@ private List parseRssiLqiMessage(String description) { results } -private getContactResult(part, description) { +private List getContactResult(part, description) { def name = "contact" def value = part.endsWith("1") ? "open" : "closed" def handlerName = value == 'open' ? 'opened' : value @@ -280,16 +293,30 @@ private getContactResult(part, description) { def descriptionText = "$linkText was $handlerName" def isStateChange = isStateChange(device, name, value) - [ - name: name, - value: value, - unit: null, - linkText: linkText, - descriptionText: descriptionText, - handlerName: handlerName, - isStateChange: isStateChange, - displayed: displayed(description, isStateChange) - ] + def results = [] + results << createEvent( + name: "contact", + value: value, + unit: null, + linkText: linkText, + descriptionText: descriptionText, + handlerName: handlerName, + isStateChange: isStateChange, + displayed:false + ) + + results << createEvent( + name: "status", + value: value, + unit: null, + linkText: linkText, + descriptionText: descriptionText, + handlerName: handlerName, + isStateChange: isStateChange, + displayed: displayed(description, isStateChange) + ) + + results } private getAccelerationResult(part, description) { @@ -452,6 +479,7 @@ private Boolean isOrientationMessage(String description) { description ==~ /x:.*y:.*z:.*rssi:.*lqi:.*/ } +//Note: Not using this method anymore private String parseName(String description) { if (isSupportedDescription(description)) { return "contact"