云触发器:聚合属性数据

用例

数据使用量属性已定期发布,但未聚合属性数据。除了数据使用量外,还需要显示聚合的数据使用量。

为解决此需求,需要使用定期发布的数据使用量属性来计算聚合数据使用量。还需要为聚合数据使用量定义额外的属性。

物模型

物的物模型具有数据使用量属性。为聚合数据使用量定义额外的属性:

  • 数据使用量的属性键值:data_usage
  • 聚合数据使用量的属性键值:data_usage_agg

云触发器变量

事件变量
  • $(event.thing.key):启动云触发器的物键值。
  • $(event.prop.value):启动云触发器的发布属性动作(或 property.publish API)中已发布属性的数据值。
  • $(event.prop.ts):启动云触发器的已发布属性的时间戳值。
动作变量
  • $(action.X.value):动作块 X 的结果值。

Property.change 云触发器事件

所有具有此物模型的物的 data_usage(数据使用量)属性发生属性更改时,将执行此云触发器。
由于未指定 Thing key(物键值)和 Thing tags(物标签)参数来限制哪些物可导致执行此触发器,因此会涉及所有具有此物模型的物。

Property.current 动作

property.current 动作将 data_usage_agg(数据使用量聚合)属性的当前值存储到 $(action.0.value) 动作变量中。该动作使用了 Thing key(物键值)参数的 $(event.thing.key) 事件变量。

注:$(action.X.value) 动作变量引用了编号为 X 的动作块。在本例中,我们使用的是 0,该值代表此 property.current 动作的动作块 0(图中红色圈出)。

Math.expr 动作

math.expr 动作将属性数据从事件已发布的属性数据 $(event.prop.value) 添加到 $(action.0.value) 动作变量中。

  • Expression(表达式)参数中,操作数为 $(event.prop.value) 已发布的属性和 $(action.0.value) 动作变量,具有 data_usage_agg(数据使用量聚合)属性的当前值。
    操作数为“+”,代表加法。
  • $(action.0.value) 动作变量值在之前的 property.current 动作中已设置。
  • $(event.prop.value) 和 $(action.0.value) 加法的结果存储在 $(action.1.value) 动作变量中。


Property.publish 动作

property.publish 动作可发布之前 math.expr 动作的结果:

  • Value(值)为 $(action.1.value) 动作变量
  • Property key(属性键值)为 data_usage_agg(数据使用量聚合)属性
  • Thing key(物键值)为 $(event.thing.key) 事件变量
  • Timestamp(时间戳)为初始云触发器事件的 $(event.prop.ts) 事件变量。




属性图

可以查看数据使用量 (data_usage) 和聚合数据使用量 (data_usage_agg) 的属性图表。

其他概念

  • 触发器事件 Thing key(物键值)和 Thing tags(物标签)参数可以进行指定,以限制导致执行此触发器的物。
  • 触发器事件 Operator(运算符)、Operand(操作数)、On Edge(边缘)和 Time in Condition (seconds)(条件执行时间(秒))参数可用于进一步指定执行此触发器必须满足的运行时条件。
  • 动作块中的 Suggestions(建议)选取列表可用于选择事件变量或动作变量。
    动作变量(如 $(action.X.value))中的动作块编号 X 指动作块的当前编号。如果插入和删除了动作,则必须检查引用的动作块编号,确保对每个动作使用了适当的当前动作块编号。