From 47522facc710e74b0a1e8c2c05f66d349e2ca5e0 Mon Sep 17 00:00:00 2001 From: jackchi Date: Tue, 25 Oct 2016 16:01:17 -0700 Subject: [PATCH] [CHF-429] Device Health enrollment refactored into updated() from configure() --- .../cree-bulb.src/cree-bulb.groovy | 23 ++++++-- .../smartpower-outlet.groovy | 15 ++++- .../smartsense-moisture-sensor.groovy | 13 ++++- .../smartsense-motion-sensor.groovy | 13 ++++- .../smartsense-multi-sensor.groovy | 55 +++++++++++-------- .../smartsense-open-closed-sensor.groovy | 14 ++++- .../smartsense-temp-humidity-sensor.groovy | 13 ++++- .../zigbee-dimmer.src/zigbee-dimmer.groovy | 14 ++++- .../zigbee-rgbw-bulb.groovy | 17 +++++- ...zigbee-white-color-temperature-bulb.groovy | 16 +++++- 10 files changed, 150 insertions(+), 43 deletions(-) diff --git a/devicetypes/smartthings/cree-bulb.src/cree-bulb.groovy b/devicetypes/smartthings/cree-bulb.src/cree-bulb.groovy index 69d26f7..4fb4599 100644 --- a/devicetypes/smartthings/cree-bulb.src/cree-bulb.groovy +++ b/devicetypes/smartthings/cree-bulb.src/cree-bulb.groovy @@ -59,6 +59,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + // Parse incoming device messages to generate events def parse(String description) { log.debug "description is $description" @@ -96,6 +105,14 @@ def refresh() { zigbee.onOffRefresh() + zigbee.levelRefresh() } +def configureHealthCheck() { + log.debug "configureHealthCheck" + unschedule("healthPoll") + runEvery5Minutes("healthPoll") + // Device-Watch allows 2 check-in misses from device + sendEvent(name: "checkInterval", value: 60 * 12, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} + def healthPoll() { log.debug "healthPoll()" def cmds = zigbee.onOffRefresh() + zigbee.levelRefresh() @@ -103,9 +120,5 @@ def healthPoll() { } def configure() { - unschedule() - runEvery5Minutes("healthPoll") - // Device-Watch allows 2 check-in misses from device - sendEvent(name: "checkInterval", value: 60 * 12, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) - zigbee.onOffRefresh() + zigbee.levelRefresh() + refresh() } diff --git a/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy b/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy index d96dd77..ef81fc5 100644 --- a/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy +++ b/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy @@ -74,6 +74,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + // Parse incoming device messages to generate events def parse(String description) { log.debug "description is $description" @@ -140,10 +149,14 @@ def refresh() { zigbee.onOffRefresh() + zigbee.electricMeasurementPowerRefresh() } -def configure() { +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 10 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} + +def configure() { + // OnOff minReportTime 0 seconds, maxReportTime 5 min. Reporting interval if no activity refresh() + zigbee.onOffConfig(0, 300) + powerConfig() diff --git a/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy b/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy index f214cbd..8ff9180 100644 --- a/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy +++ b/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy @@ -84,6 +84,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + def parse(String description) { log.debug "description: $description" @@ -303,11 +312,13 @@ def refresh() { return refreshCmds + enrollResponse() } -def configure() { +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} +def configure() { // temperature minReportTime 30 seconds, maxReportTime 5 min. Reporting interval if no activity // battery minReport 30 seconds, maxReportTime 6 hrs by default return refresh() + zigbee.batteryConfig() + zigbee.temperatureConfig(30, 300) // send refresh cmds as part of config diff --git a/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy b/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy index d02d41d..a9f0f52 100644 --- a/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy +++ b/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy @@ -88,6 +88,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + def parse(String description) { log.debug "description: $description" @@ -318,11 +327,13 @@ def refresh() { return refreshCmds + enrollResponse() } -def configure() { +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} +def configure() { // temperature minReportTime 30 seconds, maxReportTime 5 min. Reporting interval if no activity // battery minReport 30 seconds, maxReportTime 6 hrs by default return refresh() + zigbee.batteryConfig() + zigbee.temperatureConfig(30, 300) // send refresh cmds as part of config diff --git a/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy b/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy index 94104b9..b1c333a 100644 --- a/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy +++ b/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy @@ -115,6 +115,34 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "updated called" + log.info "garage value : $garageSensor" + if (garageSensor == "Yes") { + def descriptionText = "Updating device to garage sensor" + if (device.latestValue("status") == "open") { + sendEvent(name: 'status', value: 'garage-open', descriptionText: descriptionText, translatable: true) + } + else if (device.latestValue("status") == "closed") { + sendEvent(name: 'status', value: 'garage-closed', descriptionText: descriptionText, translatable: true) + } + } + else { + def descriptionText = "Updating device to open/close sensor" + if (device.latestValue("status") == "garage-open") { + sendEvent(name: 'status', value: 'open', descriptionText: descriptionText, translatable: true) + } + else if (device.latestValue("status") == "garage-closed") { + sendEvent(name: 'status', value: 'closed', descriptionText: descriptionText, translatable: true) + } + } + configureHealthCheck() +} + def parse(String description) { Map map = [:] if (description?.startsWith('catchall:')) { @@ -246,29 +274,6 @@ private Map parseIasMessage(String description) { return resultMap } -def updated() { - log.debug "updated called" - log.info "garage value : $garageSensor" - if (garageSensor == "Yes") { - def descriptionText = "Updating device to garage sensor" - if (device.latestValue("status") == "open") { - sendEvent(name: 'status', value: 'garage-open', descriptionText: descriptionText, translatable: true) - } - else if (device.latestValue("status") == "closed") { - sendEvent(name: 'status', value: 'garage-closed', descriptionText: descriptionText, translatable: true) - } - } - else { - def descriptionText = "Updating device to open/close sensor" - if (device.latestValue("status") == "garage-open") { - sendEvent(name: 'status', value: 'open', descriptionText: descriptionText, translatable: true) - } - else if (device.latestValue("status") == "garage-closed") { - sendEvent(name: 'status', value: 'closed', descriptionText: descriptionText, translatable: true) - } - } -} - def getTemperature(value) { def celsius = Integer.parseInt(value, 16).shortValue() / 100 if(getTemperatureScale() == "C"){ @@ -411,11 +416,13 @@ def refresh() { return refreshCmds + enrollResponse() } -def configure() { +def configureHealthCheck(){ // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} +def configure() { log.debug "Configuring Reporting" // temperature minReportTime 30 seconds, maxReportTime 5 min. Reporting interval if no activity diff --git a/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy b/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy index 7d411f5..483f31a 100644 --- a/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy +++ b/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy @@ -75,6 +75,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + def parse(String description) { log.debug "description: $description" @@ -265,11 +274,12 @@ def refresh() { return refreshCmds + enrollResponse() } -def configure() { +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) - +} +def configure() { log.debug "Configuring Reporting, IAS CIE, and Bindings." // temperature minReportTime 30 seconds, maxReportTime 5 min. Reporting interval if no activity diff --git a/devicetypes/smartthings/smartsense-temp-humidity-sensor.src/smartsense-temp-humidity-sensor.groovy b/devicetypes/smartthings/smartsense-temp-humidity-sensor.src/smartsense-temp-humidity-sensor.groovy index 638b9d4..07557d5 100644 --- a/devicetypes/smartthings/smartsense-temp-humidity-sensor.src/smartsense-temp-humidity-sensor.groovy +++ b/devicetypes/smartthings/smartsense-temp-humidity-sensor.src/smartsense-temp-humidity-sensor.groovy @@ -69,6 +69,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + def parse(String description) { log.debug "description: $description" @@ -269,11 +278,13 @@ def refresh() zigbee.readAttribute(0x0001, 0x0020) } -def configure() { +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} +def configure() { log.debug "Configuring Reporting and Bindings." def humidityConfigCmds = [ "zdo bind 0x${device.deviceNetworkId} 1 1 0xFC45 {${device.zigbeeId}} {}", "delay 500", diff --git a/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy b/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy index ef17d94..280caaf 100644 --- a/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy +++ b/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy @@ -48,6 +48,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + // Parse incoming device messages to generate events def parse(String description) { log.debug "description is $description" @@ -100,12 +109,13 @@ def refresh() { zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.onOffConfig(0, 300) + zigbee.levelConfig() } -def configure() { - log.debug "Configuring Reporting and Bindings." +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 10 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} +def configure() { // OnOff minReportTime 0 seconds, maxReportTime 5 min. Reporting interval if no activity zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.onOffConfig(0, 300) + zigbee.levelConfig() } diff --git a/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy b/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy index aa4defb..9e13b39 100644 --- a/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy +++ b/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy @@ -70,6 +70,16 @@ metadata { } } + +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + //Globals private getATTRIBUTE_HUE() { 0x0000 } private getATTRIBUTE_SATURATION() { 0x0001 } @@ -138,16 +148,17 @@ def ping() { } def refresh() { + // OnOff minReportTime 0 seconds, maxReportTime 5 min. Reporting interval if no activity zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.readAttribute(COLOR_CONTROL_CLUSTER, ATTRIBUTE_COLOR_TEMPERATURE) + zigbee.readAttribute(COLOR_CONTROL_CLUSTER, ATTRIBUTE_HUE) + zigbee.readAttribute(COLOR_CONTROL_CLUSTER, ATTRIBUTE_SATURATION) + zigbee.onOffConfig(0, 300) + zigbee.levelConfig() + zigbee.colorTemperatureConfig() + zigbee.configureReporting(COLOR_CONTROL_CLUSTER, ATTRIBUTE_HUE, 0x20, 1, 3600, 0x01) + zigbee.configureReporting(COLOR_CONTROL_CLUSTER, ATTRIBUTE_SATURATION, 0x20, 1, 3600, 0x01) } -def configure() { - log.debug "Configuring Reporting and Bindings." +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 10 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} - // OnOff minReportTime 0 seconds, maxReportTime 5 min. Reporting interval if no activity +def configure() { refresh() } diff --git a/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy b/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy index 15a83f6..92779ce 100644 --- a/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy +++ b/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy @@ -69,6 +69,15 @@ metadata { } } +def installed() { + log.debug "${device} installed" +} + +def updated() { + log.debug "${device} updated" + configureHealthCheck() +} + // Parse incoming device messages to generate events def parse(String description) { log.debug "description is $description" @@ -121,16 +130,17 @@ def ping() { } def refresh() { + // OnOff minReportTime 0 seconds, maxReportTime 5 min. Reporting interval if no activity zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.colorTemperatureRefresh() + zigbee.onOffConfig(0, 300) + zigbee.levelConfig() + zigbee.colorTemperatureConfig() } -def configure() { - log.debug "Configuring Reporting and Bindings." +def configureHealthCheck() { // Device-Watch allows 3 check-in misses from device (plus 1 min lag time) // enrolls with default periodic reporting until newer 5 min interval is confirmed sendEvent(name: "checkInterval", value: 3 * 10 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID]) +} - // OnOff minReportTime 0 seconds, maxReportTime 5 min. Reporting interval if no activity +def configure() { refresh() }