Uso AWS IoT Events para monitorear sus dispositivos de IoT - AWS IoT Events

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.

Uso AWS IoT Events para monitorear sus dispositivos de IoT

Puede usarlo AWS IoT Events para monitorear sus dispositivos o procesos y tomar medidas en función de eventos importantes. Para ello, siga estos pasos básicos:

Creación de entradas

Usted debe contar con un método para que sus dispositivos y procesos transmitan datos de telemetría a AWS IoT Events. Esto lo consigue enviando mensajes como entradas a AWS IoT Events. Puede enviar mensajes como entradas de varias maneras, para ello puede:

  • Usa la BatchPutMessageoperación.

  • Definir una rule-action de iotEvents para el motor de reglas de AWS IoT Core. La rule-action reenvía los datos del mensaje desde su entrada a AWS IoT Events.

  • En AWS IoT Analytics, utilice la CreateDatasetoperación para crear un conjunto de datos concontentDeliveryRules. Estas reglas especifican la AWS IoT Events entrada a la que se envía automáticamente el contenido del conjunto de datos.

  • Defina una iotEventsacción en un transitionEvents evento onExit o modelo de AWS IoT Events onInput detector. La información sobre la instancia del modelo de detector y el evento que inició la acción se devuelven al sistema como una entrada con el nombre que usted especifique.

Antes de que sus dispositivos empiecen a enviar datos de esta forma, debe definir una o más entradas. Para ello, asigne un nombre a cada entrada y especifique qué campos de los datos del mensaje entrante monitorea la entrada. AWS IoT Events recibe su entrada, en forma de JSON carga útil, de muchas fuentes. Se puede actuar sobre cada entrada independiente o combinada con otras entradas para detectar eventos más complejos.

Crear un modelo de detector

Defina un modelo de detector (un modelo de su equipo o proceso) utilizando estados. Para cada estado, define una lógica condicional (booleana) que evalúa las entradas para detectar eventos significativos. Cuando se detecta un evento, puede cambiar el estado o iniciar acciones personalizadas o predefinidas mediante otros servicios. AWS Puede definir eventos adicionales que inicien acciones al entrar o salir de un estado y, opcionalmente, al cumplirse una condición.

En este tutorial, envías un SNS mensaje de Amazon como acción cuando el modelo entra o sale de un estado determinado.

Cómo supervisar un dispositivo o proceso

Al supervisar varios dispositivos o procesos, usted especifica un campo en cada entrada que identifica el dispositivo o proceso concreto del que procede la entrada. (Vea el campo key en CreateDetectorModel). Al identificarse un nuevo dispositivo (se ve un nuevo valor en el campo de entrada identificado por la key), se crea un detector. (Cada detector es una instancia del modelo de detector). A continuación, el nuevo detector sigue respondiendo a las entradas procedentes de ese dispositivo hasta que su modelo de detector se actualice o elimine.

Si supervisa un único proceso (incluso con varios dispositivos o subprocesos enviando entradas), usted no especifica un campo key de identificación único. En este caso, se crea un único detector (instancia) al llegar la primera entrada.

Cómo enviar mensajes como entradas a su modelo de detector

Existen varias formas de enviar un mensaje desde un dispositivo o procesarlo como entrada a un AWS IoT Events detector sin necesidad de formatear el mensaje de forma adicional. En este tutorial, utilizará la AWS IoT consola para escribir una regla de AWS IoT Events acción para el motor de AWS IoT Core reglas al que reenvía los datos de sus mensajes. AWS IoT Events Para ello, usted identifica la entrada por su nombre. A continuación, seguirá utilizando la AWS IoT consola para generar algunos mensajes que se reenviarán como entradas a AWS IoT Events.

¿Cómo puede saber qué estados necesita en un modelo de detector?

Para determinar qué estados debería tener su modelo de detector, primero decida qué medidas puede usted tomar. Por ejemplo, si su automóvil funciona con gasolina, usted mira el indicador de combustible al iniciar un viaje para ver si necesita repostar. Aquí tiene una acción: decirle al conductor “debe repostar”. Su modelo de detector necesita dos estados: “el coche no necesita combustible” y “el coche sí necesita combustible”. En general, querrá definir un estado para cada acción posible, más otro para cuando no se requiera ninguna acción. Esto funciona incluso si la acción en sí misma es más complicada. Por ejemplo, puede que quiera buscar e incluir información sobre dónde encontrar la gasolinera más cercana o el precio más barato, pero esto lo hace cuando envía el mensaje “debe repostar”.

