mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-17 13:10:52 +00:00
Initial commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* Simulated Alarm
|
||||
*
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
definition (name: "Simulated Alarm", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Alarm"
|
||||
}
|
||||
|
||||
simulator {
|
||||
// reply messages
|
||||
["strobe","siren","both","off"].each {
|
||||
reply "$it": "alarm:$it"
|
||||
}
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("alarm", "device.alarm", width: 2, height: 2) {
|
||||
state "off", label:'off', action:'alarm.both', icon:"st.alarm.alarm.alarm", backgroundColor:"#ffffff"
|
||||
state "strobe", label:'strobe!', action:'alarm.off', icon:"st.alarm.alarm.alarm", backgroundColor:"#e86d13"
|
||||
state "siren", label:'siren!', action:'alarm.off', icon:"st.alarm.alarm.alarm", backgroundColor:"#e86d13"
|
||||
state "both", label:'alarm!', action:'alarm.off', icon:"st.alarm.alarm.alarm", backgroundColor:"#e86d13"
|
||||
}
|
||||
standardTile("strobe", "device.alarm", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'', action:"alarm.strobe", icon:"st.secondary.strobe", backgroundColor:"#cccccc"
|
||||
}
|
||||
standardTile("siren", "device.alarm", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'', action:"alarm.siren", icon:"st.secondary.siren", backgroundColor:"#cccccc"
|
||||
}
|
||||
standardTile("off", "device.alarm", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'', action:"alarm.off", icon:"st.secondary.off"
|
||||
}
|
||||
main "alarm"
|
||||
details(["alarm","strobe","siren","test","off"])
|
||||
}
|
||||
}
|
||||
|
||||
def strobe() {
|
||||
sendEvent(name: "alarm", value: "strobe")
|
||||
}
|
||||
|
||||
def siren() {
|
||||
sendEvent(name: "alarm", value: "siren")
|
||||
}
|
||||
|
||||
def both() {
|
||||
sendEvent(name: "alarm", value: "both")
|
||||
}
|
||||
|
||||
def off() {
|
||||
sendEvent(name: "alarm", value: "off")
|
||||
}
|
||||
|
||||
// Parse incoming device messages to generate events
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Copyright 2015 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
definition (name: "Simulated Button", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Actuator"
|
||||
capability "Button"
|
||||
capability "Sensor"
|
||||
|
||||
command "push1"
|
||||
command "hold1"
|
||||
}
|
||||
|
||||
simulator {
|
||||
|
||||
}
|
||||
tiles {
|
||||
standardTile("button", "device.button", width: 1, height: 1) {
|
||||
state "default", label: "", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#ffffff"
|
||||
}
|
||||
standardTile("push1", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Push 1", backgroundColor: "#ffffff", action: "push1"
|
||||
}
|
||||
standardTile("hold1", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Hold 1", backgroundColor: "#ffffff", action: "hold1"
|
||||
}
|
||||
main "button"
|
||||
details(["button","push1","hold1"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
|
||||
}
|
||||
|
||||
def hold1() {
|
||||
sendEvent(name: "button", value: "held", data: [buttonNumber: "1"], descriptionText: "$device.displayName button 1 was held", isStateChange: true)
|
||||
}
|
||||
|
||||
def push1() {
|
||||
sendEvent(name: "button", value: "pushed", data: [buttonNumber: "1"], descriptionText: "$device.displayName button 1 was pushed", isStateChange: true)
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
metadata {
|
||||
definition (name: "Color Control Capability", namespace: "capabilities", author: "SmartThings") {
|
||||
capability "Color Control"
|
||||
}
|
||||
|
||||
simulator {
|
||||
// TODO: define status and reply messages here
|
||||
}
|
||||
|
||||
tiles {
|
||||
controlTile("rgbSelector", "device.color", "color", height: 3, width: 3, inactiveLabel: false) {
|
||||
state "color"
|
||||
}
|
||||
valueTile("saturation", "device.saturation", inactiveLabel: false, decoration: "flat") {
|
||||
state "saturation", label: 'Sat ${currentValue} '
|
||||
}
|
||||
valueTile("hue", "device.hue", inactiveLabel: false, decoration: "flat") {
|
||||
state "hue", label: 'Hue ${currentValue} '
|
||||
}
|
||||
main "rgbSelector"
|
||||
details(["rgbSelector", "saturation", "hue"])
|
||||
}
|
||||
}
|
||||
|
||||
// parse events into attributes
|
||||
def parse(String description) {
|
||||
log.debug "Parsing '${description}'"
|
||||
|
||||
}
|
||||
|
||||
def setSaturation(percent) {
|
||||
log.debug "Executing 'setSaturation'"
|
||||
sendEvent(name: "saturation", value: percent)
|
||||
}
|
||||
|
||||
def setHue(percent) {
|
||||
log.debug "Executing 'setHue'"
|
||||
sendEvent(name: "hue", value: percent)
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Contact Sensor", namespace: "smartthings/testing", author: "bob") {
|
||||
capability "Contact Sensor"
|
||||
|
||||
command "open"
|
||||
command "close"
|
||||
}
|
||||
|
||||
simulator {
|
||||
status "open": "contact:open"
|
||||
status "closed": "contact:closed"
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("contact", "device.contact", width: 2, height: 2) {
|
||||
state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821", action: "open")
|
||||
state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e", action: "close")
|
||||
}
|
||||
main "contact"
|
||||
details "contact"
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
|
||||
def open() {
|
||||
log.trace "open()"
|
||||
sendEvent(name: "contact", value: "open")
|
||||
}
|
||||
|
||||
def close() {
|
||||
log.trace "close()"
|
||||
sendEvent(name: "contact", value: "closed")
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Z-Wave Garage Door Opener
|
||||
*
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
definition (name: "Simulated Garage Door Opener", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Actuator"
|
||||
capability "Door Control"
|
||||
capability "Garage Door Control"
|
||||
capability "Contact Sensor"
|
||||
capability "Refresh"
|
||||
capability "Sensor"
|
||||
}
|
||||
|
||||
simulator {
|
||||
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("toggle", "device.door", width: 2, height: 2) {
|
||||
state("closed", label:'${name}', action:"door control.open", icon:"st.doors.garage.garage-closed", backgroundColor:"#79b821", nextState:"opening")
|
||||
state("open", label:'${name}', action:"door control.close", icon:"st.doors.garage.garage-open", backgroundColor:"#ffa81e", nextState:"closing")
|
||||
state("opening", label:'${name}', icon:"st.doors.garage.garage-closed", backgroundColor:"#ffe71e")
|
||||
state("closing", label:'${name}', icon:"st.doors.garage.garage-open", backgroundColor:"#ffe71e")
|
||||
|
||||
}
|
||||
standardTile("open", "device.door", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'open', action:"door control.open", icon:"st.doors.garage.garage-opening"
|
||||
}
|
||||
standardTile("close", "device.door", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'close', action:"door control.close", icon:"st.doors.garage.garage-closing"
|
||||
}
|
||||
|
||||
main "toggle"
|
||||
details(["toggle", "open", "close"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
log.trace "parse($description)"
|
||||
}
|
||||
|
||||
def open() {
|
||||
sendEvent(name: "door", value: "opening")
|
||||
runIn(6, finishOpening)
|
||||
}
|
||||
|
||||
def close() {
|
||||
sendEvent(name: "door", value: "closing")
|
||||
runIn(6, finishClosing)
|
||||
}
|
||||
|
||||
def finishOpening() {
|
||||
sendEvent(name: "door", value: "open")
|
||||
sendEvent(name: "contact", value: "open")
|
||||
}
|
||||
|
||||
def finishClosing() {
|
||||
sendEvent(name: "door", value: "closed")
|
||||
sendEvent(name: "contact", value: "closed")
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Lock", namespace: "smartthings/testing", author: "bob") {
|
||||
capability "Lock"
|
||||
}
|
||||
|
||||
// Simulated lock
|
||||
tiles {
|
||||
standardTile("toggle", "device.lock", width: 2, height: 2) {
|
||||
state "unlocked", label:'unlocked', action:"lock.lock", icon:"st.locks.lock.unlocked", backgroundColor:"#ffffff"
|
||||
state "locked", label:'locked', action:"lock.unlock", icon:"st.locks.lock.locked", backgroundColor:"#79b821"
|
||||
}
|
||||
standardTile("lock", "device.lock", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'lock', action:"lock.lock", icon:"st.locks.lock.locked"
|
||||
}
|
||||
standardTile("unlock", "device.lock", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'unlock', action:"lock.unlock", icon:"st.locks.lock.unlocked"
|
||||
}
|
||||
|
||||
main "toggle"
|
||||
details(["toggle", "lock", "unlock"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
log.trace "parse $description"
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
|
||||
def lock() {
|
||||
log.trace "lock()"
|
||||
sendEvent(name: "lock", value: "locked")
|
||||
}
|
||||
|
||||
def unlock() {
|
||||
log.trace "unlock()"
|
||||
sendEvent(name: "lock", value: "unlocked")
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
* Copyright 2015 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
definition (name: "Simulated Minimote", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Actuator"
|
||||
capability "Button"
|
||||
capability "Configuration"
|
||||
capability "Sensor"
|
||||
|
||||
command "push1"
|
||||
command "push2"
|
||||
command "push3"
|
||||
command "push4"
|
||||
command "hold1"
|
||||
command "hold2"
|
||||
command "hold3"
|
||||
command "hold4"
|
||||
}
|
||||
|
||||
simulator {
|
||||
status "button 1 pushed": "command: 2001, payload: 01"
|
||||
status "button 1 held": "command: 2001, payload: 15"
|
||||
status "button 2 pushed": "command: 2001, payload: 29"
|
||||
status "button 2 held": "command: 2001, payload: 3D"
|
||||
status "button 3 pushed": "command: 2001, payload: 51"
|
||||
status "button 3 held": "command: 2001, payload: 65"
|
||||
status "button 4 pushed": "command: 2001, payload: 79"
|
||||
status "button 4 held": "command: 2001, payload: 8D"
|
||||
status "wakeup": "command: 8407, payload: "
|
||||
}
|
||||
tiles {
|
||||
standardTile("button", "device.button") {
|
||||
state "default", label: "", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#ffffff"
|
||||
}
|
||||
standardTile("push1", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Push 1", backgroundColor: "#ffffff", action: "push1"
|
||||
}
|
||||
standardTile("push2", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Push 2", backgroundColor: "#ffffff", action: "push2"
|
||||
}
|
||||
standardTile("push3", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Push 3", backgroundColor: "#ffffff", action: "push3"
|
||||
}
|
||||
standardTile("push4", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Push 4", backgroundColor: "#ffffff", action: "push4"
|
||||
}
|
||||
standardTile("dummy1", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: " ", backgroundColor: "#ffffff", action: "push4"
|
||||
}
|
||||
standardTile("hold1", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Hold 1", backgroundColor: "#ffffff", action: "hold1"
|
||||
}
|
||||
standardTile("hold2", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Hold 2", backgroundColor: "#ffffff", action: "hold2"
|
||||
}
|
||||
standardTile("dummy2", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: " ", backgroundColor: "#ffffff", action: "push4"
|
||||
}
|
||||
standardTile("hold3", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Hold 3", backgroundColor: "#ffffff", action: "hold3"
|
||||
}
|
||||
standardTile("hold4", "device.button", width: 1, height: 1, decoration: "flat") {
|
||||
state "default", label: "Hold 4", backgroundColor: "#ffffff", action: "hold4"
|
||||
}
|
||||
|
||||
main "button"
|
||||
details(["push1","push2","button","push3","push4","dummy1","hold1","hold2","dummy2","hold3","hold4"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
|
||||
}
|
||||
|
||||
def push1() {
|
||||
push(1)
|
||||
}
|
||||
|
||||
def push2() {
|
||||
push(2)
|
||||
}
|
||||
|
||||
def push3() {
|
||||
push(3)
|
||||
}
|
||||
|
||||
def push4() {
|
||||
push(4)
|
||||
}
|
||||
|
||||
def hold1() {
|
||||
hold(1)
|
||||
}
|
||||
|
||||
def hold2() {
|
||||
hold(2)
|
||||
}
|
||||
|
||||
def hold3() {
|
||||
hold(3)
|
||||
}
|
||||
|
||||
def hold4() {
|
||||
hold(4)
|
||||
}
|
||||
|
||||
private push(button) {
|
||||
log.debug "$device.displayName button $button was pushed"
|
||||
sendEvent(name: "button", value: "pushed", data: [buttonNumber: button], descriptionText: "$device.displayName button $button was pushed", isStateChange: true)
|
||||
}
|
||||
|
||||
private hold(button) {
|
||||
log.debug "$device.displayName button $button was held"
|
||||
sendEvent(name: "button", value: "held", data: [buttonNumber: button], descriptionText: "$device.displayName button $button was held", isStateChange: true)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Motion Sensor", namespace: "smartthings/testing", author: "bob") {
|
||||
capability "Motion Sensor"
|
||||
|
||||
command "active"
|
||||
command "inactive"
|
||||
}
|
||||
|
||||
simulator {
|
||||
status "active": "motion:active"
|
||||
status "inactive": "motion:inactive"
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("motion", "device.motion", width: 2, height: 2) {
|
||||
state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff", action: "active")
|
||||
state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0", action: "inactive")
|
||||
}
|
||||
main "motion"
|
||||
details "motion"
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
|
||||
def active() {
|
||||
log.trace "active()"
|
||||
sendEvent(name: "motion", value: "active")
|
||||
}
|
||||
|
||||
def inactive() {
|
||||
log.trace "inactive()"
|
||||
sendEvent(name: "motion", value: "inactive")
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Presence Sensor", namespace: "smartthings/testing", author: "bob") {
|
||||
capability "Presence Sensor"
|
||||
|
||||
command "arrived"
|
||||
command "departed"
|
||||
}
|
||||
|
||||
simulator {
|
||||
status "present": "presence: present"
|
||||
status "not present": "presence: not present"
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("presence", "device.presence", width: 2, height: 2, canChangeBackground: true) {
|
||||
state("not present", label:'not present', icon:"st.presence.tile.not-present", backgroundColor:"#ffffff", action:"arrived")
|
||||
state("present", label:'present', icon:"st.presence.tile.present", backgroundColor:"#53a7c0", action:"departed")
|
||||
}
|
||||
main "presence"
|
||||
details "presence"
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
|
||||
// handle commands
|
||||
def arrived() {
|
||||
log.trace "Executing 'arrived'"
|
||||
sendEvent(name: "presence", value: "present")
|
||||
}
|
||||
|
||||
|
||||
def departed() {
|
||||
log.trace "Executing 'arrived'"
|
||||
sendEvent(name: "presence", value: "not present")
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* Copyright 2015 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
definition (name: "Simulated Smoke Alarm", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Smoke Detector"
|
||||
capability "Sensor"
|
||||
|
||||
command "smoke"
|
||||
command "test"
|
||||
command "clear"
|
||||
}
|
||||
|
||||
simulator {
|
||||
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("main", "device.smoke", width: 2, height: 2) {
|
||||
state("clear", label:"Clear", icon:"st.alarm.smoke.clear", backgroundColor:"#ffffff", action:"smoke")
|
||||
state("detected", label:"Smoke!", icon:"st.alarm.smoke.smoke", backgroundColor:"#e86d13", action:"clear")
|
||||
state("tested", label:"Test", icon:"st.alarm.smoke.test", backgroundColor:"#e86d13", action:"clear")
|
||||
}
|
||||
standardTile("smoke", "device.smoke", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'Smoke', action:"smoke"
|
||||
}
|
||||
standardTile("test", "device.smoke", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'Test', action:"test"
|
||||
}
|
||||
standardTile("reset", "device.smoke", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'Clear', action:"clear"
|
||||
}
|
||||
main "main"
|
||||
details(["main", "smoke", "test", "clear"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
|
||||
}
|
||||
|
||||
def smoke() {
|
||||
log.debug "smoke()"
|
||||
sendEvent(name: "smoke", value: "detected", descriptionText: "$device.displayName smoke detected!")
|
||||
}
|
||||
|
||||
def test() {
|
||||
log.debug "test()"
|
||||
sendEvent(name: "smoke", value: "tested", descriptionText: "$device.displayName tested")
|
||||
}
|
||||
|
||||
def clear() {
|
||||
log.debug "clear()"
|
||||
sendEvent(name: "smoke", value: "clear", descriptionText: "$device.displayName clear")
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Copyright 2015 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
|
||||
definition (name: "Simulated Switch", namespace: "smartthings/testing", author: "bob") {
|
||||
capability "Switch"
|
||||
capability "Relay Switch"
|
||||
|
||||
command "onPhysical"
|
||||
command "offPhysical"
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
|
||||
state "off", label: '${currentValue}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
|
||||
state "on", label: '${currentValue}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#79b821"
|
||||
}
|
||||
standardTile("on", "device.switch", decoration: "flat") {
|
||||
state "default", label: 'On', action: "onPhysical", backgroundColor: "#ffffff"
|
||||
}
|
||||
standardTile("off", "device.switch", decoration: "flat") {
|
||||
state "default", label: 'Off', action: "offPhysical", backgroundColor: "#ffffff"
|
||||
}
|
||||
main "switch"
|
||||
details(["switch","on","off"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "$version on()"
|
||||
sendEvent(name: "switch", value: "on")
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "$version off()"
|
||||
sendEvent(name: "switch", value: "off")
|
||||
}
|
||||
|
||||
def onPhysical() {
|
||||
log.debug "$version onPhysical()"
|
||||
sendEvent(name: "switch", value: "on", type: "physical")
|
||||
}
|
||||
|
||||
def offPhysical() {
|
||||
log.debug "$version offPhysical()"
|
||||
sendEvent(name: "switch", value: "off", type: "physical")
|
||||
}
|
||||
|
||||
private getVersion() {
|
||||
"PUBLISHED"
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Temperature Sensor", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Temperature Measurement"
|
||||
capability "Switch Level"
|
||||
|
||||
command "up"
|
||||
command "down"
|
||||
command "setTemperature", ["number"]
|
||||
}
|
||||
|
||||
|
||||
// UI tile definitions
|
||||
tiles {
|
||||
valueTile("temperature", "device.temperature", width: 2, height: 2) {
|
||||
state("temperature", label:'${currentValue}', unit:"F",
|
||||
backgroundColors:[
|
||||
[value: 31, color: "#153591"],
|
||||
[value: 44, color: "#1e9cbb"],
|
||||
[value: 59, color: "#90d2a7"],
|
||||
[value: 74, color: "#44b621"],
|
||||
[value: 84, color: "#f1d801"],
|
||||
[value: 95, color: "#d04e00"],
|
||||
[value: 96, color: "#bc2323"]
|
||||
]
|
||||
)
|
||||
}
|
||||
standardTile("up", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'up', action:"up"
|
||||
}
|
||||
standardTile("down", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'down', action:"down"
|
||||
}
|
||||
main "temperature"
|
||||
details("temperature","up","down")
|
||||
}
|
||||
}
|
||||
|
||||
// Parse incoming device messages to generate events
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim(), unit:"F")
|
||||
}
|
||||
|
||||
def setLevel(value) {
|
||||
sendEvent(name:"temperature", value: value)
|
||||
}
|
||||
|
||||
def up() {
|
||||
def ts = device.currentState("temperature")
|
||||
def value = ts ? ts.integerValue + 1 : 72
|
||||
sendEvent(name:"temperature", value: value)
|
||||
}
|
||||
|
||||
def down() {
|
||||
def ts = device.currentState("temperature")
|
||||
def value = ts ? ts.integerValue - 1 : 72
|
||||
sendEvent(name:"temperature", value: value)
|
||||
}
|
||||
|
||||
def setTemperature(value) {
|
||||
sendEvent(name:"temperature", value: value)
|
||||
}
|
||||
@@ -0,0 +1,255 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Thermostat", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Thermostat"
|
||||
|
||||
command "tempUp"
|
||||
command "tempDown"
|
||||
command "heatUp"
|
||||
command "heatDown"
|
||||
command "coolUp"
|
||||
command "coolDown"
|
||||
command "setTemperature", ["number"]
|
||||
}
|
||||
|
||||
tiles {
|
||||
valueTile("temperature", "device.temperature", width: 1, height: 1) {
|
||||
state("temperature", label:'${currentValue}', unit:"dF",
|
||||
backgroundColors:[
|
||||
[value: 31, color: "#153591"],
|
||||
[value: 44, color: "#1e9cbb"],
|
||||
[value: 59, color: "#90d2a7"],
|
||||
[value: 74, color: "#44b621"],
|
||||
[value: 84, color: "#f1d801"],
|
||||
[value: 95, color: "#d04e00"],
|
||||
[value: 96, color: "#bc2323"]
|
||||
]
|
||||
)
|
||||
}
|
||||
standardTile("tempDown", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'down', action:"tempDown"
|
||||
}
|
||||
standardTile("tempUp", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'up', action:"tempUp"
|
||||
}
|
||||
|
||||
valueTile("heatingSetpoint", "device.heatingSetpoint", inactiveLabel: false, decoration: "flat") {
|
||||
state "heat", label:'${currentValue} heat', unit: "F", backgroundColor:"#ffffff"
|
||||
}
|
||||
standardTile("heatDown", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'down', action:"heatDown"
|
||||
}
|
||||
standardTile("heatUp", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'up', action:"heatUp"
|
||||
}
|
||||
|
||||
valueTile("coolingSetpoint", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") {
|
||||
state "cool", label:'${currentValue} cool', unit:"F", backgroundColor:"#ffffff"
|
||||
}
|
||||
standardTile("coolDown", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'down', action:"coolDown"
|
||||
}
|
||||
standardTile("coolUp", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'up', action:"coolUp"
|
||||
}
|
||||
|
||||
standardTile("mode", "device.thermostatMode", inactiveLabel: false, decoration: "flat") {
|
||||
state "off", label:'${name}', action:"thermostat.heat", backgroundColor:"#ffffff"
|
||||
state "heat", label:'${name}', action:"thermostat.cool", backgroundColor:"#ffa81e"
|
||||
state "cool", label:'${name}', action:"thermostat.auto", backgroundColor:"#269bd2"
|
||||
state "auto", label:'${name}', action:"thermostat.off", backgroundColor:"#79b821"
|
||||
}
|
||||
standardTile("fanMode", "device.thermostatFanMode", inactiveLabel: false, decoration: "flat") {
|
||||
state "fanAuto", label:'${name}', action:"thermostat.fanOn", backgroundColor:"#ffffff"
|
||||
state "fanOn", label:'${name}', action:"thermostat.fanCirculate", backgroundColor:"#ffffff"
|
||||
state "fanCirculate", label:'${name}', action:"thermostat.fanAuto", backgroundColor:"#ffffff"
|
||||
}
|
||||
standardTile("operatingState", "device.thermostatOperatingState") {
|
||||
state "idle", label:'${name}', backgroundColor:"#ffffff"
|
||||
state "heating", label:'${name}', backgroundColor:"#ffa81e"
|
||||
state "cooling", label:'${name}', backgroundColor:"#269bd2"
|
||||
}
|
||||
|
||||
main("temperature","operatingState")
|
||||
details([
|
||||
"temperature","tempDown","tempUp",
|
||||
"mode", "fanMode", "operatingState",
|
||||
"heatingSetpoint", "heatDown", "heatUp",
|
||||
"coolingSetpoint", "coolDown", "coolUp",
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
def installed() {
|
||||
sendEvent(name: "temperature", value: 72, unit: "F")
|
||||
sendEvent(name: "heatingSetpoint", value: 70, unit: "F")
|
||||
sendEvent(name: "thermostatSetpoint", value: 70, unit: "F")
|
||||
sendEvent(name: "coolingSetpoint", value: 76, unit: "F")
|
||||
sendEvent(name: "thermostatMode", value: "off")
|
||||
sendEvent(name: "thermostatFanMode", value: "fanAuto")
|
||||
sendEvent(name: "thermostatOperatingState", value: "idle")
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
}
|
||||
|
||||
def evaluate(temp, heatingSetpoint, coolingSetpoint) {
|
||||
log.debug "evaluate($temp, $heatingSetpoint, $coolingSetpoint"
|
||||
def threshold = 1.0
|
||||
def current = device.currentValue("thermostatOperatingState")
|
||||
def mode = device.currentValue("thermostatMode")
|
||||
|
||||
def heating = false
|
||||
def cooling = false
|
||||
def idle = false
|
||||
if (mode in ["heat","emergency heat","auto"]) {
|
||||
if (heatingSetpoint - temp >= threshold) {
|
||||
heating = true
|
||||
sendEvent(name: "thermostatOperatingState", value: "heating")
|
||||
}
|
||||
else if (temp - heatingSetpoint >= threshold) {
|
||||
idle = true
|
||||
}
|
||||
sendEvent(name: "thermostatSetpoint", value: heatingSetpoint)
|
||||
}
|
||||
if (mode in ["cool","auto"]) {
|
||||
if (temp - coolingSetpoint >= threshold) {
|
||||
cooling = true
|
||||
sendEvent(name: "thermostatOperatingState", value: "cooling")
|
||||
}
|
||||
else if (coolingSetpoint - temp >= threshold && !heating) {
|
||||
idle = true
|
||||
}
|
||||
sendEvent(name: "thermostatSetpoint", value: coolingSetpoint)
|
||||
}
|
||||
else {
|
||||
sendEvent(name: "thermostatSetpoint", value: heatingSetpoint)
|
||||
}
|
||||
if (idle && !heating && !cooling) {
|
||||
sendEvent(name: "thermostatOperatingState", value: "idle")
|
||||
}
|
||||
}
|
||||
|
||||
def setHeatingSetpoint(Double degreesF) {
|
||||
log.debug "setHeatingSetpoint($degreesF)"
|
||||
sendEvent(name: "heatingSetpoint", value: degreesF)
|
||||
evaluate(device.currentValue("temperature"), degreesF, device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def setCoolingSetpoint(Double degreesF) {
|
||||
log.debug "setCoolingSetpoint($degreesF)"
|
||||
sendEvent(name: "coolingSetpoint", value: degreesF)
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), degreesF)
|
||||
}
|
||||
|
||||
def setThermostatMode(String value) {
|
||||
sendEvent(name: "thermostatMode", value: value)
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def setThermostatFanMode(String value) {
|
||||
sendEvent(name: "thermostatFanMode", value: value)
|
||||
}
|
||||
|
||||
def off() {
|
||||
sendEvent(name: "thermostatMode", value: "off")
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def heat() {
|
||||
sendEvent(name: "thermostatMode", value: "heat")
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def auto() {
|
||||
sendEvent(name: "thermostatMode", value: "auto")
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def emergencyHeat() {
|
||||
sendEvent(name: "thermostatMode", value: "emergency heat")
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def cool() {
|
||||
sendEvent(name: "thermostatMode", value: "cool")
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def fanOn() {
|
||||
sendEvent(name: "thermostatFanMode", value: "fanOn")
|
||||
}
|
||||
|
||||
def fanAuto() {
|
||||
sendEvent(name: "thermostatFanMode", value: "fanAuto")
|
||||
}
|
||||
|
||||
def fanCirculate() {
|
||||
sendEvent(name: "thermostatFanMode", value: "fanCirculate")
|
||||
}
|
||||
|
||||
def poll() {
|
||||
null
|
||||
}
|
||||
|
||||
def tempUp() {
|
||||
def ts = device.currentState("temperature")
|
||||
def value = ts ? ts.integerValue + 1 : 72
|
||||
sendEvent(name:"temperature", value: value)
|
||||
evaluate(value, device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def tempDown() {
|
||||
def ts = device.currentState("temperature")
|
||||
def value = ts ? ts.integerValue - 1 : 72
|
||||
sendEvent(name:"temperature", value: value)
|
||||
evaluate(value, device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def setTemperature(value) {
|
||||
def ts = device.currentState("temperature")
|
||||
sendEvent(name:"temperature", value: value)
|
||||
evaluate(value, device.currentValue("heatingSetpoint"), device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def heatUp() {
|
||||
def ts = device.currentState("heatingSetpoint")
|
||||
def value = ts ? ts.integerValue + 1 : 68
|
||||
sendEvent(name:"heatingSetpoint", value: value)
|
||||
evaluate(device.currentValue("temperature"), value, device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
def heatDown() {
|
||||
def ts = device.currentState("heatingSetpoint")
|
||||
def value = ts ? ts.integerValue - 1 : 68
|
||||
sendEvent(name:"heatingSetpoint", value: value)
|
||||
evaluate(device.currentValue("temperature"), value, device.currentValue("coolingSetpoint"))
|
||||
}
|
||||
|
||||
|
||||
def coolUp() {
|
||||
def ts = device.currentState("coolingSetpoint")
|
||||
def value = ts ? ts.integerValue + 1 : 76
|
||||
sendEvent(name:"coolingSetpoint", value: value)
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), value)
|
||||
}
|
||||
|
||||
def coolDown() {
|
||||
def ts = device.currentState("coolingSetpoint")
|
||||
def value = ts ? ts.integerValue - 1 : 76
|
||||
sendEvent(name:"coolingSetpoint", value: value)
|
||||
evaluate(device.currentValue("temperature"), device.currentValue("heatingSetpoint"), value)
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* Copyright 2014 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
// Automatically generated. Make future change here.
|
||||
definition (name: "Simulated Water Sensor", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Water Sensor"
|
||||
|
||||
command "wet"
|
||||
command "dry"
|
||||
}
|
||||
|
||||
simulator {
|
||||
status "wet": "water:wet"
|
||||
status "dry": "water:dry"
|
||||
}
|
||||
|
||||
tiles {
|
||||
standardTile("water", "device.water", width: 2, height: 2) {
|
||||
state "dry", icon:"st.alarm.water.dry", backgroundColor:"#ffffff", action: "wet"
|
||||
state "wet", icon:"st.alarm.water.wet", backgroundColor:"#53a7c0", action: "dry"
|
||||
}
|
||||
standardTile("wet", "device.water", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'Wet', action:"wet", icon: "st.alarm.water.wet"
|
||||
}
|
||||
standardTile("dry", "device.water", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'Dry', action:"dry", icon: "st.alarm.water.dry"
|
||||
}
|
||||
main "water"
|
||||
details(["water","wet","dry"])
|
||||
}
|
||||
}
|
||||
|
||||
def parse(String description) {
|
||||
def pair = description.split(":")
|
||||
createEvent(name: pair[0].trim(), value: pair[1].trim())
|
||||
}
|
||||
|
||||
def wet() {
|
||||
log.trace "wet()"
|
||||
sendEvent(name: "water", value: "wet")
|
||||
}
|
||||
|
||||
def dry() {
|
||||
log.trace "dry()"
|
||||
sendEvent(name: "water", value: "dry")
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Copyright 2015 SmartThings
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
metadata {
|
||||
definition (name: "Simulated Water Valve", namespace: "smartthings/testing", author: "SmartThings") {
|
||||
capability "Actuator"
|
||||
capability "Valve"
|
||||
capability "Sensor"
|
||||
}
|
||||
|
||||
// tile definitions
|
||||
tiles {
|
||||
standardTile("contact", "device.contact", width: 2, height: 2, canChangeIcon: true) {
|
||||
state "closed", label: '${name}', action: "valve.open", icon: "st.valves.water.closed", backgroundColor: "#e86d13"
|
||||
state "open", label: '${name}', action: "valve.close", icon: "st.valves.water.open", backgroundColor: "#53a7c0"
|
||||
}
|
||||
standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat") {
|
||||
state "default", label:'', action:"refresh.refresh", icon:"st.secondary.refresh"
|
||||
}
|
||||
|
||||
main "contact"
|
||||
details(["contact","refresh"])
|
||||
}
|
||||
}
|
||||
|
||||
def installed() {
|
||||
sendEvent(name: "contact", value: "closed")
|
||||
}
|
||||
|
||||
def open() {
|
||||
sendEvent(name: "contact", value: "open")
|
||||
}
|
||||
|
||||
def close() {
|
||||
sendEvent(name: "contact", value: "closed")
|
||||
}
|
||||
Reference in New Issue
Block a user