Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS IoT Events restricciones y limitaciones del modelo de detector
Es importante tener en cuenta los siguientes aspectos al crear un modelo de detector.
- Cómo usar el campo
actions
-
El campo
actions
es una lista de objetos. Puede tener más de un objeto, pero solo se permite una acción en cada objeto.ejemplo
"actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } { "setVariable": { "variableName": "temperatureIsTooHigh", "value": "$variable.temperatureIsTooHigh - 1" } } ]
- Cómo usar el campo
condition
-
La
condition
es obligatoria paratransitionEvents
y opcional en otros casos.Si el campo
condition
no está presente, equivale a"condition": true
.El resultado de la evaluación de una expresión de condición debe ser un valor booleano. Si el resultado no es un valor booleano, equivale a
false
y no se iniciarán lasactions
ni la transición alnextState
en el evento. - Disponibilidad de valores variables
-
Por defecto, si se fija el valor de una variable en un evento, no se dispone de su nuevo valor ni se utiliza para evaluar condiciones en otros eventos del mismo grupo. El nuevo valor no está disponible ni se utiliza en una condición de evento en el mismo campo
onInput
,onEnter
oonExit
.Establezca el parámetro
evaluationMethod
en la definición del modelo de detector para cambiar este comportamiento. Si se estableceevaluationMethod
enSERIAL
, las variables se actualizan y las condiciones de evento se evalúan en el orden en que estén definidos los eventos. Caso contrario, si se estableceevaluationMethod
enBATCH
o lo asume por defecto, las variables dentro de un estado se actualizan y los eventos dentro de un estado se realizan solo después de que se hayan evaluado todas las condiciones del evento.En el estado
"Dangerous"
, en el campoonInput
,"$variable.pressureThresholdBreached"
se decrementa en uno en el evento"Pressure Okay"
al cumplirse la condición (cuando la entrada actual tiene una presión menor o igual que 70).{ "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] }
El detector debería volver al estado
"Normal"
cuando"$variable.pressureThresholdBreached"
llegue a 0 (es decir, cuando el detector haya recibido tres lecturas de presión consecutivas menores o iguales que 70). El evento"BackToNormal"
entransitionEvents
debe comprobar que"$variable.pressureThresholdBreached"
sea menor o igual que 1 (no 0) y además volver a verificar que el valor actual dado por"$input.PressureInput.sensorData.pressure"
sea menor o igual que 70."transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]
Caso contrario, si la condición comprueba solo el valor de la variable, dos lecturas normales seguidas de una lectura de sobrepresión cumplirían la condición y se volvería al estado
"Normal"
. La condición mira el valor que se le dio a"$variable.pressureThresholdBreached"
durante la última vez que se procesó una entrada. El valor de la variable se restablece a 3 en el evento"Overpressurized"
, pero recuerde que este nuevo valor aún no está disponible para ningunacondition
.Por defecto, cada vez que un control entra en el campo
onInput
, unacondition
solo puede ver el valor de una variable tal y como era al inicio del procesamiento de la entrada, antes de que cualquier acción especificada enonInput
lo modifique. Lo mismo ocurre paraonEnter
yonExit
. Cualquier cambio realizado en una variable al entrar o salir del estado no está disponible para otras condiciones especificadas en los mismos camposonEnter
oonExit
. - Latencia al actualizar un modelo de detector
-
Si actualiza, elimina y vuelve a crear un modelo de detector (consulte UpdateDetectorModel), pasará un tiempo antes de que se eliminen todos los detectores generados (instancias) y se utilice el nuevo modelo para volver a crear los detectores. Se recrean una vez que el nuevo modelo de detector entra en función y llegan nuevas entradas. Durante este tiempo, es posible que los detectores generados por la versión anterior del modelo de detector sigan procesando entradas. Durante este período, es posible que siga recibiendo las alertas definidas por el modelo de detector anterior.
- Espacios en las claves de entrada
-
Se permiten espacios en las claves de entrada, pero las referencias a la clave deben estar entre tildes graves, tanto en la definición del atributo de entrada como cuando se hace referencia al valor de la clave en una expresión. Por ejemplo, dada una carga de mensaje como la siguiente:
{ "motor id": "A32", "sensorData" { "motor pressure": 56, "motor temperature": 39 } }
Utilice lo siguiente para definir la entrada.
{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.`motor pressure`" }, { "jsonPath": "`motor id`" } ] } }
En una expresión condicional, debe hacer referencia al valor de cualquiera de estas claves utilizando también tildes graves.
$input.PressureInput.sensorData.`motor pressure`