Skip to content

Commit

Permalink
Merge pull request SmartThingsCommunity#57759 from SmartThingsCommuni…
Browse files Browse the repository at this point in the history
…ty/acceptance

Rolling up acceptance to production for deploy
  • Loading branch information
greens authored Feb 9, 2021
2 parents 05e3ddb + 321219a commit 0f021bf
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@ metadata {
capability "Refresh"
capability "Health Check"
capability "Sensor"

fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000,0001,0003,0500", outClusters: "0003", manufacturer: "eWeLink", model: "DS01", deviceJoinName: "eWeLink Open/Closed Sensor" //eWeLink Door Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000,0003,0500,0001", manufacturer: "ORVIBO", model: "e70f96b3773a4c9283c6862dbafb6a99", deviceJoinName: "Orvibo Open/Closed Sensor"
fingerprint inClusters: "0000,0001,0003,000F,0020,0500", outClusters: "000A,0019", manufacturer: "Aurora", model: "WindowSensor51AU", deviceJoinName: "Aurora Open/Closed Sensor" //Aurora Smart Door/Window Sensor
fingerprint manufacturer: "Aurora", model: "DoorSensor50AU", deviceJoinName: "Aurora Open/Closed Sensor" // Raw Description: 01 0104 0402 00 06 0000 0001 0003 0020 0500 0B05 01 0019 //Aurora Smart Door/Window Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000,0003,0500,0001", manufacturer: "HEIMAN", model: "DoorSensor-N", deviceJoinName: "HEIMAN Open/Closed Sensor" //HEIMAN Door Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000, 0001, 0500", outClusters: "0019", manufacturer: "Third Reality, Inc", model: "3RDS17BZ", deviceJoinName: "ThirdReality Door Sensor" //ThirdReality Door Sensor
}

