From 69dd13f333d0f97d9f569fbdf5c7c0436681919c Mon Sep 17 00:00:00 2001 From: Parijat Das Date: Mon, 24 Apr 2017 12:25:52 +0530 Subject: [PATCH] Added healthcheck for SmartAlert Siren --- .../smartalert-siren.src/.st-ignore | 2 + .../smartalert-siren.src/README.md | 39 +++++++++++++++++++ .../smartalert-siren.groovy | 19 +++++++++ 3 files changed, 60 insertions(+) create mode 100644 devicetypes/smartthings/smartalert-siren.src/.st-ignore create mode 100644 devicetypes/smartthings/smartalert-siren.src/README.md diff --git a/devicetypes/smartthings/smartalert-siren.src/.st-ignore b/devicetypes/smartthings/smartalert-siren.src/.st-ignore new file mode 100644 index 0000000..71af75c --- /dev/null +++ b/devicetypes/smartthings/smartalert-siren.src/.st-ignore @@ -0,0 +1,2 @@ +.st-ignore +README.md \ No newline at end of file diff --git a/devicetypes/smartthings/smartalert-siren.src/README.md b/devicetypes/smartthings/smartalert-siren.src/README.md new file mode 100644 index 0000000..706ee37 --- /dev/null +++ b/devicetypes/smartthings/smartalert-siren.src/README.md @@ -0,0 +1,39 @@ +# Smartalert Siren + +Cloud Execution + +Works with: + +* [FortrezZ Siren Strobe Alarm](https://www.smartthings.com/works-with-smartthings/other/fortrezz-water-valve) + +## Table of contents + +* [Capabilities](#capabilities) +* [Health](#device-health) +* [Troubleshooting](#troubleshooting) + +## Capabilities + +* **Actuator** - represents that a Device has commands +* **Switch** - can detect state (possible values: on/off) +* **Sensor** - detects sensor events +* **Alarm** - allows for interacting with devices that serve as alarms +* **Health Check** - indicates ability to get device health notifications + +## Device Health + +FortrezZ Siren Strobe Alarm is polled by the hub. +As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed. +Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins. +Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for +the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row, +it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time. + +* __32min__ checkInterval + +## Troubleshooting + +If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range. +Pairing needs to be tried again by placing the device closer to the hub. +Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link: +* [FortrezZ Siren Strobe Alarm Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/202294760-FortrezZ-Siren-Strobe-Alarm) \ No newline at end of file diff --git a/devicetypes/smartthings/smartalert-siren.src/smartalert-siren.groovy b/devicetypes/smartthings/smartalert-siren.src/smartalert-siren.groovy index aaf2587..4481e76 100644 --- a/devicetypes/smartthings/smartalert-siren.src/smartalert-siren.groovy +++ b/devicetypes/smartthings/smartalert-siren.src/smartalert-siren.groovy @@ -21,10 +21,12 @@ metadata { capability "Switch" capability "Sensor" capability "Alarm" + capability "Health Check" command "test" fingerprint deviceId: "0x1100", inClusters: "0x26,0x71" + fingerprint mfr:"0084", prod:"0313", model:"010B", deviceJoinName: "FortrezZ Siren Strobe Alarm" } simulator { @@ -68,6 +70,16 @@ metadata { } } +def installed() { +// Device-Watch simply pings if no device events received for 32min(checkInterval) + sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID]) +} + +def updated() { +// Device-Watch simply pings if no device events received for 32min(checkInterval) + sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID]) +} + def on() { [ zwave.basicV1.basicSet(value: 0xFF).format(), @@ -149,3 +161,10 @@ def createEvents(physicalgraph.zwave.commands.basicv1.BasicReport cmd) def zwaveEvent(physicalgraph.zwave.Command cmd) { log.warn "UNEXPECTED COMMAND: $cmd" } + +/** + * PING is used by Device-Watch in attempt to reach the Device + * */ +def ping() { + secure(zwave.basicV1.basicGet()) +} \ No newline at end of file