Paso 7: Crear una regla en AWS IoT Core para enviar datos a los activos del dispositivo - AWS IoT SiteWise

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.

Paso 7: Crear una regla en AWS IoT Core para enviar datos a los activos del dispositivo

En este procedimiento, se establece una regla en AWS IoT Core. La regla está diseñada para interpretar los mensajes de notificación de los dispositivos ocultos y transmitir los datos a los activos del dispositivo AWS IoT SiteWise. Cada vez que la pantalla oculta del dispositivo se actualice, AWS IoT envía un mensaje MQTT. Puede crear una regla que actúe cuando cambien las sombras del dispositivo según el mensaje MQTT. En este caso, el objetivo es gestionar el mensaje de actualización, extraer los valores de las propiedades y transmitirlos a los activos del dispositivo. AWS IoT SiteWise

Para crear una regla con una AWS IoT SiteWise acción
  1. Vaya a la consola de AWS IoT.

  2. En el panel de navegación de la izquierda, elija Redirección de mensajes y, a continuación, seleccione Reglas.

  3. Seleccione Crear regla.

  4. Ingrese un nombre y una descripción para su regla y, a continuación, elija Siguiente.

  5. Introduzca la siguiente instrucción SQL y, a continuación, seleccione Siguiente.

    SELECT * FROM '$aws/things/+/shadow/update/accepted' WHERE startsWith(topic(3), "SiteWiseTutorialDevice")

    Esta instrucción de consulta de regla funciona porque el servicio de sombras de dispositivo publica actualizaciones de sombras en $aws/things/thingName/shadow/update/accepted. Para obtener más información acerca de las sombras de dispositivos, consulte Servicio de sombras de dispositivos en la Guía de desarrolladores de AWS IoT .

    En la cláusula WHERE, esta declaración de consulta de regla utiliza la función topic(3) para obtener el nombre de objeto del tercer segmento del tema. A continuación, la instrucción filtra los dispositivos que tienen nombres que no coinciden con los de los dispositivos del tutorial. Para obtener más información sobre AWS IoT SQL, consulte la referencia de AWS IoT SQL en la Guía para AWS IoT desarrolladores.

  6. En Acciones de la regla, seleccione Enviar los datos del mensaje a las propiedades de activos en AWS IoT SiteWise y haga lo siguiente:

    1. Elija By property alias (Por alias de propiedad).

    2. En Property alias (Alias de propiedad), escriba /tutorial/device/${topic(3)}/cpu.

      La ${...} sintaxis es una plantilla de sustitución. AWS IoT evalúa el contenido de las llaves. Esta plantilla de sustitución extrae el nombre del objeto del tema para crear un alias único para cada objeto. Para obtener más información, consulte Plantillas de sustitución en la Guía para desarrolladores de AWS IoT .

      nota

      Dado que una expresión de una plantilla de sustitución se evalúa por separado de la instrucción SELECT, no se puede utilizar una plantilla de sustitución para hacer referencia a un alias creado mediante una cláusula AS. Solo puede hacer referencia a la información presente en la carga original, además de a las funciones y operadores compatibles.

    3. En ID de entrada: opcional, introduzca ${concat(topic(3), "-cpu-", floor(state.reported.timestamp))}.

      Los ID de entrada identifican de forma única cada intento de entrada de valor. Si una entrada devuelve un error, puede encontrar el ID de entrada en la salida de error para solucionar el problema. La plantilla de sustitución en este ID de entrada combina el nombre del objeto y la marca temporal notificada por el dispositivo. Por ejemplo, el ID de entrada resultante podría tener un aspecto similar a SiteWiseTutorialDevice1-cpu-1579808494.

    4. En Time in seconds (Tiempo en segundos), escriba ${floor(state.reported.timestamp)}.

      Esta plantilla de sustitución calcula el tiempo en segundos a partir de la marca temporal notificada por el dispositivo. En este tutorial, los dispositivos notifican la marca temporal en segundos en formato de tiempo Unix como un número de punto flotante.

    5. En Desfase en nanosegundos opcional, escriba ${floor((state.reported.timestamp % 1) * 1E9)}.

      Esta plantilla de sustitución calcula el desfase en nanosegundos a partir de la hora en segundos convirtiendo la parte decimal de la marca temporal notificada por el dispositivo.

      nota

      AWS IoT SiteWise requiere que sus datos tengan una marca de tiempo actual en Unix. Si los dispositivos no notifican la hora con precisión, puede obtener la hora actual del motor de reglas de AWS IoT con timestamp(). Esta función notifica el tiempo en milisegundos, por lo que debe actualizar los parámetros de tiempo de la acción de regla a los siguientes valores:

      • En Time in seconds (Tiempo en segundos), escriba ${floor(timestamp() / 1E3)}.

      • En Offset in nanos (Desfase en nanosegundos), escriba ${(timestamp() % 1E3) * 1E6}.

    6. En Data type (Tipo de datos), elija Double (Doble).

      Este tipo de datos debe coincidir con el tipo de datos de la propiedad de activo definida en el modelo de activos.

    7. En Valor, escriba ${state.reported.cpu}. En las plantillas de sustitución, se utiliza el operador . para recuperar un valor desde una estructura JSON.

    8. Elija Add entry (Agregar entrada) para agregar una nueva entrada para la propiedad de uso de memoria y lleve a cabo los pasos siguientes para esa propiedad:

      1. Elija By property alias (Por alias de propiedad).

      2. En Property alias (Alias de propiedad), escriba /tutorial/device/${topic(3)}/memory.

      3. En ID de entrada: opcional, introduzca ${concat(topic(3), "-memory-", floor(state.reported.timestamp))}.

      4. En Time in seconds (Tiempo en segundos), escriba ${floor(state.reported.timestamp)}.

      5. En Desfase en nanosegundos opcional, escriba ${floor((state.reported.timestamp % 1) * 1E9)}.

      6. En Data type (Tipo de datos), elija Double (Doble).

      7. En Valor, escriba ${state.reported.memory}.

    9. En Rol de IAM, elija Crear rol para crear un rol de IAM para esta acción de regla. Esta función le permite enviar datos AWS IoT a las propiedades del activo de su flota de dispositivos y a su jerarquía de activos.

    10. Introduzca un nombre de rol y elija Crear.

  7. (Opcional) Configure una acción de error que pueda utilizar para solucionar problemas de la regla. Para obtener más información, consulte Solución de problemas de las reglas.

  8. Seleccione Siguiente.

  9. Revise la configuración y seleccione Crear.