mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-15 13:10:51 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be9c3a279d |
@@ -0,0 +1,125 @@
|
|||||||
|
/**
|
||||||
|
* Aeon Labs DSB29-ZWUS Gen2
|
||||||
|
*
|
||||||
|
* Original Author: SmartThings
|
||||||
|
* Date: 2013-11-3
|
||||||
|
* Modified By: Varun
|
||||||
|
* Modified Date: 2016-02-28
|
||||||
|
* Updated original Zwave Door/Window Sensor report tamper alarm as open/close
|
||||||
|
*/
|
||||||
|
|
||||||
|
// for the UI
|
||||||
|
metadata {
|
||||||
|
// Automatically generated. Make future change here.
|
||||||
|
definition (name: "Aeon Labs DSB29-ZWUS", namespace: "Aeon", author: "Varun") {
|
||||||
|
|
||||||
|
capability "contact sensor"
|
||||||
|
capability "battery"
|
||||||
|
|
||||||
|
fingerprint profileId: "0x2001", inClusters: "0x30, 0x80, 0x84, 0x71, 0x70, 0x85, 0x86, 0x72"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// simulator metadata
|
||||||
|
simulator {
|
||||||
|
// status messages
|
||||||
|
status "open": "command: 2001, payload: FF"
|
||||||
|
status "closed": "command: 2001, payload: 00"
|
||||||
|
}
|
||||||
|
|
||||||
|
// UI tile definitions
|
||||||
|
tiles {
|
||||||
|
standardTile("contact", "device.contact", width: 2, height: 2) {
|
||||||
|
state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#ffa81e"
|
||||||
|
state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#79b821"
|
||||||
|
}
|
||||||
|
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
|
||||||
|
state "battery", label:'${currentValue}% battery', unit:""
|
||||||
|
}
|
||||||
|
|
||||||
|
main "contact"
|
||||||
|
details(["contact", "battery"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def parse(String description) {
|
||||||
|
def result = null
|
||||||
|
if (description.startsWith("Err")) {
|
||||||
|
result = createEvent(descriptionText:description, displayed:true)
|
||||||
|
} else {
|
||||||
|
def cmd = zwave.parse(description, [0x20: 1, 0x25: 1, 0x30: 1, 0x31: 5, 0x80: 1, 0x84: 1, 0x71: 3, 0x9C: 1])
|
||||||
|
log.debug "PARSED ${cmd}"
|
||||||
|
if (cmd) {
|
||||||
|
result = zwaveEvent(cmd)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
def sensorValueEvent(Short value) {
|
||||||
|
if (value) {
|
||||||
|
createEvent(name: "contact", value: "open", descriptionText: "$device.displayName is open")
|
||||||
|
} else {
|
||||||
|
createEvent(name: "contact", value: "closed", descriptionText: "$device.displayName is closed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicReport cmd)
|
||||||
|
{
|
||||||
|
sensorValueEvent(cmd.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicSet cmd)
|
||||||
|
{
|
||||||
|
sensorValueEvent(cmd.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryReport cmd)
|
||||||
|
{
|
||||||
|
sensorValueEvent(cmd.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.sensorbinaryv1.SensorBinaryReport cmd)
|
||||||
|
{
|
||||||
|
sensorValueEvent(cmd.sensorValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.sensoralarmv1.SensorAlarmReport cmd)
|
||||||
|
{
|
||||||
|
sensorValueEvent(cmd.sensorState)
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.notificationv3.NotificationReport cmd)
|
||||||
|
{
|
||||||
|
sensorValueEvent(cmd.v1AlarmLevel)
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.wakeupv1.WakeUpNotification cmd)
|
||||||
|
{
|
||||||
|
def result = [createEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)]
|
||||||
|
if (!state.lastbat || (new Date().time) - state.lastbat > 53*60*60*1000) {
|
||||||
|
result << response(zwave.batteryV1.batteryGet())
|
||||||
|
result << response("delay 1200")
|
||||||
|
}
|
||||||
|
result << response(zwave.wakeUpV1.wakeUpNoMoreInformation())
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.commands.batteryv1.BatteryReport cmd) {
|
||||||
|
def map = [ name: "battery", unit: "%" ]
|
||||||
|
if (cmd.batteryLevel == 0xFF) {
|
||||||
|
map.value = 1
|
||||||
|
map.descriptionText = "${device.displayName} has a low battery"
|
||||||
|
map.isStateChange = true
|
||||||
|
} else {
|
||||||
|
map.value = cmd.batteryLevel
|
||||||
|
}
|
||||||
|
state.lastbat = new Date().time
|
||||||
|
[createEvent(map), response(zwave.wakeUpV1.wakeUpNoMoreInformation())]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def zwaveEvent(physicalgraph.zwave.Command cmd) {
|
||||||
|
createEvent(descriptionText: "$device.displayName: $cmd", displayed: false)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user