mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-09 13:21:53 +00:00
Compare commits
11 Commits
PROD_2017.
...
MSA-1937-1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b374dcbec | ||
|
|
7e8baeeb0b | ||
|
|
ad824a9dd8 | ||
|
|
980bef6879 | ||
|
|
120935f14e | ||
|
|
032f4a92d4 | ||
|
|
6d528683e6 | ||
|
|
8bcbe7b924 | ||
|
|
69dd13f333 | ||
|
|
29c7049d60 | ||
|
|
03a79b8bb5 |
900
devicetypes/happy-new/kad.src/kad.groovy
Normal file
900
devicetypes/happy-new/kad.src/kad.groovy
Normal file
@@ -0,0 +1,900 @@
|
||||
/**
|
||||
* kad
|
||||
*
|
||||
* Copyright 2017 Kadeem Coleman
|
||||
*
|
||||
* 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: "kad", namespace: "happy new ", author: "Kadeem Coleman") {
|
||||
capability "Acceleration Sensor"
|
||||
capability "Actuator"
|
||||
capability "Alarm"
|
||||
capability "Alarm System"
|
||||
capability "Alarm System Arm Only"
|
||||
capability "Astronomical Data"
|
||||
capability "Audio Notification"
|
||||
capability "Battery"
|
||||
capability "Beacon"
|
||||
capability "Bridge"
|
||||
capability "Buffered Video Capture"
|
||||
capability "Bulb"
|
||||
capability "Button"
|
||||
capability "Carbon Dioxide Measurement"
|
||||
capability "Carbon Monoxide Detector"
|
||||
capability "Color Control"
|
||||
capability "Color Temperature"
|
||||
capability "Configuration"
|
||||
capability "Consumable"
|
||||
capability "Contact Sensor"
|
||||
capability "Door Control"
|
||||
capability "Energy Meter"
|
||||
capability "Estimated Time Of Arrival"
|
||||
capability "Garage Door Control"
|
||||
capability "Health Check"
|
||||
capability "Image Capture"
|
||||
capability "Indicator"
|
||||
capability "Infrared Level"
|
||||
capability "Light"
|
||||
capability "Light"
|
||||
capability "Lock"
|
||||
capability "Lock Codes"
|
||||
capability "Lock Only"
|
||||
capability "Media Controller"
|
||||
capability "Momentary"
|
||||
capability "Motion Sensor"
|
||||
capability "Music Player"
|
||||
capability "Ocf"
|
||||
capability "Outlet"
|
||||
capability "pH Measurement"
|
||||
capability "Polling"
|
||||
capability "Power"
|
||||
capability "Power Meter"
|
||||
capability "Power Source"
|
||||
capability "Presence Sensor"
|
||||
capability "Refresh"
|
||||
capability "Relay Switch"
|
||||
capability "Samsung TV"
|
||||
capability "Sensor"
|
||||
capability "Shock Sensor"
|
||||
capability "Signal Strength"
|
||||
capability "Sleep Sensor"
|
||||
capability "Smoke Detector"
|
||||
capability "Sound Sensor"
|
||||
capability "Speech Recognition"
|
||||
capability "Speech Synthesis"
|
||||
capability "Switch"
|
||||
capability "Switch Level"
|
||||
capability "Tamper Alert"
|
||||
capability "Temperature Measurement"
|
||||
capability "Test Capability"
|
||||
capability "Thermostat"
|
||||
capability "Thermostat Cooling Setpoint"
|
||||
capability "Thermostat Fan Mode"
|
||||
capability "Thermostat Heating Setpoint"
|
||||
capability "Thermostat Mode"
|
||||
capability "Thermostat Operating State"
|
||||
capability "Thermostat Setpoint"
|
||||
capability "Three Axis"
|
||||
capability "Timed Session"
|
||||
capability "Tone"
|
||||
capability "Touch Sensor"
|
||||
capability "Ultraviolet Index"
|
||||
capability "Valve"
|
||||
capability "Video Camera"
|
||||
capability "Video Capture"
|
||||
capability "Voltage Measurement"
|
||||
capability "Water Sensor"
|
||||
capability "Window Shade"
|
||||
capability "Zw Multichannel"
|
||||
}
|
||||
|
||||
|
||||
simulator {
|
||||
// TODO: define status and reply messages here
|
||||
}
|
||||
|
||||
tiles {
|
||||
// TODO: define your main and details tiles here
|
||||
}
|
||||
}
|
||||
|
||||
// parse events into attributes
|
||||
def parse(String description) {
|
||||
log.debug "Parsing '${description}'"
|
||||
// TODO: handle 'acceleration' attribute
|
||||
// TODO: handle 'alarm' attribute
|
||||
// TODO: handle 'alarmSystemStatus' attribute
|
||||
// TODO: handle 'alarmSystemStatus' attribute
|
||||
// TODO: handle 'sunrise' attribute
|
||||
// TODO: handle 'sunset' attribute
|
||||
// TODO: handle 'sunriseTime' attribute
|
||||
// TODO: handle 'sunsetTime' attribute
|
||||
// TODO: handle 'battery' attribute
|
||||
// TODO: handle 'presence' attribute
|
||||
// TODO: handle 'clip' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'button' attribute
|
||||
// TODO: handle 'numberOfButtons' attribute
|
||||
// TODO: handle 'carbonDioxide' attribute
|
||||
// TODO: handle 'carbonMonoxide' attribute
|
||||
// TODO: handle 'hue' attribute
|
||||
// TODO: handle 'saturation' attribute
|
||||
// TODO: handle 'color' attribute
|
||||
// TODO: handle 'colorTemperature' attribute
|
||||
// TODO: handle 'consumableStatus' attribute
|
||||
// TODO: handle 'contact' attribute
|
||||
// TODO: handle 'door' attribute
|
||||
// TODO: handle 'energy' attribute
|
||||
// TODO: handle 'eta' attribute
|
||||
// TODO: handle 'door' attribute
|
||||
// TODO: handle 'checkInterval' attribute
|
||||
// TODO: handle 'image' attribute
|
||||
// TODO: handle 'indicatorStatus' attribute
|
||||
// TODO: handle 'infraredLevel' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'lock' attribute
|
||||
// TODO: handle 'lock' attribute
|
||||
// TODO: handle 'codeReport' attribute
|
||||
// TODO: handle 'codeChanged' attribute
|
||||
// TODO: handle 'lock' attribute
|
||||
// TODO: handle 'activities' attribute
|
||||
// TODO: handle 'currentActivity' attribute
|
||||
// TODO: handle 'motion' attribute
|
||||
// TODO: handle 'status' attribute
|
||||
// TODO: handle 'level' attribute
|
||||
// TODO: handle 'trackDescription' attribute
|
||||
// TODO: handle 'trackData' attribute
|
||||
// TODO: handle 'mute' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'pH' attribute
|
||||
// TODO: handle 'powerSource' attribute
|
||||
// TODO: handle 'power' attribute
|
||||
// TODO: handle 'powerSource' attribute
|
||||
// TODO: handle 'presence' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'volume' attribute
|
||||
// TODO: handle 'mute' attribute
|
||||
// TODO: handle 'pictureMode' attribute
|
||||
// TODO: handle 'soundMode' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'messageButton' attribute
|
||||
// TODO: handle 'shock' attribute
|
||||
// TODO: handle 'lqi' attribute
|
||||
// TODO: handle 'rssi' attribute
|
||||
// TODO: handle 'sleeping' attribute
|
||||
// TODO: handle 'smoke' attribute
|
||||
// TODO: handle 'carbonMonoxide' attribute
|
||||
// TODO: handle 'sound' attribute
|
||||
// TODO: handle 'phraseSpoken' attribute
|
||||
// TODO: handle 'switch' attribute
|
||||
// TODO: handle 'level' attribute
|
||||
// TODO: handle 'tamper' attribute
|
||||
// TODO: handle 'temperature' attribute
|
||||
// TODO: handle 'temperature' attribute
|
||||
// TODO: handle 'heatingSetpoint' attribute
|
||||
// TODO: handle 'coolingSetpoint' attribute
|
||||
// TODO: handle 'thermostatSetpoint' attribute
|
||||
// TODO: handle 'thermostatMode' attribute
|
||||
// TODO: handle 'thermostatFanMode' attribute
|
||||
// TODO: handle 'thermostatOperatingState' attribute
|
||||
// TODO: handle 'schedule' attribute
|
||||
// TODO: handle 'coolingSetpointMin' attribute
|
||||
// TODO: handle 'coolingSetpointMax' attribute
|
||||
// TODO: handle 'heatingSetpointMin' attribute
|
||||
// TODO: handle 'heatingSetpointMax' attribute
|
||||
// TODO: handle 'thermostatSetpointMin' attribute
|
||||
// TODO: handle 'thermostatSetpointMax' attribute
|
||||
// TODO: handle 'coolingSetpointMin' attribute
|
||||
// TODO: handle 'coolingSetpointMax' attribute
|
||||
// TODO: handle 'heatingSetpointMin' attribute
|
||||
// TODO: handle 'heatingSetpointMax' attribute
|
||||
// TODO: handle 'thermostatSetpointMin' attribute
|
||||
// TODO: handle 'thermostatSetpointMax' attribute
|
||||
// TODO: handle 'coolingSetpoint' attribute
|
||||
// TODO: handle 'coolingSetpointMin' attribute
|
||||
// TODO: handle 'coolingSetpointMax' attribute
|
||||
// TODO: handle 'thermostatFanMode' attribute
|
||||
// TODO: handle 'heatingSetpoint' attribute
|
||||
// TODO: handle 'heatingSetpointMin' attribute
|
||||
// TODO: handle 'heatingSetpointMax' attribute
|
||||
// TODO: handle 'thermostatMode' attribute
|
||||
// TODO: handle 'thermostatOperatingState' attribute
|
||||
// TODO: handle 'thermostatSetpoint' attribute
|
||||
// TODO: handle 'thermostatSetpointMin' attribute
|
||||
// TODO: handle 'thermostatSetpointMax' attribute
|
||||
// TODO: handle 'threeAxis' attribute
|
||||
// TODO: handle 'sessionStatus' attribute
|
||||
// TODO: handle 'timeRemaining' attribute
|
||||
// TODO: handle 'touch' attribute
|
||||
// TODO: handle 'ultravioletIndex' attribute
|
||||
// TODO: handle 'contact' attribute
|
||||
// TODO: handle 'valve' attribute
|
||||
// TODO: handle 'camera' attribute
|
||||
// TODO: handle 'statusMessage' attribute
|
||||
// TODO: handle 'mute' attribute
|
||||
// TODO: handle 'settings' attribute
|
||||
// TODO: handle 'clip' attribute
|
||||
// TODO: handle 'stream' attribute
|
||||
// TODO: handle 'voltage' attribute
|
||||
// TODO: handle 'water' attribute
|
||||
// TODO: handle 'windowShade' attribute
|
||||
// TODO: handle 'epEvent' attribute
|
||||
// TODO: handle 'epInfo' attribute
|
||||
|
||||
}
|
||||
|
||||
// handle commands
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def strobe() {
|
||||
log.debug "Executing 'strobe'"
|
||||
// TODO: handle 'strobe' command
|
||||
}
|
||||
|
||||
def siren() {
|
||||
log.debug "Executing 'siren'"
|
||||
// TODO: handle 'siren' command
|
||||
}
|
||||
|
||||
def both() {
|
||||
log.debug "Executing 'both'"
|
||||
// TODO: handle 'both' command
|
||||
}
|
||||
|
||||
def sendEvent(alarmSystemStatus,off)() {
|
||||
log.debug "Executing 'sendEvent(alarmSystemStatus,off)'"
|
||||
// TODO: handle 'sendEvent(alarmSystemStatus,off)' command
|
||||
}
|
||||
|
||||
def sendEvent(alarmSystemStatus,stay)() {
|
||||
log.debug "Executing 'sendEvent(alarmSystemStatus,stay)'"
|
||||
// TODO: handle 'sendEvent(alarmSystemStatus,stay)' command
|
||||
}
|
||||
|
||||
def sendEvent(alarmSystemStatus,away)() {
|
||||
log.debug "Executing 'sendEvent(alarmSystemStatus,away)'"
|
||||
// TODO: handle 'sendEvent(alarmSystemStatus,away)' command
|
||||
}
|
||||
|
||||
def sendEvent(alarmSystemStatus,stay)() {
|
||||
log.debug "Executing 'sendEvent(alarmSystemStatus,stay)'"
|
||||
// TODO: handle 'sendEvent(alarmSystemStatus,stay)' command
|
||||
}
|
||||
|
||||
def sendEvent(alarmSystemStatus,away)() {
|
||||
log.debug "Executing 'sendEvent(alarmSystemStatus,away)'"
|
||||
// TODO: handle 'sendEvent(alarmSystemStatus,away)' command
|
||||
}
|
||||
|
||||
def sendEvent(sunrise)() {
|
||||
log.debug "Executing 'sendEvent(sunrise)'"
|
||||
// TODO: handle 'sendEvent(sunrise)' command
|
||||
}
|
||||
|
||||
def sendEvent(sunset)() {
|
||||
log.debug "Executing 'sendEvent(sunset)'"
|
||||
// TODO: handle 'sendEvent(sunset)' command
|
||||
}
|
||||
|
||||
def sendEvent(sunriseTime)() {
|
||||
log.debug "Executing 'sendEvent(sunriseTime)'"
|
||||
// TODO: handle 'sendEvent(sunriseTime)' command
|
||||
}
|
||||
|
||||
def sendEvent(sunsetTime)() {
|
||||
log.debug "Executing 'sendEvent(sunsetTime)'"
|
||||
// TODO: handle 'sendEvent(sunsetTime)' command
|
||||
}
|
||||
|
||||
def playText() {
|
||||
log.debug "Executing 'playText'"
|
||||
// TODO: handle 'playText' command
|
||||
}
|
||||
|
||||
def playTextAndResume() {
|
||||
log.debug "Executing 'playTextAndResume'"
|
||||
// TODO: handle 'playTextAndResume' command
|
||||
}
|
||||
|
||||
def playTextAndRestore() {
|
||||
log.debug "Executing 'playTextAndRestore'"
|
||||
// TODO: handle 'playTextAndRestore' command
|
||||
}
|
||||
|
||||
def playTrack() {
|
||||
log.debug "Executing 'playTrack'"
|
||||
// TODO: handle 'playTrack' command
|
||||
}
|
||||
|
||||
def playTrackAndResume() {
|
||||
log.debug "Executing 'playTrackAndResume'"
|
||||
// TODO: handle 'playTrackAndResume' command
|
||||
}
|
||||
|
||||
def playTrackAndRestore() {
|
||||
log.debug "Executing 'playTrackAndRestore'"
|
||||
// TODO: handle 'playTrackAndRestore' command
|
||||
}
|
||||
|
||||
def capture() {
|
||||
log.debug "Executing 'capture'"
|
||||
// TODO: handle 'capture' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def setHue() {
|
||||
log.debug "Executing 'setHue'"
|
||||
// TODO: handle 'setHue' command
|
||||
}
|
||||
|
||||
def setSaturation() {
|
||||
log.debug "Executing 'setSaturation'"
|
||||
// TODO: handle 'setSaturation' command
|
||||
}
|
||||
|
||||
def setColor() {
|
||||
log.debug "Executing 'setColor'"
|
||||
// TODO: handle 'setColor' command
|
||||
}
|
||||
|
||||
def setColorTemperature() {
|
||||
log.debug "Executing 'setColorTemperature'"
|
||||
// TODO: handle 'setColorTemperature' command
|
||||
}
|
||||
|
||||
def configure() {
|
||||
log.debug "Executing 'configure'"
|
||||
// TODO: handle 'configure' command
|
||||
}
|
||||
|
||||
def setConsumableStatus() {
|
||||
log.debug "Executing 'setConsumableStatus'"
|
||||
// TODO: handle 'setConsumableStatus' command
|
||||
}
|
||||
|
||||
def open() {
|
||||
log.debug "Executing 'open'"
|
||||
// TODO: handle 'open' command
|
||||
}
|
||||
|
||||
def close() {
|
||||
log.debug "Executing 'close'"
|
||||
// TODO: handle 'close' command
|
||||
}
|
||||
|
||||
def open() {
|
||||
log.debug "Executing 'open'"
|
||||
// TODO: handle 'open' command
|
||||
}
|
||||
|
||||
def close() {
|
||||
log.debug "Executing 'close'"
|
||||
// TODO: handle 'close' command
|
||||
}
|
||||
|
||||
def ping() {
|
||||
log.debug "Executing 'ping'"
|
||||
// TODO: handle 'ping' command
|
||||
}
|
||||
|
||||
def take() {
|
||||
log.debug "Executing 'take'"
|
||||
// TODO: handle 'take' command
|
||||
}
|
||||
|
||||
def indicatorWhenOn() {
|
||||
log.debug "Executing 'indicatorWhenOn'"
|
||||
// TODO: handle 'indicatorWhenOn' command
|
||||
}
|
||||
|
||||
def indicatorWhenOff() {
|
||||
log.debug "Executing 'indicatorWhenOff'"
|
||||
// TODO: handle 'indicatorWhenOff' command
|
||||
}
|
||||
|
||||
def indicatorNever() {
|
||||
log.debug "Executing 'indicatorNever'"
|
||||
// TODO: handle 'indicatorNever' command
|
||||
}
|
||||
|
||||
def setInfraredLevel() {
|
||||
log.debug "Executing 'setInfraredLevel'"
|
||||
// TODO: handle 'setInfraredLevel' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def lock() {
|
||||
log.debug "Executing 'lock'"
|
||||
// TODO: handle 'lock' command
|
||||
}
|
||||
|
||||
def unlock() {
|
||||
log.debug "Executing 'unlock'"
|
||||
// TODO: handle 'unlock' command
|
||||
}
|
||||
|
||||
def lock() {
|
||||
log.debug "Executing 'lock'"
|
||||
// TODO: handle 'lock' command
|
||||
}
|
||||
|
||||
def unlock() {
|
||||
log.debug "Executing 'unlock'"
|
||||
// TODO: handle 'unlock' command
|
||||
}
|
||||
|
||||
def updateCodes() {
|
||||
log.debug "Executing 'updateCodes'"
|
||||
// TODO: handle 'updateCodes' command
|
||||
}
|
||||
|
||||
def setCode() {
|
||||
log.debug "Executing 'setCode'"
|
||||
// TODO: handle 'setCode' command
|
||||
}
|
||||
|
||||
def deleteCode() {
|
||||
log.debug "Executing 'deleteCode'"
|
||||
// TODO: handle 'deleteCode' command
|
||||
}
|
||||
|
||||
def requestCode() {
|
||||
log.debug "Executing 'requestCode'"
|
||||
// TODO: handle 'requestCode' command
|
||||
}
|
||||
|
||||
def reloadAllCodes() {
|
||||
log.debug "Executing 'reloadAllCodes'"
|
||||
// TODO: handle 'reloadAllCodes' command
|
||||
}
|
||||
|
||||
def lock() {
|
||||
log.debug "Executing 'lock'"
|
||||
// TODO: handle 'lock' command
|
||||
}
|
||||
|
||||
def startActivity() {
|
||||
log.debug "Executing 'startActivity'"
|
||||
// TODO: handle 'startActivity' command
|
||||
}
|
||||
|
||||
def getAllActivities() {
|
||||
log.debug "Executing 'getAllActivities'"
|
||||
// TODO: handle 'getAllActivities' command
|
||||
}
|
||||
|
||||
def getCurrentActivity() {
|
||||
log.debug "Executing 'getCurrentActivity'"
|
||||
// TODO: handle 'getCurrentActivity' command
|
||||
}
|
||||
|
||||
def push() {
|
||||
log.debug "Executing 'push'"
|
||||
// TODO: handle 'push' command
|
||||
}
|
||||
|
||||
def play() {
|
||||
log.debug "Executing 'play'"
|
||||
// TODO: handle 'play' command
|
||||
}
|
||||
|
||||
def pause() {
|
||||
log.debug "Executing 'pause'"
|
||||
// TODO: handle 'pause' command
|
||||
}
|
||||
|
||||
def stop() {
|
||||
log.debug "Executing 'stop'"
|
||||
// TODO: handle 'stop' command
|
||||
}
|
||||
|
||||
def nextTrack() {
|
||||
log.debug "Executing 'nextTrack'"
|
||||
// TODO: handle 'nextTrack' command
|
||||
}
|
||||
|
||||
def playTrack() {
|
||||
log.debug "Executing 'playTrack'"
|
||||
// TODO: handle 'playTrack' command
|
||||
}
|
||||
|
||||
def setLevel() {
|
||||
log.debug "Executing 'setLevel'"
|
||||
// TODO: handle 'setLevel' command
|
||||
}
|
||||
|
||||
def mute() {
|
||||
log.debug "Executing 'mute'"
|
||||
// TODO: handle 'mute' command
|
||||
}
|
||||
|
||||
def previousTrack() {
|
||||
log.debug "Executing 'previousTrack'"
|
||||
// TODO: handle 'previousTrack' command
|
||||
}
|
||||
|
||||
def unmute() {
|
||||
log.debug "Executing 'unmute'"
|
||||
// TODO: handle 'unmute' command
|
||||
}
|
||||
|
||||
def setTrack() {
|
||||
log.debug "Executing 'setTrack'"
|
||||
// TODO: handle 'setTrack' command
|
||||
}
|
||||
|
||||
def resumeTrack() {
|
||||
log.debug "Executing 'resumeTrack'"
|
||||
// TODO: handle 'resumeTrack' command
|
||||
}
|
||||
|
||||
def restoreTrack() {
|
||||
log.debug "Executing 'restoreTrack'"
|
||||
// TODO: handle 'restoreTrack' command
|
||||
}
|
||||
|
||||
def postOcfCommand() {
|
||||
log.debug "Executing 'postOcfCommand'"
|
||||
// TODO: handle 'postOcfCommand' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def poll() {
|
||||
log.debug "Executing 'poll'"
|
||||
// TODO: handle 'poll' command
|
||||
}
|
||||
|
||||
def refresh() {
|
||||
log.debug "Executing 'refresh'"
|
||||
// TODO: handle 'refresh' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def volumeUp() {
|
||||
log.debug "Executing 'volumeUp'"
|
||||
// TODO: handle 'volumeUp' command
|
||||
}
|
||||
|
||||
def volumeDown() {
|
||||
log.debug "Executing 'volumeDown'"
|
||||
// TODO: handle 'volumeDown' command
|
||||
}
|
||||
|
||||
def setVolume() {
|
||||
log.debug "Executing 'setVolume'"
|
||||
// TODO: handle 'setVolume' command
|
||||
}
|
||||
|
||||
def mute() {
|
||||
log.debug "Executing 'mute'"
|
||||
// TODO: handle 'mute' command
|
||||
}
|
||||
|
||||
def unmute() {
|
||||
log.debug "Executing 'unmute'"
|
||||
// TODO: handle 'unmute' command
|
||||
}
|
||||
|
||||
def setPictureMode() {
|
||||
log.debug "Executing 'setPictureMode'"
|
||||
// TODO: handle 'setPictureMode' command
|
||||
}
|
||||
|
||||
def setSoundMode() {
|
||||
log.debug "Executing 'setSoundMode'"
|
||||
// TODO: handle 'setSoundMode' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def showMessage() {
|
||||
log.debug "Executing 'showMessage'"
|
||||
// TODO: handle 'showMessage' command
|
||||
}
|
||||
|
||||
def speak() {
|
||||
log.debug "Executing 'speak'"
|
||||
// TODO: handle 'speak' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def setLevel() {
|
||||
log.debug "Executing 'setLevel'"
|
||||
// TODO: handle 'setLevel' command
|
||||
}
|
||||
|
||||
def setHeatingSetpoint() {
|
||||
log.debug "Executing 'setHeatingSetpoint'"
|
||||
// TODO: handle 'setHeatingSetpoint' command
|
||||
}
|
||||
|
||||
def setCoolingSetpoint() {
|
||||
log.debug "Executing 'setCoolingSetpoint'"
|
||||
// TODO: handle 'setCoolingSetpoint' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def heat() {
|
||||
log.debug "Executing 'heat'"
|
||||
// TODO: handle 'heat' command
|
||||
}
|
||||
|
||||
def emergencyHeat() {
|
||||
log.debug "Executing 'emergencyHeat'"
|
||||
// TODO: handle 'emergencyHeat' command
|
||||
}
|
||||
|
||||
def cool() {
|
||||
log.debug "Executing 'cool'"
|
||||
// TODO: handle 'cool' command
|
||||
}
|
||||
|
||||
def setThermostatMode() {
|
||||
log.debug "Executing 'setThermostatMode'"
|
||||
// TODO: handle 'setThermostatMode' command
|
||||
}
|
||||
|
||||
def fanOn() {
|
||||
log.debug "Executing 'fanOn'"
|
||||
// TODO: handle 'fanOn' command
|
||||
}
|
||||
|
||||
def fanAuto() {
|
||||
log.debug "Executing 'fanAuto'"
|
||||
// TODO: handle 'fanAuto' command
|
||||
}
|
||||
|
||||
def fanCirculate() {
|
||||
log.debug "Executing 'fanCirculate'"
|
||||
// TODO: handle 'fanCirculate' command
|
||||
}
|
||||
|
||||
def setThermostatFanMode() {
|
||||
log.debug "Executing 'setThermostatFanMode'"
|
||||
// TODO: handle 'setThermostatFanMode' command
|
||||
}
|
||||
|
||||
def auto() {
|
||||
log.debug "Executing 'auto'"
|
||||
// TODO: handle 'auto' command
|
||||
}
|
||||
|
||||
def setSchedule() {
|
||||
log.debug "Executing 'setSchedule'"
|
||||
// TODO: handle 'setSchedule' command
|
||||
}
|
||||
|
||||
def setCoolingSetpoint() {
|
||||
log.debug "Executing 'setCoolingSetpoint'"
|
||||
// TODO: handle 'setCoolingSetpoint' command
|
||||
}
|
||||
|
||||
def fanOn() {
|
||||
log.debug "Executing 'fanOn'"
|
||||
// TODO: handle 'fanOn' command
|
||||
}
|
||||
|
||||
def fanAuto() {
|
||||
log.debug "Executing 'fanAuto'"
|
||||
// TODO: handle 'fanAuto' command
|
||||
}
|
||||
|
||||
def fanCirculate() {
|
||||
log.debug "Executing 'fanCirculate'"
|
||||
// TODO: handle 'fanCirculate' command
|
||||
}
|
||||
|
||||
def setThermostatFanMode() {
|
||||
log.debug "Executing 'setThermostatFanMode'"
|
||||
// TODO: handle 'setThermostatFanMode' command
|
||||
}
|
||||
|
||||
def setHeatingSetpoint() {
|
||||
log.debug "Executing 'setHeatingSetpoint'"
|
||||
// TODO: handle 'setHeatingSetpoint' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def heat() {
|
||||
log.debug "Executing 'heat'"
|
||||
// TODO: handle 'heat' command
|
||||
}
|
||||
|
||||
def emergencyHeat() {
|
||||
log.debug "Executing 'emergencyHeat'"
|
||||
// TODO: handle 'emergencyHeat' command
|
||||
}
|
||||
|
||||
def cool() {
|
||||
log.debug "Executing 'cool'"
|
||||
// TODO: handle 'cool' command
|
||||
}
|
||||
|
||||
def auto() {
|
||||
log.debug "Executing 'auto'"
|
||||
// TODO: handle 'auto' command
|
||||
}
|
||||
|
||||
def setThermostatMode() {
|
||||
log.debug "Executing 'setThermostatMode'"
|
||||
// TODO: handle 'setThermostatMode' command
|
||||
}
|
||||
|
||||
def setTimeRemaining() {
|
||||
log.debug "Executing 'setTimeRemaining'"
|
||||
// TODO: handle 'setTimeRemaining' command
|
||||
}
|
||||
|
||||
def start() {
|
||||
log.debug "Executing 'start'"
|
||||
// TODO: handle 'start' command
|
||||
}
|
||||
|
||||
def stop() {
|
||||
log.debug "Executing 'stop'"
|
||||
// TODO: handle 'stop' command
|
||||
}
|
||||
|
||||
def pause() {
|
||||
log.debug "Executing 'pause'"
|
||||
// TODO: handle 'pause' command
|
||||
}
|
||||
|
||||
def cancel() {
|
||||
log.debug "Executing 'cancel'"
|
||||
// TODO: handle 'cancel' command
|
||||
}
|
||||
|
||||
def beep() {
|
||||
log.debug "Executing 'beep'"
|
||||
// TODO: handle 'beep' command
|
||||
}
|
||||
|
||||
def open() {
|
||||
log.debug "Executing 'open'"
|
||||
// TODO: handle 'open' command
|
||||
}
|
||||
|
||||
def close() {
|
||||
log.debug "Executing 'close'"
|
||||
// TODO: handle 'close' command
|
||||
}
|
||||
|
||||
def on() {
|
||||
log.debug "Executing 'on'"
|
||||
// TODO: handle 'on' command
|
||||
}
|
||||
|
||||
def off() {
|
||||
log.debug "Executing 'off'"
|
||||
// TODO: handle 'off' command
|
||||
}
|
||||
|
||||
def mute() {
|
||||
log.debug "Executing 'mute'"
|
||||
// TODO: handle 'mute' command
|
||||
}
|
||||
|
||||
def unmute() {
|
||||
log.debug "Executing 'unmute'"
|
||||
// TODO: handle 'unmute' command
|
||||
}
|
||||
|
||||
def flip() {
|
||||
log.debug "Executing 'flip'"
|
||||
// TODO: handle 'flip' command
|
||||
}
|
||||
|
||||
def capture() {
|
||||
log.debug "Executing 'capture'"
|
||||
// TODO: handle 'capture' command
|
||||
}
|
||||
|
||||
def open() {
|
||||
log.debug "Executing 'open'"
|
||||
// TODO: handle 'open' command
|
||||
}
|
||||
|
||||
def close() {
|
||||
log.debug "Executing 'close'"
|
||||
// TODO: handle 'close' command
|
||||
}
|
||||
|
||||
def presetPosition() {
|
||||
log.debug "Executing 'presetPosition'"
|
||||
// TODO: handle 'presetPosition' command
|
||||
}
|
||||
|
||||
def enableEpEvents() {
|
||||
log.debug "Executing 'enableEpEvents'"
|
||||
// TODO: handle 'enableEpEvents' command
|
||||
}
|
||||
|
||||
def epCmd() {
|
||||
log.debug "Executing 'epCmd'"
|
||||
// TODO: handle 'epCmd' command
|
||||
}
|
||||
2
devicetypes/osotech/plantlink.src/.st-ignore
Normal file
2
devicetypes/osotech/plantlink.src/.st-ignore
Normal file
@@ -0,0 +1,2 @@
|
||||
.st-ignore
|
||||
README.md
|
||||
33
devicetypes/osotech/plantlink.src/README.md
Normal file
33
devicetypes/osotech/plantlink.src/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Osotech Plant Link
|
||||
|
||||
Cloud Execution
|
||||
|
||||
Works with:
|
||||
|
||||
* [OSO Technologies PlantLink Soil Moisture Sensor](https://www.smartthings.com/works-with-smartthings/oso-technologies/oso-technologies-plantlink-soil-moisture-sensor)
|
||||
|
||||
## Table of contents
|
||||
|
||||
* [Capabilities](#capabilities)
|
||||
* [Health](#device-health)
|
||||
* [Troubleshooting](#troubleshooting)
|
||||
|
||||
## Capabilities
|
||||
|
||||
* **Sensor** - detects sensor events
|
||||
* **Health Check** - indicates ability to get device health notifications
|
||||
|
||||
## Device Health
|
||||
|
||||
Plant Link sensor is a ZigBee sleepy device and checks in every 15 minutes.
|
||||
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
|
||||
|
||||
* __32min__ checkInterval
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the sensor is out of range.
|
||||
Pairing needs to be tried again by placing the sensor closer to the hub.
|
||||
Instructions related to pairing, resetting and removing the different motion sensors from SmartThings can be found in the following links
|
||||
for the different models:
|
||||
* [OSO Technologies PlantLink Soil Moisture Sensor Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206868986-PlantLink-Soil-Moisture-Sensor)
|
||||
@@ -24,6 +24,7 @@ import groovy.json.JsonBuilder
|
||||
metadata {
|
||||
definition (name: "PlantLink", namespace: "OsoTech", author: "Oso Technologies") {
|
||||
capability "Sensor"
|
||||
capability "Health Check"
|
||||
|
||||
command "setStatusIcon"
|
||||
command "setPlantFuelLevel"
|
||||
@@ -70,6 +71,16 @@ metadata {
|
||||
}
|
||||
}
|
||||
|
||||
def updated() {
|
||||
// Device-Watch allows 2 check-in misses from device
|
||||
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID])
|
||||
}
|
||||
|
||||
def installed() {
|
||||
// Device-Watch allows 2 check-in misses from device
|
||||
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID])
|
||||
}
|
||||
|
||||
def setStatusIcon(value){
|
||||
def status = ''
|
||||
switch (value) {
|
||||
@@ -161,4 +172,4 @@ def parseDescriptionAsMap(description) {
|
||||
map += []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ Works with:
|
||||
|
||||
## Device Health
|
||||
|
||||
Plant Link sensor is a Z-wave sleepy device and checks in every 15 minutes.
|
||||
Plant Link sensor is a ZigBee sleepy device and checks in every 15 minutes.
|
||||
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
|
||||
|
||||
* __32min__ checkInterval
|
||||
|
||||
2
devicetypes/smartthings/smartalert-siren.src/.st-ignore
Normal file
2
devicetypes/smartthings/smartalert-siren.src/.st-ignore
Normal file
@@ -0,0 +1,2 @@
|
||||
.st-ignore
|
||||
README.md
|
||||
39
devicetypes/smartthings/smartalert-siren.src/README.md
Normal file
39
devicetypes/smartthings/smartalert-siren.src/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Smartalert Siren
|
||||
|
||||
Cloud Execution
|
||||
|
||||
Works with:
|
||||
|
||||
* [FortrezZ Siren Strobe Alarm](https://www.smartthings.com/works-with-smartthings/other/fortrezz-water-valve)
|
||||
|
||||
## Table of contents
|
||||
|
||||
* [Capabilities](#capabilities)
|
||||
* [Health](#device-health)
|
||||
* [Troubleshooting](#troubleshooting)
|
||||
|
||||
## Capabilities
|
||||
|
||||
* **Actuator** - represents that a Device has commands
|
||||
* **Switch** - can detect state (possible values: on/off)
|
||||
* **Sensor** - detects sensor events
|
||||
* **Alarm** - allows for interacting with devices that serve as alarms
|
||||
* **Health Check** - indicates ability to get device health notifications
|
||||
|
||||
## Device Health
|
||||
|
||||
FortrezZ Siren Strobe Alarm is polled by the hub.
|
||||
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
|
||||
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
|
||||
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
|
||||
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
|
||||
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
|
||||
|
||||
* __32min__ checkInterval
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
|
||||
Pairing needs to be tried again by placing the device closer to the hub.
|
||||
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
|
||||
* [FortrezZ Siren Strobe Alarm Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/202294760-FortrezZ-Siren-Strobe-Alarm)
|
||||
@@ -21,10 +21,12 @@ metadata {
|
||||
capability "Switch"
|
||||
capability "Sensor"
|
||||
capability "Alarm"
|
||||
capability "Health Check"
|
||||
|
||||
command "test"
|
||||
|
||||
fingerprint deviceId: "0x1100", inClusters: "0x26,0x71"
|
||||
fingerprint mfr:"0084", prod:"0313", model:"010B", deviceJoinName: "FortrezZ Siren Strobe Alarm"
|
||||
}
|
||||
|
||||
simulator {
|
||||
@@ -68,6 +70,16 @@ metadata {
|
||||
}
|
||||
}
|
||||
|
||||
def installed() {
|
||||
// Device-Watch simply pings if no device events received for 32min(checkInterval)
|
||||
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
|
||||
}
|
||||
|
||||
def updated() {
|
||||
// Device-Watch simply pings if no device events received for 32min(checkInterval)
|
||||
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
|
||||
}
|
||||
|
||||
def on() {
|
||||
[
|
||||
zwave.basicV1.basicSet(value: 0xFF).format(),
|
||||
@@ -149,3 +161,10 @@ def createEvents(physicalgraph.zwave.commands.basicv1.BasicReport cmd)
|
||||
def zwaveEvent(physicalgraph.zwave.Command cmd) {
|
||||
log.warn "UNEXPECTED COMMAND: $cmd"
|
||||
}
|
||||
|
||||
/**
|
||||
* PING is used by Device-Watch in attempt to reach the Device
|
||||
* */
|
||||
def ping() {
|
||||
secure(zwave.basicV1.basicGet())
|
||||
}
|
||||
@@ -191,6 +191,10 @@ private List<Map> parseAxis(List<Map> attrData) {
|
||||
def y = hexToSignedInt(attrData.find { it.attrInt == 0x0013 }?.value)
|
||||
def z = hexToSignedInt(attrData.find { it.attrInt == 0x0014 }?.value)
|
||||
|
||||
if ([x, y ,z].any { it == null }) {
|
||||
return []
|
||||
}
|
||||
|
||||
def xyzResults = [:]
|
||||
if (device.getDataValue("manufacturer") == "SmartThings") {
|
||||
// This mapping matches the current behavior of the Device Handler for the Centralite sensors
|
||||
@@ -371,6 +375,10 @@ def updated() {
|
||||
}
|
||||
|
||||
private hexToSignedInt(hexVal) {
|
||||
if (!hexVal) {
|
||||
return null
|
||||
}
|
||||
|
||||
def unsignedVal = hexToInt(hexVal)
|
||||
unsignedVal > 32767 ? unsignedVal - 65536 : unsignedVal
|
||||
}
|
||||
|
||||
@@ -70,19 +70,27 @@ def parse(String description) {
|
||||
else {
|
||||
sendEvent(event)
|
||||
}
|
||||
}
|
||||
else {
|
||||
def cluster = zigbee.parse(description)
|
||||
if (cluster && cluster.clusterId == 0x0006 && cluster.command == 0x07) {
|
||||
if (cluster.data[0] == 0x00){
|
||||
} else {
|
||||
def descMap = zigbee.parseDescriptionAsMap(description)
|
||||
if (descMap && descMap.clusterInt == 0x0006 && descMap.commandInt == 0x07) {
|
||||
if (descMap.data[0] == "00") {
|
||||
log.debug "ON/OFF REPORTING CONFIG RESPONSE: " + cluster
|
||||
sendEvent(name: "checkInterval", value: 60 * 12, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID])
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
log.warn "ON/OFF REPORTING CONFIG FAILED- error code:${cluster.data[0]}"
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else if (device.getDataValue("manufacturer") == "sengled" && descMap && descMap.clusterInt == 0x0008 && descMap.attrInt == 0x0000) {
|
||||
// This is being done because the sengled element touch incorrectly uses the value 0xFF for the max level.
|
||||
// Per the ZCL spec for the UINT8 data type 0xFF is an invalid value, and 0xFE should be the max. Here we
|
||||
// manually handle the invalid attribute value since it will be ignored by getEvent as an invalid value.
|
||||
// We also set the level of the bulb to 0xFE so future level reports will be 0xFE until it is changed by
|
||||
// something else.
|
||||
if (descMap.value.toUpperCase() == "FF") {
|
||||
descMap.value = "FE"
|
||||
}
|
||||
sendHubCommand(zigbee.command(zigbee.LEVEL_CONTROL_CLUSTER, 0x00, "FE0000").collect { new physicalgraph.device.HubAction(it) }, 0)
|
||||
sendEvent(zigbee.getEventFromAttrData(descMap.clusterInt, descMap.attrInt, descMap.encoding, descMap.value))
|
||||
} else {
|
||||
log.warn "DID NOT PARSE MESSAGE for description : $description"
|
||||
log.debug zigbee.parseDescriptionAsMap(description)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Z-Wave Switch
|
||||
# Z-Wave Lock
|
||||
|
||||
Cloud Execution
|
||||
|
||||
@@ -6,7 +6,6 @@ Works with:
|
||||
|
||||
* [Yale Key Free Touchscreen Deadbolt (YRD240)](https://www.smartthings.com/works-with-smartthings/yale/yale-key-free-touchscreen-deadbolt-yrd240)
|
||||
|
||||
|
||||
## Table of contents
|
||||
|
||||
* [Capabilities](#capabilities)
|
||||
@@ -41,5 +40,3 @@ If the device doesn't pair when trying from the SmartThings mobile app, it is po
|
||||
Pairing needs to be tried again by placing the device closer to the hub.
|
||||
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
|
||||
* [General Z-Wave/ZigBee Yale Lock Troubleshooting](https://support.smartthings.com/hc/en-us/articles/205138400-How-to-connect-Yale-locks)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user