云触发器:静态属性值与属性变化时的属性数据进行比较,导致告警变更
用例
当值超出高值设置点和低值设置点时,需要发布告警。
为解决此需求,需要将温度设置点存储为静态属性,以定义高值和低值。这些设置点所使用的静态属性可动态修改。
物模型
物的物模型具有温度值的属性。静态属性用于高低静态属性。还需要定义具有三种状态的告警:
- 温度的属性:temperature
- 高温的静态属性设置点:highthreshold
- 低温的静态属性设置点:lowthreshold
- 温度的告警:tempalarm
- 告警状态:
- 0 = Normal(正常)
- 1 = Low(低)
- 2 = High(高)
云触发器变量
事件变量
$(event.thing.key):启动云触发器的物键值。
$(event.prop.value):启动云触发器的发布属性动作(或 property.publish API)的数据值。
动作变量
$(action.X.value):动作块 X 的结果值。
Property.change 云触发器事件
当所有具有此物模型的物的 temperature(温度)属性发生属性更改时,将执行云触发器。
Thing.attr.find 动作
系统首先会查找导致事件的物的高设置点 (highthreshold) 的静态属性。该静态属性位于建议列表的事件变量 $(event.thing.key) 中。该值将临时存储为 $(action.0.value)。
注:$(action.X.value) 动作变量引用了编号为 X 的动作块。在本例中,我们使用的是 0,该值代表此 thing.attr.find 动作的动作块 0。
Math.if 动作
然后云触发器会执行 math.if 动作,对事件的属性数据 $(event.prop.value) 进行比较,计算该数据是否大于高阈值静态属性值 $(action.0.value)。
如果属性大于静态属性值,则遵循成功路径发布告警。
Alarm.publish 动作
如果温度属性大于高设置点的 highthreshold(高阈值)静态属性,则会以状态 2 的高告警状态发布 tempalarm(温度告警)告警。
Thing.attr.find 动作
如果临时属性不大于高设置点的 highthreshold(高阈值)静态属性,则将低设置点的 lowthreshold(低阈值)静态属性临时存储为 $(action.3.value)。
Math.if 动作
然后云触发器会执行 math.if 动作,对事件的属性数据 $(event.prop.value) 进行比较,计算该数据是否小于动作值 $(action.3.value)。
如果属性小于静态属性值,则遵循成功路径发布告警。
Alarm.publish 动作
如果温度属性小于低设置点的 lowthreshold(低阈值)静态属性,则会以状态 1 的高告警状态发布 tempalarm(温度告警)告警。
Alarm.publish 动作
如果温度属性不小于低设置点的 lowthreshold(低阈值)静态属性,则会以状态 0 的正常告警状态发布 tempalarm(温度告警)告警。