检测器型号限制 - AWS IoT Events
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

检测器型号限制

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

如何使用 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 在事件中指定。

变量值的可用性

默认情况下,如果变量的值在事件中设置,则其新值不可用或用于评估同一组中其他事件的条件。新值不可用或不能用于同一事件条件 onInput, onEnteronExit 字段。

设置 evaluationMethod 参数以更改此行为。何时 evaluationMethod 设定为 SERIAL,变量将更新,并根据事件定义的顺序评估事件条件。否则,将更新变量,并且仅在评估所有事件条件后执行事件(当 evaluationMethod 设置为或默认为 BATCH)。

上一个示例显示了 evaluationMethod 设置为或默认值为 BATCH。在 "Dangerous" 状态,在 onInput 字段, "$variable.pressureThresholdBreached" 减少一个 "Pressure Okay" 满足条件时的事件(当当前输入的压力小于或等于70时)。

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

检测器应转换回 "Normal" 状态 "$variable.pressureThresholdBreached" 达到0(即当检测器接收到小于或等于70的三个连续压力读数时)。的 "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" 但请记住,此新值尚未可用于任何 condition.

默认情况下,每次控件都会输入 onInput 字段,任意 condition 仅看到变量的值,就像我们开始处理输入时一样,然后由中指定的任何操作更改它 onInput。这一点同样适用于 onEnteronExit。进入或退出状态时对变量所做的任何更改均不适用于该状态中指定的其他条件 onEnteronExit 字段。

更新检测器模型时的延迟

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

输入键中的空格

输入键中允许有空格,但对键的引用必须以反选形式括起来,在输入属性的定义中以及当在表达式中引用键的值时。例如,给定消息有效负载,如下所示:

{ "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`