mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-20 13:20:53 +00:00
Compare commits
1 Commits
MSA-1897-1
...
PROD_2017.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
264e822c9f |
@@ -1,57 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright 2017 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 Refrigerator Door", namespace: "smartthings/testing", author: "SmartThings") {
|
|
||||||
capability "Contact Sensor"
|
|
||||||
capability "Sensor"
|
|
||||||
|
|
||||||
command "open"
|
|
||||||
command "close"
|
|
||||||
}
|
|
||||||
|
|
||||||
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")
|
|
||||||
}
|
|
||||||
standardTile("freezerDoor", "device.contact", width: 2, height: 2, decoration: "flat") {
|
|
||||||
state("closed", label:'Freezer', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
|
|
||||||
state("open", label:'Freezer', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
|
|
||||||
}
|
|
||||||
standardTile("mainDoor", "device.contact", width: 2, height: 2, decoration: "flat") {
|
|
||||||
state("closed", label:'Fridge', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
|
|
||||||
state("open", label:'Fridge', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
|
|
||||||
}
|
|
||||||
standardTile("control", "device.contact", width: 1, height: 1, decoration: "flat") {
|
|
||||||
state("closed", label:'${name}', icon:"st.contact.contact.closed", action: "open")
|
|
||||||
state("open", label:'${name}', icon:"st.contact.contact.open", action: "close")
|
|
||||||
}
|
|
||||||
main "contact"
|
|
||||||
details "contact"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def installed() {
|
|
||||||
sendEvent(name: "contact", value: "closed")
|
|
||||||
}
|
|
||||||
|
|
||||||
def open() {
|
|
||||||
sendEvent(name: "contact", value: "open")
|
|
||||||
parent.doorOpen(device.deviceNetworkId)
|
|
||||||
}
|
|
||||||
|
|
||||||
def close() {
|
|
||||||
sendEvent(name: "contact", value: "closed")
|
|
||||||
parent.doorClosed(device.deviceNetworkId)
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
/**
|
|
||||||
* Simulated Refrigerator Temperature Control
|
|
||||||
*
|
|
||||||
* Copyright 2017 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 Refrigerator Temperature Control", namespace: "smartthings/testing", author: "SmartThings") {
|
|
||||||
capability "Temperature Measurement"
|
|
||||||
capability "Thermostat Cooling Setpoint"
|
|
||||||
|
|
||||||
command "tempUp"
|
|
||||||
command "tempDown"
|
|
||||||
command "setpointUp"
|
|
||||||
command "setpointDown"
|
|
||||||
}
|
|
||||||
|
|
||||||
tiles {
|
|
||||||
valueTile("refrigerator", "device.temperature", width: 2, height: 2, canChangeBackground: true) {
|
|
||||||
state("temperature", label:'${currentValue}°', unit:"F",
|
|
||||||
backgroundColors:[
|
|
||||||
[value: 0, color: "#153591"],
|
|
||||||
[value: 40, color: "#1e9cbb"],
|
|
||||||
[value: 45, color: "#f1d801"]
|
|
||||||
]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
valueTile("freezer", "device.temperature", width: 2, height: 2, canChangeBackground: true) {
|
|
||||||
state("temperature", label:'${currentValue}°', unit:"F",
|
|
||||||
backgroundColors:[
|
|
||||||
[value: 0, color: "#153591"],
|
|
||||||
[value: 5, color: "#1e9cbb"],
|
|
||||||
[value: 15, color: "#f1d801"]
|
|
||||||
]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
valueTile("freezerSetpoint", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") {
|
|
||||||
state "setpoint", label:'Freezer Set: ${currentValue}°', unit:"F"
|
|
||||||
}
|
|
||||||
valueTile("refrigeratorSetpoint", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") {
|
|
||||||
state "heat", label:'Fridge Set: ${currentValue}°', unit:"F"
|
|
||||||
}
|
|
||||||
standardTile("tempUp", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
|
||||||
state "default", action:"tempUp", icon:"st.thermostat.thermostat-up"
|
|
||||||
}
|
|
||||||
standardTile("tempDown", "device.temperature", inactiveLabel: false, decoration: "flat") {
|
|
||||||
state "default", action:"tempDown", icon:"st.thermostat.thermostat-down"
|
|
||||||
}
|
|
||||||
standardTile("setpointUp", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") {
|
|
||||||
state "default", action:"setpointUp", icon:"st.thermostat.thermostat-up"
|
|
||||||
}
|
|
||||||
standardTile("setpointDown", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") {
|
|
||||||
state "default", action:"setpointDown", icon:"st.thermostat.thermostat-down"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def installed() {
|
|
||||||
sendEvent(name: "temperature", value: device.componentName == "freezer" ? 2 : 40)
|
|
||||||
sendEvent(name: "coolingSetpoint", value: device.componentName == "freezer" ? 2 : 40)
|
|
||||||
}
|
|
||||||
|
|
||||||
def updated() {
|
|
||||||
installed()
|
|
||||||
}
|
|
||||||
|
|
||||||
void tempUp() {
|
|
||||||
def value = device.currentValue("temperature") as Integer
|
|
||||||
sendEvent(name: "temperature", value: value + 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
void tempDown() {
|
|
||||||
def value = device.currentValue("temperature") as Integer
|
|
||||||
sendEvent(name: "temperature", value: value - 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
void setpointUp() {
|
|
||||||
def value = device.currentValue("coolingSetpoint") as Integer
|
|
||||||
sendEvent(name: "coolingSetpoint", value: value + 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
void setpointDown() {
|
|
||||||
def value = device.currentValue("coolingSetpoint") as Integer
|
|
||||||
sendEvent(name: "coolingSetpoint", value: value - 1)
|
|
||||||
}
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
/**
|
|
||||||
* Simulated Refrigerator
|
|
||||||
*
|
|
||||||
* Example composite device handler that simulates a refrigerator with a freezer compartment and a main compartment.
|
|
||||||
* Each of these compartments has its own door, temperature, and temperature setpoint. Each compartment modeled
|
|
||||||
* as a child device of the main refrigerator device so that temperature-based SmartApps can be used with each
|
|
||||||
* compartment
|
|
||||||
*
|
|
||||||
* Copyright 2017 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 Refrigerator", namespace: "smartthings/testing", author: "SmartThings") {
|
|
||||||
capability "Contact Sensor"
|
|
||||||
}
|
|
||||||
|
|
||||||
tiles(scale: 2) {
|
|
||||||
standardTile("contact", "device.contact", width: 4, height: 4) {
|
|
||||||
state("closed", label:'${name}', icon:"st.fridge.fridge-closed", backgroundColor:"#79b821")
|
|
||||||
state("open", label:'${name}', icon:"st.fridge.fridge-open", backgroundColor:"#ffa81e")
|
|
||||||
}
|
|
||||||
childDeviceTile("freezerDoor", "freezerDoor", height: 2, width: 2, childTileName: "freezerDoor")
|
|
||||||
childDeviceTile("mainDoor", "mainDoor", height: 2, width: 2, childTileName: "mainDoor")
|
|
||||||
childDeviceTile("freezer", "freezer", height: 2, width: 2, childTileName: "freezer")
|
|
||||||
childDeviceTile("refrigerator", "refrigerator", height: 2, width: 2, childTileName: "refrigerator")
|
|
||||||
childDeviceTile("freezerSetpoint", "freezer", height: 1, width: 2, childTileName: "freezerSetpoint")
|
|
||||||
childDeviceTile("refrigeratorSetpoint", "refrigerator", height: 1, width: 2, childTileName: "refrigeratorSetpoint")
|
|
||||||
|
|
||||||
// for simulator
|
|
||||||
childDeviceTile("freezerUp", "freezer", height: 1, width: 1, childTileName: "tempUp")
|
|
||||||
childDeviceTile("freezerDown", "freezer", height: 1, width: 1, childTileName: "tempDown")
|
|
||||||
childDeviceTile("refrigeratorUp", "refrigerator", height: 1, width: 1, childTileName: "tempUp")
|
|
||||||
childDeviceTile("refrigeratorDown", "refrigerator", height: 1, width: 1, childTileName: "tempDown")
|
|
||||||
childDeviceTile("freezerDoorControl", "freezerDoor", height: 1, width: 1, childTileName: "control")
|
|
||||||
childDeviceTile("mainDoorControl", "mainDoor", height: 1, width: 1, childTileName: "control")
|
|
||||||
childDeviceTile("freezerSetpointUp", "freezer", height: 1, width: 1, childTileName: "setpointUp")
|
|
||||||
childDeviceTile("freezerSetpointDown", "freezer", height: 1, width: 1, childTileName: "setpointDown")
|
|
||||||
childDeviceTile("refrigeratorSetpointUp", "refrigerator", height: 1, width: 1, childTileName: "setpointUp")
|
|
||||||
childDeviceTile("refrigeratorSetpointDown", "refrigerator", height: 1, width: 1, childTileName: "setpointDown")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def installed() {
|
|
||||||
state.counter = state.counter ? state.counter + 1 : 1
|
|
||||||
if (state.counter == 1) {
|
|
||||||
addChildDevice(
|
|
||||||
"Simulated Refrigerator Door",
|
|
||||||
"${device.deviceNetworkId}.1",
|
|
||||||
null,
|
|
||||||
[completedSetup: true, label: "${device.label} (Freezer Door)", componentName: "freezerDoor", componentLabel: "Freezer Door"])
|
|
||||||
|
|
||||||
addChildDevice(
|
|
||||||
"Simulated Refrigerator Door",
|
|
||||||
"${device.deviceNetworkId}.2",
|
|
||||||
null,
|
|
||||||
[completedSetup: true, label: "${device.label} (Main Door)", componentName: "mainDoor", componentLabel: "Main Door"])
|
|
||||||
|
|
||||||
addChildDevice(
|
|
||||||
"Simulated Refrigerator Temperature Control",
|
|
||||||
"${device.deviceNetworkId}.3",
|
|
||||||
null,
|
|
||||||
[completedSetup: true, label: "${device.label} (Freezer)", componentName: "freezer", componentLabel: "Freezer"])
|
|
||||||
|
|
||||||
addChildDevice(
|
|
||||||
"Simulated Refrigerator Temperature Control",
|
|
||||||
"${device.deviceNetworkId}.3",
|
|
||||||
null,
|
|
||||||
[completedSetup: true, label: "${device.label} (Fridge)", componentName: "refrigerator", componentLabel: "Fridge"])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def doorOpen(dni) {
|
|
||||||
// If any door opens, then the refrigerator is considered to be open
|
|
||||||
sendEvent(name: "contact", value: "open")
|
|
||||||
}
|
|
||||||
|
|
||||||
def doorClosed(dni) {
|
|
||||||
// Both doors must be closed for the refrigerator to be considered closed
|
|
||||||
if (!childDevices.find{it.deviceNetworkId != dni && it.currentValue("contact") == "open"}) {
|
|
||||||
sendEvent(name: "contact", value: "closed")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,6 @@ metadata {
|
|||||||
command "enrollResponse"
|
command "enrollResponse"
|
||||||
|
|
||||||
fingerprint inClusters: "0000, 0001, 0003, 0020, 0402, 0B05", outClusters: "0003, 0006, 0008, 0019", manufacturer: "OSRAM", model: "LIGHTIFY Dimming Switch", deviceJoinName: "OSRAM LIGHTIFY Dimming Switch"
|
fingerprint inClusters: "0000, 0001, 0003, 0020, 0402, 0B05", outClusters: "0003, 0006, 0008, 0019", manufacturer: "OSRAM", model: "LIGHTIFY Dimming Switch", deviceJoinName: "OSRAM LIGHTIFY Dimming Switch"
|
||||||
fingerprint inClusters: "0000, 0001, 0003, 0020, 0402, 0B05", outClusters: "0003, 0006, 0008, 0019", manufacturer: "CentraLite", model: "3130", deviceJoinName: "Centralite Zigbee Smart Switch"
|
|
||||||
//fingerprint inClusters: "0000, 0001, 0003, 0020, 0500", outClusters: "0003,0019", manufacturer: "CentraLite", model: "3455-L", deviceJoinName: "Iris Care Pendant"
|
//fingerprint inClusters: "0000, 0001, 0003, 0020, 0500", outClusters: "0003,0019", manufacturer: "CentraLite", model: "3455-L", deviceJoinName: "Iris Care Pendant"
|
||||||
fingerprint inClusters: "0000, 0001, 0003, 0007, 0020, 0402, 0B05", outClusters: "0003, 0006, 0019", manufacturer: "CentraLite", model: "3460-L", deviceJoinName: "Iris Smart Button"
|
fingerprint inClusters: "0000, 0001, 0003, 0007, 0020, 0402, 0B05", outClusters: "0003, 0006, 0019", manufacturer: "CentraLite", model: "3460-L", deviceJoinName: "Iris Smart Button"
|
||||||
fingerprint inClusters: "0000, 0001, 0003, 0007, 0020, 0B05", outClusters: "0003, 0006, 0019", manufacturer: "CentraLite", model:"3450-L", deviceJoinName: "Iris KeyFob"
|
fingerprint inClusters: "0000, 0001, 0003, 0007, 0020, 0B05", outClusters: "0003, 0006, 0019", manufacturer: "CentraLite", model:"3450-L", deviceJoinName: "Iris KeyFob"
|
||||||
@@ -252,19 +251,12 @@ def initialize() {
|
|||||||
if ((device.getDataValue("manufacturer") == "OSRAM") && (device.getDataValue("model") == "LIGHTIFY Dimming Switch")) {
|
if ((device.getDataValue("manufacturer") == "OSRAM") && (device.getDataValue("model") == "LIGHTIFY Dimming Switch")) {
|
||||||
sendEvent(name: "numberOfButtons", value: 2)
|
sendEvent(name: "numberOfButtons", value: 2)
|
||||||
}
|
}
|
||||||
else if (device.getDataValue("manufacturer") == "CentraLite") {
|
else if ((device.getDataValue("manufacturer") == "CentraLite") &&
|
||||||
if (device.getDataValue("model") == "3130") {
|
((device.getDataValue("model") == "3455-L") || (device.getDataValue("model") == "3460-L"))) {
|
||||||
sendEvent(name: "numberOfButtons", value: 2)
|
sendEvent(name: "numberOfButtons", value: 1)
|
||||||
}
|
}
|
||||||
else if ((device.getDataValue("model") == "3455-L") || (device.getDataValue("model") == "3460-L")) {
|
else if ((device.getDataValue("manufacturer") == "CentraLite") && (device.getDataValue("model") == "3450-L")) {
|
||||||
sendEvent(name: "numberOfButtons", value: 1)
|
sendEvent(name: "numberOfButtons", value: 4)
|
||||||
}
|
|
||||||
else if (device.getDataValue("model") == "3450-L") {
|
|
||||||
sendEvent(name: "numberOfButtons", value: 4)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sendEvent(name: "numberOfButtons", value: 4) //default case. can be changed later.
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//default. can be changed
|
//default. can be changed
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
import grails.converters.JSON
|
|
||||||
|
|
||||||
/**
|
|
||||||
* JSON API Access App
|
|
||||||
*/
|
|
||||||
|
|
||||||
definition(
|
|
||||||
name: "Bling_SmartApps",
|
|
||||||
namespace: "BlingSmartApps",
|
|
||||||
author: "Bling",
|
|
||||||
description: "Return things as JSON",
|
|
||||||
category: "My Apps",
|
|
||||||
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
|
|
||||||
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png",
|
|
||||||
oauth: [displayName: "JSON API", displayLink: ""]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
preferences {
|
|
||||||
section("Allow these things to be exposed via JSON...") {
|
|
||||||
input "switches", "capability.switch", title: "Switches", multiple: true, required: true, hideWhenEmpty: true
|
|
||||||
|
|
||||||
//input "temperatures", "capability.temperatureMeasurement", title: "Temp Measurements", multiple: true, required: false
|
|
||||||
//input "contacts", "capability.contactSensor", title: "Open/Closed Devices", multiple: true, required: false
|
|
||||||
//input "presences", "capability.presenceSensor", title: "Presence Sensors", multiple: true, required: false
|
|
||||||
//input "motions", "capability.motionSensor", title: "Motion Sensors", multiple: true, required: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mappings {
|
|
||||||
path("/things") {
|
|
||||||
action: [
|
|
||||||
GET: "listThings"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def listThings() {
|
|
||||||
[
|
|
||||||
switches: switches.collect{device(it,"switch")}
|
|
||||||
/*
|
|
||||||
switches: switches.collect{device(it,"switch")},
|
|
||||||
temperatures: temperatures.collect{device(it,"temperature")},
|
|
||||||
contacts: contacts.collect{device(it,"contact")},
|
|
||||||
presences: presences.collect{device(it,"presence")},
|
|
||||||
motions: motions.collect{device(it,"motion")}
|
|
||||||
*/
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
private device(it, type) {
|
|
||||||
def device_state = [label:it.label, type:type, id:it.id, devtest:it]
|
|
||||||
|
|
||||||
for (attribute in it.supportedAttributes) {
|
|
||||||
device_state."${attribute}" = it.currentValue("${attribute}")
|
|
||||||
}
|
|
||||||
|
|
||||||
device_state ? device_state : null
|
|
||||||
}
|
|
||||||
|
|
||||||
def installed() {}
|
|
||||||
|
|
||||||
def updated() {}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user