有几种方法可以做到这一点,但如果你编写一个 SmartApp 只是为了你自己的用途,我建议你在 SmartThings 上为 Nest 搭载现有的设备类型之一。作为一个简单的例子,我将使用我使用的那个:
https://github.com/bmmiller/device-type.nest/blob/master/nest.devicetype.groovy
在第 96 行之后,这是向您可能编写的任何 SmartApp 公开状态:
attribute "temperatureUnit", "string"
attribute "humiditySetpoint", "number"
attribute "autoAwayStatus", "number" // New Line
现在,您需要在现有的 poll() 方法中获取数据,目前从第 459 行开始。
在第 480 行之后,更新属性
sendEvent(name: 'humidity', value: humidity)
sendEvent(name: 'humiditySetpoint', value: humiditySetpoint, unit: Humidity)
sendEvent(name: 'thermostatFanMode', value: fanMode)
sendEvent(name: 'thermostatMode', value: temperatureType)
sendEvent(name: 'autoAwayStatus', value: data.shared.auto_away) // New Line
这将显示 auto_away 状态的数值。
- -1 = 自动离开未启用
- 0 = 自动离开关闭
- 1 = 自动离开
然后,在您编写的 SmartApp 中,您包含一个恒温器类型的输入,如下所示:
section("Choose thermostat... ") {
input "thermostat", "capability.thermostat"
}
您将能够通过参考访问自动离开状态
thermostat.autoAwayStatus
从代码中的任何位置,您都可以执行类似的操作
if (thermostat.autoAwayStatus == 1) {
// Turn off everything
}