Compare commits

..

16 Commits

Author SHA1 Message Date
Vinay Rao
0846b6f34c Merge pull request #1629 from SmartThingsCommunity/staging
Rolling up staging to production
2017-01-31 13:25:26 -08:00
Vinay Rao
d4f21b95d7 Merge pull request #1621 from varzac/zll-bulb-reporting
[DPROT-227] Manually refresh on/off status after setLevel
2017-01-27 16:37:34 -08:00
Zach Varberg
be2e19e406 Manually refresh on/off status after setLevel
This is because ZLL bulbs do not report or allow for configuration of
reporting of attributes.  As a result if we change a value, we have to
manually call a read of that attribute to update our status.

This is a part of: https://smartthings.atlassian.net/browse/DPROT-227
2017-01-26 11:27:51 -06:00
Vinay Rao
8611d2e2d2 Merge pull request #1618 from workingmonk/feature/light_capability
ICP-203 Adding Light Capability to hue lights
2017-01-25 04:13:47 -08:00
Vinay Rao
c650047f31 ICP-203 Adding Light Capability to hue lights 2017-01-25 04:12:42 -08:00
Vinay Rao
ded7501b84 Merge pull request #1614 from SmartThingsCommunity/master
Rolling up master to staging
2017-01-24 13:21:44 -08:00
Vinay Rao
eb4d5dcfb8 Merge pull request #1613 from SmartThingsCommunity/staging
Rolling down staging hotfix to master
2017-01-24 13:19:33 -08:00
Vinay Rao
6385443f20 Merge pull request #1612 from SmartThingsCommunity/production
Rolling down production hotfix to staging
2017-01-24 12:48:34 -08:00
Vinay Rao
fd1ad51880 Merge branch 'staging' into production 2017-01-24 12:48:21 -08:00
Vinay Rao
550214ceb5 Merge pull request #1610 from dkirker/DEVC-490
DEVC-490: Add Leviton Dimmer DL1KD fingerprint
2017-01-23 11:53:01 -08:00
Donald Kirker
a36500a216 DEVC-490: Add Leviton Dimmer DL1KD fingerprint 2017-01-23 11:45:05 -08:00
bflorian
9900e532a4 Merge pull request #1608 from juano2310/sim_fix
DVCSMP-2325 - Remove parse method from simulated Switch
2017-01-20 14:27:08 -08:00
juano2310
7648fd4a17 DVCSMP-2325 - Remove parse method from simulated Switch
sin string
2017-01-20 17:22:10 -05:00
Vinay Rao
9686f3770b Merge pull request #1604 from workingmonk/feature/device_lab_cert_work
DEVC-492 DEVC-493 DEVC-494 DEVC-526 Device Certification approved new fingerprints
2017-01-19 15:02:07 -08:00
Vinay Rao
de37d0c813 Device Certification approved new fingerprints 2017-01-19 14:38:59 -08:00
Vinay Rao
30511d74af Merge pull request #1597 from SmartThingsCommunity/staging
Rolling up staging to production
2017-01-18 13:27:50 -08:00
13 changed files with 17 additions and 557 deletions

View File

