Compare commits
6 Commits
MSA-2490-2
...
user186_9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4bba6f267a | ||
|
|
9d6cc16c16 | ||
|
|
16d89e61fd | ||
|
|
1983484032 | ||
|
|
35b63b3289 | ||
|
|
3f8c0e92e3 |
@@ -124,6 +124,10 @@ metadata {
|
||||
input "holdType", "enum", title: "Hold Type",
|
||||
description: "When changing temperature, use Temporary (Until next transition) or Permanent hold (default)",
|
||||
required: false, options:["Temporary", "Permanent"]
|
||||
input "deadbandSetting", "number", title: "Minimum temperature difference between the desired Heat and Cool " +
|
||||
"temperatures in Auto mode:\nNote! This must be the same as configured on the thermostat",
|
||||
description: "temperature difference °F", defaultValue: 5,
|
||||
required: false
|
||||
}
|
||||
|
||||
}
|
||||
@@ -172,7 +176,7 @@ def generateEvent(Map results) {
|
||||
if (name=="temperature" || name=="heatingSetpoint" || name=="coolingSetpoint" ) {
|
||||
sendValue = getTempInLocalScale(value, "F") // API return temperature values in F
|
||||
event << [value: sendValue, unit: locationScale]
|
||||
} else if (name=="maxCoolingSetpoint" || name=="minCoolingSetpoint" || name=="maxHeatingSetpoint" || name=="minHeatingSetpoint") {
|
||||
} else if (name=="maxCoolingSetpoint" || name=="minCoolingSetpoint" || name=="maxHeatingSetpoint" || name=="minHeatingSetpoint") {
|
||||
// Old attributes, keeping for backward compatibility
|
||||
sendValue = getTempInLocalScale(value, "F") // API return temperature values in F
|
||||
event << [value: sendValue, unit: locationScale, displayed: false]
|
||||
@@ -465,7 +469,7 @@ def enforceSetpointLimits(setpoint, data, raise = null) {
|
||||
def maxSetpoint = (setpoint == "heatingSetpoint") ? device.getDataValue("maxHeatingSetpointFahrenheit") : device.getDataValue("maxCoolingSetpointFahrenheit")
|
||||
minSetpoint = minSetpoint ? Double.parseDouble(minSetpoint) : ((setpoint == "heatingSetpoint") ? 45 : 65) // default 45 heat, 65 cool
|
||||
maxSetpoint = maxSetpoint ? Double.parseDouble(maxSetpoint) : ((setpoint == "heatingSetpoint") ? 79 : 92) // default 79 heat, 92 cool
|
||||
def deadband = 5 // °F
|
||||
def deadband = deadbandSetting ? deadbandSetting : 5 // °F
|
||||
def delta = (locationScale == "F") ? 1 : 0.5
|
||||
def targetValue = getTempInDeviceScale(data.targetValue, locationScale)
|
||||
def heatingSetpoint = getTempInDeviceScale(data.heatingSetpoint, locationScale)
|
||||
@@ -475,8 +479,8 @@ def enforceSetpointLimits(setpoint, data, raise = null) {
|
||||
targetValue = maxSetpoint
|
||||
} else if (targetValue < minSetpoint) {
|
||||
targetValue = minSetpoint
|
||||
} else if ((setpoint == "heatingSetpoint" && targetValue == heatingSetpoint) ||
|
||||
(setpoint == "coolingSetpoint" && targetValue == coolingSetpoint)){
|
||||
} else if ((raise != null) && ((setpoint == "heatingSetpoint" && targetValue == heatingSetpoint) ||
|
||||
(setpoint == "coolingSetpoint" && targetValue == coolingSetpoint))) {
|
||||
// Ensure targetValue differes from old. When location scale differs from device,
|
||||
// converting between C -> F -> C may otherwise result in no change.
|
||||
targetValue += raise ? delta : - delta
|
||||
|
||||
@@ -320,7 +320,18 @@ def zwaveEvent(DoorLockOperationReport cmd) {
|
||||
result << response(secure(zwave.associationV1.associationGet(groupingIdentifier:1)))
|
||||
}
|
||||
}
|
||||
result ? [createEvent(map), *result] : createEvent(map)
|
||||
if (generatesDoorLockOperationReportBeforeAlarmReport()) {
|
||||
// we're expecting lock events to come after notification events, but for specific yale locks they come out of order
|
||||
runIn(3, "delayLockEvent", [data: [map: map]])
|
||||
return [:]
|
||||
} else {
|
||||
return result ? [createEvent(map), *result] : createEvent(map)
|
||||
}
|
||||
}
|
||||
|
||||
def delayLockEvent(data) {
|
||||
log.debug "Sending cached lock operation: $data.map"
|
||||
sendEvent(data.map)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1659,6 +1670,19 @@ def isYaleLock() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this lock generates door lock operation report before alarm report, false otherwise
|
||||
* @return true if this lock generates door lock operation report before alarm report, false otherwise
|
||||
*/
|
||||
def generatesDoorLockOperationReportBeforeAlarmReport() {
|
||||
//Fix for ICP-2367, ICP-2366
|
||||
if(isYaleLock() && "0007" == zwaveInfo.prod && "0001" == zwaveInfo.model) {
|
||||
//Yale Keyless Connected Smart Door Lock
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic function for reading code Slot ID from AlarmReport command
|
||||
* @param cmd: The AlarmReport command
|
||||
* @return user code slot id
|
||||
|
||||
@@ -31,6 +31,12 @@ metadata {
|
||||
fingerprint mfr:"001D", prod:"1603", model:"0334", deviceJoinName: "Leviton 15A Split Duplex Receptacle"
|
||||
fingerprint mfr:"011A", prod:"0101", model:"0102", deviceJoinName: "Enerwave On/Off Switch"
|
||||
fingerprint mfr:"011A", prod:"0101", model:"0603", deviceJoinName: "Enerwave Duplex Receptacle"
|
||||
fingerprint mfr:"0039", prod:"5052", model:"3038", deviceJoinName: "Honeywell Z-Wave Plug-in Switch"
|
||||
fingerprint mfr:"0039", prod:"5052", model:"3033", deviceJoinName: "Honeywell Z-Wave Plug-in Switch (Dual Outlet)"
|
||||
fingerprint mfr:"0039", prod:"4F50", model:"3032", deviceJoinName: "Honeywell Z-Wave Plug-in Outdoor Smart Switch"
|
||||
fingerprint mfr:"0039", prod:"4952", model:"3036", deviceJoinName: "Honeywell Z-Wave In-Wall Smart Switch"
|
||||
fingerprint mfr:"0039", prod:"4952", model:"3037", deviceJoinName: "Honeywell Z-Wave In-Wall Smart Toggle Switch"
|
||||
fingerprint mfr:"0039", prod:"4952", model:"3133", deviceJoinName: "Honeywell Z-Wave In-Wall Tamper Resistant Duplex Receptacle"
|
||||
}
|
||||
|
||||
// simulator metadata
|
||||
|
||||
@@ -25,12 +25,6 @@ metadata {
|
||||
fingerprint mfr:"0063", prod:"5257", deviceJoinName: "GE Wall Switch"
|
||||
fingerprint mfr:"0063", prod:"5052", deviceJoinName: "GE Plug-In Switch"
|
||||
fingerprint mfr:"0113", prod:"5257", deviceJoinName: "Z-Wave Wall Switch"
|
||||
fingerprint mfr:"0039", prod:"5052", model:"3038", deviceJoinName: "Honeywell Z-Wave Plug-in Switch"
|
||||
fingerprint mfr:"0039", prod:"5052", model:"3033", deviceJoinName: "Honeywell Z-Wave Plug-in Switch (Dual Outlet)"
|
||||
fingerprint mfr:"0039", prod:"4F50", model:"3032", deviceJoinName: "Honeywell Z-Wave Plug-in Outdoor Smart Switch"
|
||||
fingerprint mfr:"0039", prod:"4952", model:"3036", deviceJoinName: "Honeywell Z-Wave In-Wall Smart Switch"
|
||||
fingerprint mfr:"0039", prod:"4952", model:"3037", deviceJoinName: "Honeywell Z-Wave In-Wall Smart Toggle Switch"
|
||||
fingerprint mfr:"0039", prod:"4952", model:"3133", deviceJoinName: "Honeywell Z-Wave In-Wall Tamper Resistant Duplex Receptacle"
|
||||
}
|
||||
|
||||
// simulator metadata
|
||||
|
||||
Reference in New Issue
Block a user