AWS IoT Events 探测器型号限制和限制 - AWS IoT Events

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS IoT Events 探测器型号限制和限制

创建探测器模型时,需要考虑以下事项。

如何使用 actions 字段

actions 字段是一个对象列表。您可以有多个对象,但每个对象仅有一次操作。

"actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } { "setVariable": { "variableName": "temperatureIsTooHigh", "value": "$variable.temperatureIsTooHigh - 1" } } ]
如何使用 condition 字段

conditiontransitionEvents 的必填项,在其他情况下为可选。

如果condition 字段不存在,则等同于 "condition": true

条件表达式的计算结果应为布尔值。如果结果非布尔值,则它等同于 false,且不会发起actions或转换为事件中指定的nextState

变量值的可用性

默认情况下,如果在事件中设置了变量值,则其新值不可用或无法用于评估同组其他事件的条件。新值不可用,也无法用于相同onInputonEnteronExit字段的事件条件。

在探测器模型定义中设置 evaluationMethod 参数以更改此行为。当 evaluationMethod 设置为 SERIAL 时,将更新变量,并按照事件的定义顺序评估事件条件。否则,当evaluationMethod设置为BATCH或默认为它时,状态变量会更新,并且只有在评估了所有事件条件之后才会执行状态内事件。

"Dangerous" 状态的 onInput 字段中,如果满足条件(当前输入的压力小于或等于 70 时),则"Pressure Okay"事件中的"$variable.pressureThresholdBreached"减一。

{ "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] }

"Normal"达到 0 时(也就是说,当探测器连续接收到三个小于等于 70 的压力读数时),探测器应该恢复到"$variable.pressureThresholdBreached"状态。"BackToNormal"中的transitionEvents事件必须测试"$variable.pressureThresholdBreached"小于等于 1(非 0),并且再次验证"$input.PressureInput.sensorData.pressure"提供的当前值是小于或等于 70。

"transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]

否则,如果条件仅测试变量的值,则两个正常读数后跟一个超压读数将满足条件并过渡回"Normal"状态。条件是查看在上次处理输入时给出的值"$variable.pressureThresholdBreached""Overpressurized"事件中的变量值重置为 3,但是切记此新值现在不适用于任何condition

默认情况下,每次控件输入 onInput 字段时,condition只能获取变量在开始处理输入时的值,然后才会通过onInput中指定的任何操作更改。onEnteronExit也是如此。当我们进入或退出该状态时,对变量所做的任何更改都不适用于相同 onEnteronExit 字段中指定的其他条件。

更新探测器模型时延迟

如果您更新、删除和重新创建探测器模型(参见 UpdateDetectorModel),则在删除所有生成的探测器(实例)并使用新模型重新创建探测器之前,会有一些延迟。新探测器模型生效且新输入到达后,将重新创建它们。在此期间,输入可能会继续由先前版本的探测器模型生成的探测器处理。在此期间,您可能会继续收到由先前探测器模型定义的警报。

输入键中的空格

输入键中允许使用空格,但是无论是在输入属性的定义中,还是在表达式中引用键值时,都必须用反引号括住对键的引用。例如,假定如下消息有效负载:

{ "motor id": "A32", "sensorData" { "motor pressure": 56, "motor temperature": 39 } }

使用以下内容定义输入。

{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.`motor pressure`" }, { "jsonPath": "`motor id`" } ] } }

在条件表达式中,您还必须使用反引号来引用任何此类键的值。

$input.PressureInput.sensorData.`motor pressure`