@@ -82,7 +82,7 @@ def on() {
}
def setLevel(value) {
zigbee.setLevel(value) + ["delay 500"] + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
}
/**

View File

@@ -17,6 +17,7 @@ metadata {
capability "Refresh"
capability "Sensor"
capability "Health Check"
capability "Light"
command "setAdjustedColor"
command "reset"

View File

@@ -18,6 +18,7 @@ metadata {
capability "Refresh"
capability "Sensor"
capability "Health Check"
capability "Light"
command "setAdjustedColor"
command "reset"

View File

@@ -14,7 +14,8 @@ metadata {
capability "Switch"
capability "Refresh"
capability "Sensor"
capability "Health Check"
capability "Health Check"
capability "Light"
command "refresh"
}

View File

@@ -16,6 +16,7 @@ metadata {
capability "Switch"
capability "Refresh"
capability "Health Check"
capability "Light"
command "refresh"
}

View File

@@ -12,7 +12,7 @@
*
*/
metadata {
definition (name: "Simulated Switch", namespace: "smartthings/testing", author: "bob") {
capability "Switch"
capability "Relay Switch"
@@ -39,9 +39,7 @@ metadata {
}
}
def parse(String description) {
def pair = description.split(":")
createEvent(name: pair[0].trim(), value: pair[1].trim())
def parse(description) {
}
def on() {

View File

@@ -28,6 +28,10 @@ metadata {
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0B05", outClusters: "0019", manufacturer: "OSRAM SYLVANIA", model: "iQBR30", deviceJoinName: "Sylvania Ultra iQ"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, FC0F", outClusters: "0019", manufacturer: "OSRAM", model: "LIGHTIFY PAR38 ON/OFF/DIM", deviceJoinName: "SYLVANIA Smart PAR38 Soft White"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0B04, FC0F", outClusters: "0019", manufacturer: "OSRAM", model: "LIGHTIFY BR ON/OFF/DIM", deviceJoinName: "SYLVANIA Smart BR30 Soft White"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702, 0B05", outClusters: "0019", manufacturer: "sengled", model: "E11-G13", deviceJoinName: "Sengled Element Classic"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008", outClusters: "0003, 0006, 0008, 0019, 0406", manufacturer: "Leviton", model: "DL6HD", deviceJoinName: "Leviton Dimmer Switch"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008", outClusters: "0003, 0006, 0008, 0019, 0406", manufacturer: "Leviton", model: "DL3HL", deviceJoinName: "Leviton Lumina RF Plug-In Dimmer"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008", outClusters: "0003, 0006, 0008, 0019, 0406", manufacturer: "Leviton", model: "DL1KD", deviceJoinName: "Leviton Lumina RF Dimmer Switch"
}
tiles(scale: 2) {

View File

@@ -22,6 +22,7 @@ metadata {
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0006", outClusters: "0003, 0006, 0019, 0406", manufacturer: "Leviton", model: "ZSS-10", deviceJoinName: "Leviton Switch"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0006", outClusters: "000A", manufacturer: "HAI", model: "65A21-1", deviceJoinName: "Leviton Wireless Load Control Module-30amp"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006", outClusters: "0003, 0006, 0008, 0019, 0406", manufacturer: "Leviton", model: "DL15A", deviceJoinName: "Leviton Lumina RF Plug-In Appliance Module"
}
// simulator metadata

View File

@@ -89,7 +89,7 @@ def on() {
}
def setLevel(value) {
zigbee.setLevel(value) + ["delay 1500"] + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
}
def refresh() {

View File

@@ -115,7 +115,7 @@ def refreshAttributes() {
}
def setLevel(value) {
zigbee.setLevel(value) + ["delay 1500"] + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
}
def setColor(value){

View File

@@ -135,7 +135,7 @@ def setColorTemperature(value) {
}
def setLevel(value) {
zigbee.setLevel(value) + ["delay 1500"] + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report
}
def setColor(value){

View File

@@ -90,7 +90,7 @@ def on() {
}
def setLevel(value) {
zigbee.setLevel(value) + ["delay 1500"] + zigbee.levelRefresh()
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh()
}
def refresh() {

View File

@@ -1,547 +0,0 @@
/**
* Switches Control Light Scenes
*
* Copyright 2017 Will Cole
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
* for the specific language governing permissions and limitations under the License.
*
*/
definition(
name: "Control Light Scenes",
namespace: "triosniolin",
author: "Will Cole",
description: "Using switches, control scenes for light(s).",
category: "Convenience",
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png",
iconX3Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png")
preferences {
page(name: "page1")
page(name: "page2")
page(name: "page3")
page(name: "page4")
page(name: "page5")
page(name: "page6")
}
def page1() {
dynamicPage(name: "page1", title: "Select devices:", nextPage: "page2", uninstall:true) {
section("Number of Scenes (such as on, off, movie, party)") {
input "scenes", "number",
title: "Number of Scenes (1-5)",
range: "1..5",
defaultValue: "3",
required: true,
submitOnChange: true
}
section("Device(s) to control") {
input "colors", "capability.colorControl",
multiple: true,
title: "Slave Color bulb(s)...",
required: false,
hideWhenEmpty: true
input "slaves", "capability.colorTemperature",
multiple: true,
title: "Slave Temp bulb(s)...",
required: true
}
}
}
def page2() {
def i = 1
if (scenes > i) {
dynamicPage(name: "page2", title: "Select Scene $i", nextPage: "page3") {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
} else {
dynamicPage(name: "page2", title: "Select Scene $i", install:true) {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
}
}
def page3() {
def i = 2
if (scenes > i) {
dynamicPage(name: "page3", title: "Select Scene $i", nextPage: "page4") {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
} else {
dynamicPage(name: "page3", title: "Select Scene $i", install:true) {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
}
}
def page4() {
def i = 3
if (scenes > i) {
dynamicPage(name: "page4", title: "Select Scene $i", nextPage: "page5") {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
} else {
dynamicPage(name: "page4", title: "Select Scene $i", install:true) {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
}
}
def page5() {
def i = 4
if (scenes > i) {
dynamicPage(name: "page5", title: "Select Scene $i", nextPage: "page6") {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
} else {
dynamicPage(name: "page5", title: "Select Scene $i", install:true) {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
}
}
def page6() {
def i = 5
dynamicPage(name: "page6", title: "Select Scene $i", install:true) {
section("Scene $i") {
input "switch$i", "capability.switch",
multiple: false,
title: "Switch To Enable Scene $i",
required: true
}
section("Scene $i Color Temp") {
input "Temp$i", "number",
title: "Scene $i Color Temp (Kelvin) (2700-6500)",
range: "2700..6500",
defaultValue: "",
required: false
}
section("Scene $i Level") {
input "Dim$i", "number",
title: "Scene $i Dim Level (0-100%)",
range: "0..100",
defaultValue: "",
required: false
}
if (colors) {
section("Scene $i Hue") {
input "Hue$i", "number",
title: "Scene $i Hue (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
section("Scene $i Saturation") {
input "Sat$i", "number",
title: "Scene $i Saturation (0-100)",
range: "0..100",
defaultValue: "",
required: false
}
}
}
}
def installed()
{
if (switch1) {
subscribe (switch1, "switch.on", switch1Handler)
}
if (switch2) {
subscribe (switch2, "switch.on", switch2Handler)
}
if (switch3) {
subscribe (switch3, "switch.on", switch3Handler)
}
if (switch4) {
subscribe (switch4, "switch.on", switch4Handler)
}
if (switch5) {
subscribe (switch5, "switch.on", switch5Handler)
}
}
def updated()
{
unsubscribe()
if (switch1) {
subscribe (switch1, "switch.on", switch1Handler)
}
if (switch2) {
subscribe (switch2, "switch.on", switch2Handler)
}
if (switch3) {
subscribe (switch3, "switch.on", switch3Handler)
}
if (switch4) {
subscribe (switch4, "switch.on", switch4Handler)
}
if (switch5) {
subscribe (switch5, "switch.on", switch5Handler)
}
log.info "subscribed to all of switches events"
}
def switch1Handler(evt){
log.info "switch1Handler Event: ${evt.value}"
if (colors) {
if (Temp1) { slaves?.setColorTemperature(Temp1)
colors?.setColorTemperature(Temp1) }
if (Dim1) { slaves?.setLevel(Dim1)
colors?.setLevel(Dim1) }
if (Hue1) { colors?.setHue(Hue1) }
if (Sat1) { colors?.setSaturation(Sat1) }
} else {
if (Temp1) { slaves?.setColorTemperature(Temp1) }
if (Dim1) { slaves?.setLevel(Dim1) }
}
}
def switch2Handler(evt){
log.info "switch2Handler Event: ${evt.value}"
if (colors) {
if (Temp2) { slaves?.setColorTemperature(Temp2)
colors?.setColorTemperature(Temp2) }
if (Dim2) { slaves?.setLevel(Dim2)
colors?.setLevel(Dim2) }
if (Hue2) { colors?.setHue(Hue2) }
if (Sat2) { colors?.setSaturation(Sat2) }
} else {
if (Temp2) { slaves?.setColorTemperature(Temp2) }
if (Dim2) { slaves?.setLevel(Dim2) }
}
}
def switch3Handler(evt){
log.info "switch3Handler Event: ${evt.value}"
if (colors) {
if (Temp3) { slaves?.setColorTemperature(Temp3)
colors?.setColorTemperature(Temp3) }
if (Dim3) { slaves?.setLevel(Dim3)
colors?.setLevel(Dim3) }
if (Hue3) { colors?.setHue(Hue3) }
if (Sat3) { colors?.setSaturation(Sat3) }
} else {
if (Temp3) { slaves?.setColorTemperature(Temp3) }
if (Dim3) { slaves?.setLevel(Dim3) }
}
}
def switch4Handler(evt){
log.info "switch4Handler Event: ${evt.value}"
if (colors) {
if (Temp4) { slaves?.setColorTemperature(Temp4)
colors?.setColorTemperature(Temp4) }
if (Dim4) { slaves?.setLevel(Dim4)
colors?.setLevel(Dim4) }
if (Hue4) { colors?.setHue(Hue4) }
if (Sat4) { colors?.setSaturation(Sat4) }
} else {
if (Temp4) { slaves?.setColorTemperature(Temp4) }
if (Dim4) { slaves?.setLevel(Dim4) }
}
}
def switch5Handler(evt){
log.info "switch5Handler Event: ${evt.value}"
if (colors) {
if (Temp5) { slaves?.setColorTemperature(Temp5)
colors?.setColorTemperature(Temp5) }
if (Dim5) { slaves?.setLevel(Dim5)
colors?.setLevel(Dim5) }
if (Hue5) { colors?.setHue(Hue5) }
if (Sat5) { colors?.setSaturation(Sat5) }
} else {
if (Temp5) { slaves?.setColorTemperature(Temp5) }
if (Dim5) { slaves?.setLevel(Dim5) }
}
}