diff --git a/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy b/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy index 0649c18af18..3102eea2704 100644 --- a/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy +++ b/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy @@ -135,6 +135,8 @@ def setupHealthCheck() { def installed() { sendEvent(name: "motion", value: "inactive", displayed: false) state.colorReceived = [red: null, green: null, blue: null] + state.setColor = [red: null, green: null, blue: null] + state.colorQueryFailures = 0 setupHealthCheck() } @@ -247,15 +249,30 @@ def zwaveEvent(switchcolorv3.SwitchColorReport cmd) { result << createEvent(name: "color", value: hexColor) // Send the color as hue and saturation def hsv = rgbToHSV(*colors) - result << createEvent(name: "hue", value: hsv.hue) - result << createEvent(name: "saturation", value: hsv.saturation) - // Reset the values - RGB_NAMES.collect { state.colorReceived[it] = null} + if (state.setColor.red == state.colorReceived.red && state.setColor.green == state.colorReceived.green && state.setColor.blue == state.colorReceived.blue) { + unschedule() + result << createEvent(name: "hue", value: hsv.hue) + result << createEvent(name: "saturation", value: hsv.saturation) + state.colorQueryFailures = 0 + } else { + if (++state.colorQueryFailures >= 6) { + sendHubCommand(commands([ + zwave.switchColorV3.switchColorSet(red: state.setColor.red, green: state.setColor.green, blue: state.setColor.blue), + queryAllColors() + ])) + } else { + runIn(2, "sendColorQueryCommands", [overwrite: true]) + } + } } result } +private sendColorQueryCommands() { + sendHubCommand(commands(queryAllColors())) +} + def zwaveEvent(physicalgraph.zwave.Command cmd) { // Handles all Z-Wave commands we aren't interested in log.debug "Unhandled $cmd" @@ -324,6 +341,7 @@ def setColor(value) { return } + state.setColor = [red: myred, green: mygreen, blue: myblue] cmds << zwave.switchColorV3.switchColorSet(red: myred, green: mygreen, blue: myblue) cmds << zwave.basicV1.basicGet() diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.apparentTemperature.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.apparentTemperature.json new file mode 100644 index 00000000000..e09e7d0a68b --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.apparentTemperature.json @@ -0,0 +1,32 @@ +{ + "name": "Apparent Temperature", + "attributes": { + "feelsLike": { + "schema": { + "type": "object", + "properties": { + "value": { + "title": "TemperatureValue", + "type": "number", + "minimum": -460, + "maximum": 10000 + }, + "unit": { + "type": "string", + "enum": [ + "F", + "C" + ] + } + }, + "additionalProperties": false, + "required": [ + "value", + "unit" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.astronomicalData.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.astronomicalData.json new file mode 100644 index 00000000000..580712fe207 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.astronomicalData.json @@ -0,0 +1,91 @@ +{ + "name": "Astronomical Data", + "attributes": { + "localSunrise": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "localSunset": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "sunriseDate": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "sunsetDate": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "city": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "timeZoneOffset": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.precipitation.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.precipitation.json new file mode 100644 index 00000000000..af66d52e047 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.precipitation.json @@ -0,0 +1,31 @@ +{ + "name": "Precipitation", + "attributes": { + "percentPrecip": { + "schema": { + "type": "object", + "properties": { + "value": { + "title": "IntegerPercent", + "type": "integer", + "minimum": 0, + "maximum": 100 + }, + "unit": { + "type": "string", + "enum": [ + "%" + ], + "default": "%" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.smartWeather.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.smartWeather.json new file mode 100644 index 00000000000..fac90437e04 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.smartWeather.json @@ -0,0 +1,21 @@ +{ + "name": "Smart Weather", + "attributes": { + "lastUpdate": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.ultravioletDescription.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.ultravioletDescription.json new file mode 100644 index 00000000000..5dc33becb1f --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.ultravioletDescription.json @@ -0,0 +1,21 @@ +{ + "name": "Ultraviolet Description", + "attributes": { + "uvDescription": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherAlert.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherAlert.json new file mode 100644 index 00000000000..743bc466e4d --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherAlert.json @@ -0,0 +1,35 @@ +{ + "name": "Weather Alert", + "attributes": { + "alert": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "alertKeys": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherForecast.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherForecast.json new file mode 100644 index 00000000000..e8677bb7516 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherForecast.json @@ -0,0 +1,63 @@ +{ + "name": "Weather Forecast", + "attributes": { + "forecastIcon": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "forecastToday": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "forecastTonight": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "forecastTomorrow": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherSummary.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherSummary.json new file mode 100644 index 00000000000..a680a801a28 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.weatherSummary.json @@ -0,0 +1,35 @@ +{ + "name": "Weather Summary", + "attributes": { + "weather": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "weatherIcon": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.windDirection.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.windDirection.json new file mode 100644 index 00000000000..d10625d4cd3 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.windDirection.json @@ -0,0 +1,21 @@ +{ + "name": "Wind Direction", + "attributes": { + "windVector": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.windSpeed.json b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.windSpeed.json new file mode 100644 index 00000000000..9994d651c48 --- /dev/null +++ b/devicetypes/smartthings/smartweather-station-tile.src/capability.stsmartweather.windSpeed.json @@ -0,0 +1,27 @@ +{ + "name": "Wind Speed", + "attributes": { + "wind": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "unit": { + "type": "string", + "enum": ["KPH", "MPH"], + "default": "KPH" + } + }, + "additionalProperties": false, + "required": [ + "value", + "unit" + ] + } + } + }, + "commands": { + } +} diff --git a/devicetypes/smartthings/smartweather-station-tile.src/smartweather-station-tile.groovy b/devicetypes/smartthings/smartweather-station-tile.src/smartweather-station-tile.groovy index 04849e96b6c..77c3dfbb558 100644 --- a/devicetypes/smartthings/smartweather-station-tile.src/smartweather-station-tile.groovy +++ b/devicetypes/smartthings/smartweather-station-tile.src/smartweather-station-tile.groovy @@ -22,9 +22,21 @@ metadata { capability "Temperature Measurement" capability "Relative Humidity Measurement" capability "Ultraviolet Index" + //capability "Wind Speed" // Not in production yet + capability "stsmartweather.windSpeed" // "Wind Speed" only supports m/s unit, however we want to create both events + capability "stsmartweather.windDirection" + capability "stsmartweather.apparentTemperature" + capability "stsmartweather.astronomicalData" + capability "stsmartweather.precipitation" + capability "stsmartweather.ultravioletDescription" + capability "stsmartweather.weatherAlert" + capability "stsmartweather.weatherForecast" + capability "stsmartweather.weatherSummary" capability "Sensor" capability "Refresh" + // While we have created a custom capability for these attributes, + // they will remain to support any custom DataManagement based SmartApps using them. attribute "localSunrise", "string" attribute "localSunset", "string" attribute "city", "string" @@ -150,7 +162,7 @@ metadata { state "default", label:'${currentValue}' } - standardTile("refresh", "device.weather", decoration: "flat", height: 1, width: 2) { + standardTile("refresh", "device.refresh", decoration: "flat", height: 1, width: 2) { state "default", label: "", action: "refresh", icon:"st.secondary.refresh" } @@ -211,7 +223,7 @@ def uninstalled() { // handle commands def poll() { - log.info "WUSTATION: Executing 'poll', location: ${location.name}" + log.debug "WUSTATION: Executing 'poll', location: ${location.name}" if (stationId) { pollUsingPwsId(stationId.toUpperCase()) } else { @@ -228,7 +240,7 @@ def pollUsingZipCode(String zipCode) { // Last update time stamp def timeZone = location.timeZone ?: timeZone(timeOfDay) def timeStamp = new Date().format("yyyy MMM dd EEE h:mm:ss a", location.timeZone) - sendEvent(name: "lastUpdate", value: timeStamp) + send(name: "lastUpdate", value: timeStamp) // Current conditions def tempUnits = getTemperatureScale() @@ -242,8 +254,8 @@ def pollUsingZipCode(String zipCode) { send(name: "humidity", value: obs.relativeHumidity, unit: "%") send(name: "weather", value: obs.wxPhraseShort) - send(name: "weatherIcon", value: obs.iconCode as String, displayed: false) - send(name: "wind", value: obs.windSpeed as String, unit: windUnits) // as String because of bug in determining state change of 0 numbers + send(name: "weatherIcon", value: obs.iconCode, displayed: false) + send(name: "wind", value: obs.windSpeed, unit: windUnits) send(name: "windVector", value: "${obs.windDirectionCardinal} ${obs.windSpeed} ${windUnits}") log.trace "Getting location info" def loc = getTwcLocation(zipCode).location @@ -258,7 +270,7 @@ def pollUsingZipCode(String zipCode) { def dtf = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") def sunriseDate = dtf.parse(obs.sunriseTimeLocal) - log.info "'${obs.sunriseTimeLocal}'" + log.debug "'${obs.sunriseTimeLocal}'" def sunsetDate = dtf.parse(obs.sunsetTimeLocal) @@ -276,13 +288,14 @@ def pollUsingZipCode(String zipCode) { def f = getTwcForecast(zipCode) if (f) { def icon = f.daypart[0].iconCode[0] ?: f.daypart[0].iconCode[1] - def value = f.daypart[0].precipChance[0] ?: f.daypart[0].precipChance[1] + def precip = f.daypart[0].precipChance[0] ?: f.daypart[0].precipChance[1] def narrative = f.daypart[0].narrative - send(name: "percentPrecip", value: value as String, unit: "%") - send(name: "forecastIcon", value: icon as String, displayed: false) - send(name: "forecastToday", value: narrative[0]) - send(name: "forecastTonight", value: narrative[1]) - send(name: "forecastTomorrow", value: narrative[2]) + + send(name: "percentPrecip", value: precip, unit: "%") + send(name: "forecastIcon", value: icon, displayed: false) + send(name: "forecastToday", value: narrative[0] ?: "-") + send(name: "forecastTonight", value: narrative[1] ?: "-") + send(name: "forecastTomorrow", value: narrative[2] ?: "-") } else { log.warn "Forecast not found" @@ -331,8 +344,8 @@ def pollUsingPwsId(String stationId) { send(name: "humidity", value: obs.humidity, unit: "%") send(name: "weather", value: "n/a") - send(name: "weatherIcon", value: null as String, displayed: false) - send(name: "wind", value: convertWindSpeed(obs[dataScale].windSpeed, dataScale, tempUnits) as String, unit: windUnits) // as String because of bug in determining state change of 0 numbers + send(name: "weatherIcon", value: null, displayed: false) + send(name: "wind", value: convertWindSpeed(obs[dataScale].windSpeed, dataScale, tempUnits), unit: windUnits) send(name: "windVector", value: "${obs.winddir}° ${convertWindSpeed(obs[dataScale].windSpeed, dataScale, tempUnits)} ${windUnits}") def cityValue = obs.neighborhood if (cityValue != device.currentValue("city")) { @@ -418,9 +431,41 @@ private localDate(timeZone) { df.format(new Date()) } -private send(map) { - log.debug "WUSTATION: event: $map" +// Create the new custom capability event if needed, +// but also send a legacy custom event for any DM-backed SmartApps using them. +private send(Map map) { + def eventConversion = [ + "localSunrise": "stsmartweather.astronomicalData.localSunrise", + "localSunset": "stsmartweather.astronomicalData.localSunset", + "city": "stsmartweather.astronomicalData.city", + "timeZoneOffset": "stsmartweather.astronomicalData.timeZoneOffset", + "weather": "stsmartweather.weatherSummary.weather", + "wind": "stsmartweather.windSpeed.wind", + "windVector": "stsmartweather.windDirection.windVector", + "weatherIcon": "stsmartweather.weatherSummary.weatherIcon", + "forecastIcon": "stsmartweather.weatherForecast.forecastIcon", + "feelsLike": "stsmartweather.apparentTemperature.feelsLike", + "percentPrecip": "stsmartweather.precipitation.percentPrecip", + "alert": "stsmartweather.weatherAlert.alert", + "alertKeys": "stsmartweather.weatherAlert.alertKeys", + "sunriseDate": "stsmartweather.astronomicalData.sunriseDate", + "sunsetDate": "stsmartweather.astronomicalData.sunsetDate", + "lastUpdate": "stsmartweather.smartWeather.lastUpdate", + "uvDescription": "stsmartweather.ultravioletDescription.uvDescription", + "forecastToday": "stsmartweather.weatherForecast.forecastToday", + "forecastTonight": "stsmartweather.weatherForecast.forecastTonight", + "forecastTomorrow": "stsmartweather.weatherForecast.forecastTomorrow" + ] + + //log.trace "WUSTATION: event: $map" sendEvent(map) + if (map.name && eventConversion.containsKey(map.name)) { + def newMap = map.clone() + newMap.name = eventConversion[map.name] + + //log.trace "WUSTATION: NEW event: $newMap" + sendEvent(newMap) + } } private estimateLux(obs, sunriseDate, sunsetDate) { diff --git a/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy b/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy index 0fccf5e67ce..2cd9d152fb2 100644 --- a/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy +++ b/devicetypes/smartthings/zigbee-dimmer.src/zigbee-dimmer.groovy @@ -41,6 +41,14 @@ metadata { fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0B05 ,1000, FEDC", outClusters: "000A, 0019", manufacturer: "Aurora", model: "FWG125Bulb50AU", deviceJoinName: "Aurora Light" //Aurora Dimmable Filament Vintage G125 fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0B05 ,1000, FEDC", outClusters: "000A, 0019", manufacturer: "Aurora", model: "FWA60Bulb50AU", deviceJoinName: "Aurora Light" //Aurora Dimmable Filament Vintage GLS + //CWD + // raw description "01 0104 0101 01 09 0000 0003 0004 0005 0006 0008 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.A806Edim-A001", deviceJoinName: "CWD Light" //model: "E27 dim", brand: "Collingwood" + // raw description "01 0104 0101 01 09 0000 0003 0004 0005 0006 0008 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.A806Bdim-A001", deviceJoinName: "CWD Light" //model: "BC dim", brand: "Collingwood" + // raw description "01 0104 0101 01 09 0000 0003 0004 0005 0006 0008 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.M350dim-A001", deviceJoinName: "CWD Light" //model: "GU10 dim", brand: "Collingwood" + // IKEA fingerprint manufacturer: "IKEA of Sweden", model: "TRADFRI bulb E27 WW 806lm", deviceJoinName: "IKEA Light" // raw description 01 0104 0101 01 07 0000 0003 0004 0005 0006 0008 1000 04 0005 0019 0020 1000 //IKEA TRÅDFRI LED Bulb fingerprint manufacturer: "IKEA of Sweden", model: "TRADFRI bulb E27 WW clear 250lm", deviceJoinName: "IKEA Light" //raw desc: 01 0104 0101 01 07 0000 0003 0004 0005 0006 0008 1000 04 0005 0019 0020 1000 //IKEA TRÅDFRI LED Bulb @@ -107,7 +115,7 @@ metadata { fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E1A-AC2", deviceJoinName: "Sengled Light" //Sengled DownLight fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E11-N13A", deviceJoinName: "Sengled Light" //Sengled Extra Bright Soft White fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E11-N14A", deviceJoinName: "Sengled Light" //Sengled Extra Bright Daylight - fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E21-N13A", deviceJoinName: "Sengled Light" //Sengled Soft White + fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E21-N13A", deviceJoinName: "Sengled Light" //Sengled Soft White fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E21-N14A", deviceJoinName: "Sengled Light" //Sengled Daylight fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E11-U21U31", deviceJoinName: "Sengled Light" //Sengled Element Touch fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05, FC01", outClusters: "0019", manufacturer: "sengled", model: "E13-A21", deviceJoinName: "Sengled Light" //Sengled LED Flood Light 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 547b2b0b2d4..c5314b7120d 100644 --- a/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy +++ b/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy @@ -44,7 +44,15 @@ metadata { fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 0B05, 1000, FEDC", outClusters: "000A, 0019", manufacturer: "Aurora", model: " RGBGU10Bulb50AU", deviceJoinName: "Aurora Light" //Aurora Smart RGBW fingerprint profileId: "0104", inClusters: "0000, 0004, 0003, 0006, 0008, 0005, 0300, FFFF, 1000", outClusters: "0019", manufacturer: "Aurora", model: "RGBBulb51AU", deviceJoinName: "Aurora Light" //Aurora RGBW GLS Lamp fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 1000, FFFF", outClusters: "0019", manufacturer: "Aurora", model: "RGBBulb51AU", deviceJoinName: "AOne Light" //AOne Smart RGBW GLS Lamp - + + //CWD + // raw description "01 0104 010D 01 0A 0000 0003 0004 0005 0006 0008 0300 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.A806Ergbw-A001", deviceJoinName: "CWD Light" //model: "E27 RGBW & Colour Tuneable", brand: "Collingwood" + // raw description "01 0104 010D 01 0A 0000 0003 0004 0005 0006 0008 0300 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.A806Brgbw-A001", deviceJoinName: "CWD Light" //model: "BC RGBW & Colour Tuneable", brand: "Collingwood" + // raw description "01 0104 010D 01 0A 0000 0003 0004 0005 0006 0008 0300 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.M350rgbw-A001", deviceJoinName: "CWD Light" //model: "GU10 RGBW & Colour Tuneable", brand: "Collingwood" + // Innr fingerprint profileId: "0104", inClusters: "0000, 0004, 0003, 0005, 0006, 0008, 0300, 1000", outClusters: "0019", manufacturer: "innr", model: "RB 285 C", deviceJoinName: "Innr Light", mnmn: "SmartThings", vid: "generic-rgbw-color-bulb-1800K-6500K" //Innr Smart Bulb Color fingerprint profileId: "0104", inClusters: "0000, 0004, 0003, 0005, 0006, 0008, 0300, 1000", outClusters: "0019", manufacturer: "innr", model: "BY 285 C", deviceJoinName: "Innr Light", mnmn: "SmartThings", vid: "generic-rgbw-color-bulb-1800K-6500K" //Innr Smart Bulb Color @@ -81,7 +89,7 @@ metadata { fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 0702, 0B05, FC03", outClusters: "0019", manufacturer: "sengled", model: "E11-U3E", deviceJoinName: "Sengled Element Color Plus", mnmn:"SmartThings", vid: "generic-rgbw-color-bulb-2000K-6500K" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 0702, 0B05, FC03", outClusters: "0019", manufacturer: "sengled", model: "E11-U2E", deviceJoinName: "Sengled Element Color Plus" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 0702, 0B05, FC03, FC04", outClusters: "0019", manufacturer: "sengled", model: "E1F-N5E", deviceJoinName: "Sengled Light" - + // Q Smart Lights fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 0B05, 1000, FEDC", outClusters: "000A, 0019", manufacturer: "Neuhaus Lighting Group", model: "ZBT-ExtendedColor", deviceJoinName: "Q-Smart Light", mnmn:"SmartThings", vid: "generic-rgbw-color-bulb-1800K-6500K" } diff --git a/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy b/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy index c749d8e9c99..c7789983b16 100644 --- a/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy +++ b/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy @@ -30,7 +30,8 @@ metadata { // eWeLink fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006", outClusters: "0000", manufacturer: "eWeLink", model: "SA-003-Zigbee", deviceJoinName: "eWeLink Outlet", ocfDeviceType: "oic.d.smartplug" //eWeLink SmartPlug (SA-003) - + fingerprint profileId: "0104", inClusters: "0000,0003,0004,00005,0006", outClusters: "0000", manufacturer: "eWeLink", model: "ZB-SW01", deviceJoinName: "eWeLink Switch" + // EZEX fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0006", outClusters: "0006, 000A, 0019", model: "E220-KR1N0Z0-HA", deviceJoinName: "eZEX Switch" //EZEX Switch 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 9bf2ccecfc7..645cfe0a9c2 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 @@ -48,6 +48,14 @@ metadata { fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 1000, FFFF", outClusters: "0019", manufacturer: "Aurora", model: "TWBulb51AU", deviceJoinName: "AOne Light", mnmn: "SmartThings", vid: "generic-color-temperature-bulb-2200K-5000K" //AOne Smart Tuneable GLS Lamp fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300, 1000, FFFF", outClusters: "0019", manufacturer: "Aurora", model: "TWCLBulb50AU", deviceJoinName: "AOne Light", mnmn: "SmartThings", vid: "generic-color-temperature-bulb-2200K-5000K" //AOne Smart Tuneable Candle Lamp + //CWD + // raw description "01 0104 010C 01 0A 0000 0003 0004 0005 0006 0008 0300 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.A806Ecct-A001", deviceJoinName: "CWD Light" //model: "E27 Colour Tuneable", brand: "Collingwood" + // raw description "01 0104 010C 01 0A 0000 0003 0004 0005 0006 0008 0300 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.A806Bcct-A001", deviceJoinName: "CWD Light" //model: "BC Colour Tuneable", brand: "Collingwood" + // raw description "01 0104 010C 01 0A 0000 0003 0004 0005 0006 0008 0300 0B05 1000 FC82 02 000A 0019" + fingerprint manufacturer: "CWD", model: "ZB.M350cct-A001", deviceJoinName: "CWD Light" //model: "GU10 Colour Tuneable", brand: "Collingwood" + // Commercial Electric fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0300", outClusters: "0019", manufacturer: "ETI", model: "Zigbee CCT Downlight", deviceJoinName: "Commercial Light", vid: "generic-color-temperature-bulb-2700K-5000K" //Commercial Electric Can Tunable White diff --git a/devicetypes/smartthings/zwave-radiator-thermostat.src/zwave-radiator-thermostat.groovy b/devicetypes/smartthings/zwave-radiator-thermostat.src/zwave-radiator-thermostat.groovy index 91a277d96dd..a4c79ca74ab 100644 --- a/devicetypes/smartthings/zwave-radiator-thermostat.src/zwave-radiator-thermostat.groovy +++ b/devicetypes/smartthings/zwave-radiator-thermostat.src/zwave-radiator-thermostat.groovy @@ -225,7 +225,7 @@ def setThermostatMode(String mode) { [ secure(zwave.thermostatModeV2.thermostatModeSet(mode: modeValue)), - "delay 2000", + "delay 5000", secure(zwave.thermostatModeV2.thermostatModeGet()) ] }