Para decidir en qué estado debe entrar a continuación, se fijará en las entradas. Las entradas contienen la información que necesita para decidir en qué estado debería estar. Para crear una entrada, usted selecciona uno o varios campos en un mensaje enviado por su dispositivo o proceso que le ayuden a decidir. En este ejemplo, necesita una entrada que le indique el nivel actual de combustible (“porcentaje de lleno”). Es posible que su coche le envíe varios mensajes diferentes, cada uno con varios campos distintos. Para crear esta entrada, debe seleccionar el mensaje y el campo que informa del nivel actual de combustible. La longitud del trayecto que va a realizar (“distancia hasta el destino”) se puede incluir en el código para simplificar las cosas; puede utilizar la distancia media de su viaje. Realizará algunos cálculos basados en la entrada (“¿A cuántos litros equivale ese porcentaje de lleno? ¿Es la distancia media del viaje mayor que los kilómetros que puede recorrer, dados los litros que tiene y su promedio de ‘kilómetros por litro’?”). Usted realiza estos cálculos y envía los mensajes en eventos.

Hasta ahora tiene dos estados y una entrada. Necesita un evento en el primer estado que realice los cálculos en función de la entrada y decida si se pasa al segundo estado. Eso es un evento de transición. (Los transitionEvents están en una lista de eventos onInput del estado. Al recibirse una entrada en este primer estado, el evento realiza una transición al segundo estado, si se cumple la condition del evento). Al llegar al segundo estado, envía el mensaje en cuanto entra en él. (Usted utiliza un evento onEnter. Al entrar en el segundo estado, este evento envía el mensaje. No es necesario esperar a que llegue otra entrada). Hay otros tipos de eventos, pero esto es todo lo que necesita para un ejemplo sencillo.

Los otros tipos de eventos son onExit y onInput. En cuanto se recibe una entrada, y si se cumple la condición, un evento onInput realiza las acciones especificadas. Cuando una operación sale de su estado actual y se cumple la condición, el evento onExit realiza las acciones especificadas.

¿Le falta algo? Sí, ¿cómo se vuelve al primer estado “el coche no necesita combustible”? Después de llenar el depósito de gasolina, la entrada muestra el depósito lleno. En el segundo estado necesita un evento de transición para volver al primer estado, que ocurra cuando se reciba la entrada (en los eventos onInput: del segundo estado). Debería volver al primer estado si los cálculos muestran que ahora tiene suficiente gasolina para llegar a donde quiere ir.

Eso es lo básico. Algunos modelos de detectores se vuelven más complejos añadiendo estados que reflejan entradas importantes, no solo posibles acciones. Por ejemplo, podría tener tres estados en un modelo de detector que vigile la temperatura: un estado “normal”, un estado “demasiado caliente” y un estado “problema potencial”. Usted pasa al estado de problema potencial cuando la temperatura supera un determinado nivel, pero aún no es demasiado caliente. No querrá enviar una alarma a menos que permanezca a esta temperatura durante más de 15 minutos. Si la temperatura vuelve a la normalidad antes de ese periodo, el detector vuelve al estado normal. Si el temporizador expira, el detector pasa al estado demasiado caliente y envía una alarma, solo por precaución. Podría hacer lo mismo utilizando variables y un conjunto más complejo de condiciones de evento. Sin embargo, a menudo es más fácil utilizar otro estado para, en efecto, almacenar los resultados de sus cálculos.

¿Cómo puede saber si necesita una instancia, o varias, de un detector?

Para decidir cuántas instancias necesita, hágase la siguiente pregunta: “¿Qué le interesa saber?”. Digamos que quiere saber qué tiempo hace hoy. ¿Está lloviendo (estado)? ¿Necesita llevar un paraguas (acción)? Puede tener un sensor que informe de la temperatura, otro que informe de la humedad y otros que informen de la presión barométrica, la velocidad y dirección del viento y la precipitación. Sin embargo, debe monitorear todos estos sensores a la vez para determinar el estado del tiempo (lluvia, nieve, nublado, soleado) y la acción apropiada por realizar (llevar un paraguas o aplicarse protector solar). Sin importar el número de sensores, lo que quiere es una única instancia de detector para monitorear el estado del tiempo e informarle de las medidas que debe tomar.

Pero si usted es el meteorólogo de su región, podría tener varias instancias de estos conjuntos de sensores, situados en diferentes lugares de la región. La gente de cada lugar necesita saber qué tiempo hace en ese lugar. En este caso, necesita múltiples instancias de su detector. Los datos comunicados por cada sensor en cada ubicación deben incluir un campo que usted haya designado como campo key. Este campo permite a AWS IoT Events crear una instancia del detector para la zona y, a continuación, seguir dirigiendo esta información a esa instancia de detector a medida que siga llegando. ¡Se acabaron los cabellos estropeados o las narices quemadas por el sol!

Básicamente, necesita una única instancia de detector si tiene una sola situación (un proceso o una ubicación) que monitorear. Si tiene muchas situaciones (ubicaciones, procesos) que monitorear, necesitará varias instancias del detector.