云触发器:数据转换

用例

数据属性以英制单位(英里)发布。一部分客户需要以公制单位(公里)的数据。

为解决此需求,需要将以英制单位发布的数据属性转换为等效的公制单位,并存储在其他属性中。

物模型

物的物模型具有英制单位数据的属性。为公制单位数据定义额外的的属性:

  • 英里/小时的属性键值:mph
  • 公里/小时的属性键值:kph

云触发器变量

事件变量

  • $(event.thing.key):启动云触发器的物键值。
  • $(event.prop.value):启动云触发器的发布属性动作(或 property.publish API)的数据值。

动作变量

  • $(action.X.value):动作块 X 的结果值。

Property.change 云触发器事件

当所有具有此物模型且标签为 acme 的物的 mph 属性发生属性更改时,将执行云触发器。

需要以公制单位查看属性数据的客户将向物添加标签,并且这些标签需要添加到触发器中。

Math.expr 动作

云触发器执行 math.expr 动作,将事件变量 $(event.prop.value) 中的 mph 属性数据乘以 1.60934,从而将 MPH 转换为 KPH。

Property.publish 动作

然后存储在 $(action.0.value) 中的数学表达式动作得出的值会发布到最初发布了 mph 属性的物的 kph 属性键值中。使用事件变量 $(event.thing.key) 即可知道物键值。

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

属性图

您可以看到最终结果同时具有 mph 属性和 kph 属性的数据。

物模型呈现方式特性

如果您有用户不需要查看公制单位 (kph) 属性,也不想要看到显示为空值的公制单位属性,您可以编辑物模型并将“Show/hide unset properties”(显示/隐藏未赋值的测试量值)设置为“Hide”(隐藏)。还可以使用物模型中属性的安全标签与自定义角色相结合的方式“隐藏”用户(具有这些自定义角色)不需要看到的属性。