simulator {
Expand Down Expand Up @@ -105,7 +107,13 @@ def parse(String description) {

def installed() {
log.debug "call installed()"
sendEvent(name: "checkInterval", value:20 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])
def manufacturer = getDataValue("manufacturer")

if (manufacturer == "Third Reality, Inc") {
//ThirdReality Door Sensor do not set checkInterval for power-saving.
} else {
sendEvent(name: "checkInterval", value:20 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])
}
}
/**
* PING is used by Device-Watch in attempt to reach the Device
Expand All @@ -119,7 +127,7 @@ def refresh() {
log.debug "Refreshing Battery and ZONE Status"
def manufacturer = getDataValue("manufacturer")
def refreshCmds = zigbee.readAttribute(zigbee.IAS_ZONE_CLUSTER, zigbee.ATTRIBUTE_IAS_ZONE_STATUS)
if (manufacturer == "ORVIBO" || manufacturer == "eWeLink" || manufacturer == "HEIMAN") {
if (manufacturer == "ORVIBO" || manufacturer == "eWeLink" || manufacturer == "HEIMAN" || manufacturer == "Third Reality, Inc") {
refreshCmds += zigbee.readAttribute(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0021)
} else { // this is actually just supposed to be for Aurora, but we'll make it the default as it's more widely supported
refreshCmds += zigbee.readAttribute(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0020)
Expand All @@ -130,7 +138,9 @@ def refresh() {
def configure() {
def manufacturer = getDataValue("manufacturer")

if (manufacturer == "eWeLink") {
if (manufacturer == "Third Reality, Inc") {
//ThirdReality Door Sensor do not set checkInterval for power-saving.
} else if (manufacturer == "eWeLink") {
sendEvent(name: "checkInterval", value:2 * 60 * 60 + 5 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])
} else {
sendEvent(name: "checkInterval", value:20 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])
Expand All @@ -143,6 +153,8 @@ def configure() {
cmds = zigbee.enrollResponse() + zigbee.configureReporting(zigbee.IAS_ZONE_CLUSTER, zigbee.ATTRIBUTE_IAS_ZONE_STATUS, DataType.BITMAP16, 30, 60 * 5, null) + zigbee.batteryConfig()
} else if (manufacturer == "eWeLink" || manufacturer == "HEIMAN") {
cmds = zigbee.enrollResponse() + zigbee.configureReporting(zigbee.IAS_ZONE_CLUSTER, zigbee.ATTRIBUTE_IAS_ZONE_STATUS, DataType.BITMAP16, 30, 60 * 5, null) + zigbee.configureReporting(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0021, DataType.UINT8, 30, 600, 1)
} else if (manufacturer == "Third Reality, Inc") {
cmds = zigbee.readAttribute(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0021)
}
cmds += refresh()
cmds
Expand All @@ -151,11 +163,15 @@ def configure() {
def getBatteryPercentageResult(rawValue) {
log.debug "Battery Percentage rawValue = ${rawValue} -> ${rawValue / 2}%"
def result = [:]

def manufacturer = getDataValue("manufacturer")
if (0 <= rawValue && rawValue <= 200) {
result.name = 'battery'
result.translatable = true
if (manufacturer == "Third Reality, Inc") {
result.value = Math.round(rawValue)
} else {
result.value = Math.round(rawValue / 2)
}
result.descriptionText = "${device.displayName} battery was ${result.value}%"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
# under the License.
# Korean (ko)
# Device Preferences
'''Section 1 Title'''.fr=Section 1 Title (French)
'''Section 1 Description'''.fr=Section 1 Description (French)
'''Option 1 Value'''.fr=Option 1 Value (French)
'''Enum Types Description'''.fr=Enum Types Description (French)
'''Enum Description (key/value options)'''.fr=Enum Description (key/value options) (French)
'''Enum1 - Option A Value'''.fr=Enum1 - Option A Value (French)
'''default password'''.fr=default password (French)

'''Section 1 Title'''.es=Section 1 Title (Spanish)
'''Section 1 Description'''.es=Section 1 Description (Spanish)
'''Option 1 Value'''.es=Option 1 Value (Spanish)
'''Enum Types Description'''.es=Enum Types Description (Spanish)
'''Enum Description (key/value options)'''.es=Enum Description (key/value options) (Spanish)
'''Enum1 - Option A Value'''.es=Enum1 - Option A Value (Spanish)
'''default password'''.es=default password (Spanish)
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ metadata {
capability "Refresh"
capability "Health Check"
capability "Sensor"

fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000,0001,0003,0500", outClusters: "0003", manufacturer: "eWeLink", model: "MS01", deviceJoinName: "eWeLink Motion Sensor" //eWeLink Motion Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000,0003,0500,0001", manufacturer: "ORVIBO", model: "895a2d80097f4ae2b2d40500d5e03dcc", deviceJoinName: "Orvibo Motion Sensor" //Orvibo Motion Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000,0003,0500,0001,FFFF", manufacturer: "Megaman", model: "PS601/z1", deviceJoinName: "INGENIUM Motion Sensor" //INGENIUM ZB PIR Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000, 0003, 0500, 0001", outClusters: "0019", manufacturer: "HEIMAN", model: "PIRSensor-N", deviceJoinName: "HEIMAN Motion Sensor" //HEIMAN Motion Sensor
fingerprint profileId: "0104", deviceId: "0402", inClusters: "0000, 0001, 0500", outClusters: "0019", manufacturer: "Third Reality, Inc", model: "3RMS16BZ", deviceJoinName: "ThirdReality Motion Sensor" //ThirdReality Motion Sensor
}
simulator {
status "active": "zone status 0x0001 -- extended status 0x00"
Expand Down Expand Up @@ -118,16 +120,22 @@ def parseIasMessage(ZoneStatus zs) {
}

def supportsRestoreNotify() {
getDataValue("manufacturer") == "eWeLink"
return (getDataValue("manufacturer") == "eWeLink") || (getDataValue("manufacturer") == "Third Reality, Inc")
}

def getBatteryPercentageResult(rawValue) {
log.debug "Battery Percentage rawValue = ${rawValue} -> ${rawValue / 2}%"
def result = [:]
def manufacturer = getDataValue("manufacturer")

if (0 <= rawValue && rawValue <= 200) {
result.name = 'battery'
result.translatable = true
result.value = Math.round(rawValue / 2)
if (manufacturer == "Third Reality, Inc") {
result.value = Math.round(rawValue)
} else {
result.value = Math.round(rawValue / 2)
}
result.descriptionText = "${device.displayName} battery was ${result.value}%"
}
return result
Expand Down Expand Up @@ -164,6 +172,8 @@ def configure() {
if (manufacturer == "eWeLink") {
sendEvent(name: "checkInterval", value:2 * 60 * 60 + 5 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])
return zigbee.configureReporting(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0021, DataType.UINT8, 30, 3600, 0x10) + refresh()
} else if (manufacturer == "Third Reality, Inc") {
return zigbee.readAttribute(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0021)
} else {
sendEvent(name: "checkInterval", value:20 * 60 + 2*60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])
return zigbee.configureReporting(zigbee.POWER_CONFIGURATION_CLUSTER, 0x0021, DataType.UINT8, 30, 1200, 0x10) + refresh()
Expand Down

0 comments on commit 0f021bf

Please sign in to comment.