属性更新类任务
约 675 字大约 2 分钟
属性更新类任务
利用属性更新类任务,可以将设备单个属性或多个属性的更新操作,打包为一个任务,实现随时复用。
请注意,通用该任务更新的属性标识符,如果已经在设备类型中存在属性定义,则必须是云端私有类型。
目前支持以下几类任务动作:
静态属性更新
可以在编辑器中直接填写要更新的属性集合 JSON
代码。
例如:我们希望设备在指定的时间,将工作模式更新为自动模式,则更新属性集合为:
{
"work_mode": "auto"
}
如下图:
然后可以将任务设置为每日固定时间运行即可。
云函数属性更新
提供了自由度更高的云函数,来实时构造要更新给设备的属性集合。适合具有一定开发能力的用户使用。
云函数的返回值是一个属性 JSON 集合,用来更新设备云端属性。
示例:构造一个固定的属性集合
这是一个最简单的例子,在云函数中构造一个固定的属性集合,实现的效果和前边静态属性更新是相同的。云函数如下:
module.exports = function () {
var update_attributes = {
work_mode: "auto"
};
return update_attributes;
}
运行以上任务后,更新设备属性的消息是这样的:
{
"work_mode": "auto"
}
示例:读取设备当前属性实现逻辑判断
通过调用内置函数库,在云函数中可以获取设备当前的属性值,这样我们便可以根据实际需求,对属性做各种各样的逻辑判断,从而动态生成要更新给设备的属性消息。
例如,在前一个例子的基础上,我们希望先检查设备当前的温度值是否大于设定的阈值,如果是,则更新工作模式到自动模式,否则不做更新。
module.exports = function () {
// 读取设备当前的属性值
const attributes = Cloud.getCurrentAttributes();
var update_attributes = {};
// 判断设备当前温度
if (attributes.temperature > 25) {
// 如果温度大于阈值,则更新工作模式到自动模式
update_attributes.work_mode = "auto";
}
return update_attributes;
}
在这个例子中,还可以实现更加复杂的判断,例如:
- 如果温度和湿度都大于某个阈值,则更新工作模式到自动模式。
- 将温度阈值从常量 25,改为读取设备的属性值。
- 判断设备当前温度值的记录时间,是否在最近 10 分钟内。