跳至主要內容

属性更新类任务

约 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 分钟内。