云触发器:数据转换
用例
数据属性以英制单位(英里)发布。一部分客户需要以公制单位(公里)的数据。
为解决此需求,需要将以英制单位发布的数据属性转换为等效的公制单位,并存储在其他属性中。
物模型
物的物模型具有英制单位数据的属性。为公制单位数据定义额外的的属性:
- 英里/小时的属性键值: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”(隐藏)。还可以使用物模型中属性的安全标签与自定义角色相结合的方式“隐藏”用户(具有这些自定义角色)不需要看到的属性。