Ingiera datos de cosas AWS IoT - 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.

Ingiera datos de cosas AWS IoT

En este tutorial, aprenda a ingerir datos AWS IoT SiteWise de una flota de AWS IoT cosas mediante el uso de sombras de dispositivos. Las sombras de los dispositivos son JSON objetos que almacenan información sobre el estado actual de un AWS IoT dispositivo. Para obtener más información, consulte Servicio sombra de dispositivo en la Guía para desarrolladores de AWS IoT .

Después de completar este tutorial, puede configurar una operación en AWS IoT SiteWise función de AWS IoT las cosas. Al usar AWS IoT cosas, puede integrar su operación con otras funciones útiles de AWS IoT. Por ejemplo, puede configurar AWS IoT funciones para realizar las siguientes tareas:

  • Configure reglas adicionales para transmitir datos a AWS IoT EventsAmazon DynamoDB y otros. Servicios de AWS Para obtener más información, consulte Reglas en la Guía para desarrolladores de AWS IoT .

  • Indexe, busque y agregue los datos de sus dispositivos con el servicio de indexación de AWS IoT flotas. Para obtener más información, consulte Servicio de indexación de flotas en la Guía para desarrolladores de AWS IoT .

  • Audite y proteja sus dispositivos con AWS IoT Device Defender. Para obtener más información, consulte AWS IoT Device Defender en la Guía para desarrolladores de AWS IoT .

En este tutorial, aprenderás a transferir datos desde dispositivos AWS IoT ocultos hasta activos internos. AWS IoT SiteWise Para ello, debe crear una o más AWS IoT cosas y ejecutar un script que actualice la sombra del dispositivo de cada elemento con CPU los datos de uso de la memoria. En este tutorial, CPU utilizarás los datos de uso de la memoria para imitar datos de sensores realistas. A continuación, debes crear una regla con una AWS IoT SiteWise acción que envíe estos datos a un activo AWS IoT SiteWise cada vez que se actualice la sombra de un dispositivo. Para obtener más información, consulte Ingiera datos mediante reglas AWS IoT Core.

Requisitos previos

Necesitará lo siguiente para completar este tutorial:

  • Y Cuenta de AWS. Si no dispone de una, consulte Configura un Cuenta de AWS.

  • Un ordenador de desarrollo en ejecución WindowsmacOS,Linux, o Unix para acceder al AWS Management Console. Para obtener más información, consulte Introducción a AWS Management Console.

  • Un usuario AWS Identity and Access Management (IAM) con permisos de administrador.

  • Python3 instalado en tu ordenador de desarrollo o instalado en el dispositivo que quieres registrar como AWS IoT cosa.

Paso 1: Crear una AWS IoT política

En este procedimiento, cree una AWS IoT política que permita que sus AWS IoT cosas accedan a los recursos utilizados en este tutorial.

Para crear una AWS IoT política
  1. Inicie sesión en la AWS Management Console.

  2. Revise las AWS regiones en las que AWS IoT SiteWise está disponible. Cambie a una de estas regiones compatibles, si es necesario.

  3. Vaya a la consola de AWS IoT. Si aparece el botón Conectar dispositivo, elíjalo.

  4. En el panel de navegación de la izquierda, elija Seguridad y, a continuación, elija Políticas.

  5. Seleccione Crear.

  6. Introduzca un nombre para la AWS IoT política (por ejemplo,SiteWiseTutorialDevicePolicy).

  7. En Documento de política, elija JSONintroducir la siguiente política en el JSON formulario. Reemplazar region y account-id con su región e identificador de cuenta, como us-east-1 y123456789012.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:region:account-id:client/SiteWiseTutorialDevice*" }, { "Effect": "Allow", "Action": "iot:Publish", "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get" ] }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/accepted", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/accepted", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get/accepted", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/rejected", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/accepted", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/accepted", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get/accepted", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/rejected", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": "arn:aws:iot:region:account-id:thing/SiteWiseTutorialDevice*" } ] }

    Esta política permite a sus AWS IoT dispositivos establecer conexiones y comunicarse con dispositivos ocultos mediante MQTT mensajes. Para obtener más información sobre MQTT los mensajes, consulta ¿Qué esMQTT? . Para interactuar con las sombras de los dispositivos, tus AWS IoT cosas publican y reciben MQTT mensajes sobre temas que comienzan con$aws/things/thing-name/shadow/. Esta política incorpora una variable de política denominada${iot:Connection.Thing.ThingName}. Esta variable sustituye el nombre de la cosa conectada en cada tema. La iot:Connect declaración establece limitaciones sobre los dispositivos que pueden establecer conexiones, lo que garantiza que la variable de política del objeto solo pueda sustituir los nombres que comiencen por. SiteWiseTutorialDevice

    Para obtener más información, consulte Variables de objetos de políticas en la Guía para desarrolladores de AWS IoT .

    nota

    Esta política se aplica a objetos cuyos nombres comienzan por SiteWiseTutorialDevice. Para usar un nombre diferente para sus objetos, debe actualizar la política según corresponda.

  8. Seleccione Crear.

Paso 2: Crear y configurar cualquier AWS IoT cosa

En este procedimiento, se crea y configura cualquier AWS IoT cosa. Puede designar su ordenador de desarrollo como cualquier AWS IoT cosa. A medida que avances, recuerda que los principios que estás aprendiendo aquí se pueden aplicar a proyectos reales. Tienes la flexibilidad de crear y configurar AWS IoT cosas en cualquier dispositivo capaz de funcionar AWS IoT Greengrass y AWS IoT SDK, incluso, de forma gratuitaRTOS. Para obtener más información, consulta AWS IoT SDKsla Guía para AWS IoT desarrolladores.

Para crear y configurar cualquier AWS IoT cosa
  1. Abra una línea de comandos y ejecute el siguiente comando para crear un directorio para este tutorial.

    mkdir iot-sitewise-rule-tutorial cd iot-sitewise-rule-tutorial
  2. Ejecute el siguiente comando para crear un directorio para los certificados de su objeto.

    mkdir device1

    Si está creando objetos adicionales, incremente el número en el nombre del directorio según corresponda para realizar un seguimiento de cuáles son los certificados que pertenecen a cada objeto.

  3. Vaya a la consola de AWS IoT.

  4. En el panel de navegación izquierdo, selecciona Todos los dispositivos en la sección Administrar. A continuación, elija Objetos.

  5. Si aparece un cuadro de diálogo You don't have any things yet (Aún no tiene ningún objeto), elija Create a thing (Crear un objeto). De lo contrario, seleccione Crear objetos.

  6. En la página Creación de objetos, elija Crear un solo objeto y luego elija Siguiente.

  7. En la página Especificar propiedades de objeto, introduzca un nombre para el objeto AWS IoT (por ejemplo, SiteWiseTutorialDevice1) y, a continuación, seleccione Siguiente. Si está creando objetos adicionales, incremente el número en el nombre del objeto según corresponda.

    importante

    El nombre del elemento debe coincidir con el nombre utilizado en la política que creó en el paso 1: Creación de una AWS IoT política. De lo contrario, el dispositivo no podrá conectarse a AWS IoT.

  8. En la página Configurar el certificado del dispositivo: opcional, seleccione Generar automáticamente un nuevo certificado (opción recomendada) y, a continuación, seleccione Siguiente. Los certificados permiten AWS IoT identificar tus dispositivos de forma segura.

  9. En la página Adjuntar políticas al certificado (opcional), seleccione la política que creó en el paso 1: Creación de una AWS IoT política y elija Crear cosa.

  10. En el cuadro de diálogo Descargar certificados y claves, haga lo siguiente:

    1. Elija los enlaces de Download (Descarga) para descargar el certificado, la clave pública y la clave privada de su objeto. Guarde los tres archivos en el directorio que creó para los certificados de su objeto (por ejemplo, iot-sitewise-rule-tutorial/device1).

      importante

      Esta es la única vez que puede descargar el certificado y las claves de su certificado, que necesita para que su dispositivo se conecte correctamente a AWS IoT.

    2. Seleccione el enlace Descargar para descargar un certificado de CA raíz. Guarde el certificado de entidad de certificación raíz en iot-sitewise-rule-tutorial. Recomendamos descargar Amazon Root CA 1.

  11. Seleccione Listo.

Ya ha registrado AWS IoT algo en su ordenador. Realice uno de los siguientes pasos:

  • Continúe con el paso 3: Crear un modelo de activos de dispositivo sin crear AWS IoT elementos adicionales. Puede completar este tutorial con un solo objeto.

  • Repita los pasos de esta sección en otro equipo o dispositivo para crear más objetos de AWS IoT . Para este tutorial, le recomendamos que siga esta opción para poder ingerir datos únicos CPU y de uso de memoria de varios dispositivos.

  • Repita los pasos de esta sección en el mismo dispositivo (su equipo) para crear más objetos de AWS IoT . Cada elemento AWS IoT recibe datos similares CPU y de uso de memoria de su ordenador, así que utilice este enfoque para demostrar cómo se ingieren datos no únicos de varios dispositivos.

Paso 3: Cree un modelo de activos de dispositivos

En este procedimiento, se crea un modelo de activos AWS IoT SiteWise para representar los dispositivos que transmiten CPU y utilizan los datos de uso de la memoria. Para procesar los datos de los activos que representan grupos de dispositivos, los modelos de activos exigen una información coherente en varios activos del mismo tipo. Para obtener más información, consulte Activos industriales modelo.

Para crear un modelo de activos que represente un dispositivo
  1. Vaya a la consola de AWS IoT SiteWise.

  2. En el panel de navegación izquierdo, elija Models (Modelos).

  3. Seleccione Crear modelo.

  4. En Detalles del modelo, escriba un nombre para el modelo. Por ejemplo, SiteWise Tutorial Device Model.

  5. En Measurement definitions (Definiciones de medida), haga lo siguiente:

    1. En Name (Nombre), escriba CPU Usage.

    2. En Unit (Unidad), escriba %.

    3. Deje Data type (Tipo de datos) como Double (Doble).

    Las propiedades de medición representan los flujos de datos sin procesar de un dispositivo. Para obtener más información, consulte Defina los flujos de datos del equipo (mediciones).

  6. Elija Agregar nueva medida para agregar una segunda propiedad de medida.

  7. En la segunda fila, en Measurement definitions (Definiciones de medida), haga lo siguiente:

    1. En Name (Nombre), escriba Memory Usage.

    2. En Unit (Unidad), escriba %.

    3. Deje Data type (Tipo de datos) como Double (Doble).

  8. En Metric definitions (Definiciones de métricas), haga lo siguiente:

    1. En Name (Nombre), escriba Average CPU Usage.

    2. En Formula (Fórmula), escriba avg(CPU Usage). Elija CPU Usage en la lista de autocompletar cuando aparezca.

    3. En Time interval (Intervalo de tiempo), escriba 5 minutes.

    Las propiedades de métrica definen cálculos de agregación que procesan todos los puntos de datos de entrada a lo largo de un intervalo y generan un único punto de datos por intervalo. Esta propiedad métrica calcula el CPU uso promedio de cada dispositivo cada 5 minutos. Para obtener más información, consulte Agregue datos de propiedades y otros activos (métricas).

  9. Elija Agregar nueva métrica para agregar una segunda propiedad de métrica.

  10. En la segunda fila en Metric definitions (Definiciones de métricas), haga lo siguiente:

    1. En Name (Nombre), escriba Average Memory Usage.

    2. En Formula (Fórmula), escriba avg(Memory Usage). Elija Memory Usage en la lista de autocompletar cuando aparezca.

    3. En Time interval (Intervalo de tiempo), escriba 5 minutes.

    Esta propiedad de métrica calcula el uso medio de memoria de cada dispositivo cada 5 minutos.

  11. (Opcional) Agregue otras métricas adicionales que le interese calcular por dispositivo. Algunas funciones interesantes incluyen min y max. Para obtener más información, consulte Usa expresiones de fórmula. En el paso 4: crear un modelo de activos de flota de dispositivos, usted crea un activo principal que pueda calcular métricas utilizando datos de toda la flota de dispositivos.

  12. Seleccione Crear modelo.

Paso 4: Cree un modelo de activos para la flota de dispositivos

En este procedimiento, se crea un modelo de activos AWS IoT SiteWise para simbolizar el conjunto de dispositivos. En este modelo de activos, se establece una estructura que permite vincular varios activos de dispositivos a un activo general de la flota. A continuación, describe las métricas del modelo de activos de la flota para consolidar los datos de todos los activos de dispositivos conectados. Este enfoque le proporciona información exhaustiva sobre el rendimiento colectivo de toda su flota.

Para crear un modelo de activos que represente una flota de dispositivos
  1. Vaya a la consola de AWS IoT SiteWise.

  2. En el panel de navegación izquierdo, elija Models (Modelos).

  3. Seleccione Crear modelo.

  4. En Detalles del modelo, escriba un nombre para el modelo. Por ejemplo, SiteWise Tutorial Device Fleet Model.

  5. En Hierarchy definitions (Definiciones de jerarquía), haga lo siguiente:

    1. En Hierarchy name (Nombre de jerarquía), escriba Device.

    2. En Hierarchy model (Modelo de jerarquía), elija su modelo de activos de dispositivo (SiteWise Tutorial Device Model).

    Una jerarquía define una relación entre un modelo de activo principal (flota) y un modelo de activo secundario (dispositivo). Los activos principales pueden acceder a los datos de propiedades de los activos secundarios. Cuando cree activos más adelante, tiene que asociar los activos secundarios a activos principales según una definición de jerarquía en el modelo de activos principales. Para obtener más información, consulte Defina las jerarquías del modelo de activos.

  6. En Metric definitions (Definiciones de métricas), haga lo siguiente:

    1. En Name (Nombre), escriba Average CPU Usage.

    2. En Formula (Fórmula), escriba avg(Device | Average CPU Usage). Cuando aparezca la lista de autocompletar, elija Device para elegir una jerarquía y, a continuación, elija Average CPU Usage para elegir la métrica del activo de dispositivo que creó anteriormente.

    3. En Time interval (Intervalo de tiempo), escriba 5 minutes.

    Esta propiedad métrica calcula el CPU uso promedio de todos los activos de dispositivos asociados a un activo de flota a través de la Device jerarquía.

  7. Elija Agregar nueva métrica para agregar una segunda propiedad de métrica.

  8. En la segunda fila en Metric definitions (Definiciones de métricas), haga lo siguiente:

    1. En Name (Nombre), escriba Average Memory Usage.

    2. En Formula (Fórmula), escriba avg(Device | Average Memory Usage). Cuando aparezca la lista de autocompletar, elija Device para elegir una jerarquía y, a continuación, elija Average Memory Usage para elegir la métrica del activo de dispositivo que creó anteriormente.

    3. En Time interval (Intervalo de tiempo), escriba 5 minutes.

    Esta propiedad de métrica calcula el uso medio de memoria de todos los activos de dispositivo asociados a un activo de flota a través de la jerarquía de Device.

  9. (Opcional) Agregue otras métricas adicionales que le interese calcular en su flota de dispositivos.

  10. Seleccione Crear modelo.

Paso 5: Crear y configurar un activo de dispositivo

En este procedimiento, se genera un activo de dispositivo que se basa en el modelo de activos de dispositivo. A continuación, se definen los alias de propiedad para cada propiedad de medida. El alias de una propiedad es una cadena única que identifica la propiedad de un activo. Más adelante, podrá identificar una propiedad para la carga de datos utilizando los alias en lugar del identificador del activo y el identificador de la propiedad. Para obtener más información, consulte Asigne flujos de datos industriales a propiedades de activos.

Para crear un activo de dispositivo y definir alias de propiedad
  1. Vaya a la consola de AWS IoT SiteWise.

  2. En el panel de navegación izquierdo, elija Assets (activos).

  3. Elija Create asset (Crear activo).

  4. En Información del modelo, seleccione el modelo de activo de su dispositivo, SiteWise Tutorial Device Model.

  5. En Información del activo, introduzca un nombre para su activo. Por ejemplo, SiteWise Tutorial Device 1.

  6. Elija Create asset (Crear activo).

  7. Para el nuevo activo de dispositivo, elija Edit (Editar).

  8. En CPU Usage, escriba /tutorial/device/SiteWiseTutorialDevice1/cpu como alias de propiedad. El nombre de la AWS IoT cosa se incluye en el alias de la propiedad para poder ingerir datos de todos los dispositivos con una sola AWS IoT regla.

  9. En Memory Usage, escriba /tutorial/device/SiteWiseTutorialDevice1/memory como alias de propiedad.

  10. Seleccione Guardar.

Si has creado varios AWS IoT elementos anteriormente, repite los pasos 3 a 10 para cada dispositivo e incrementa el número en el nombre del activo y en los alias de propiedad según corresponda. Por ejemplo, el nombre del segundo activo del dispositivo debe ser SiteWise Tutorial Device 2 y sus alias de propiedad deben ser /tutorial/device/SiteWiseTutorialDevice2/cpu y /tutorial/device/SiteWiseTutorialDevice2/memory.

Paso 6: Crear y configurar un activo de flota de dispositivos

En este procedimiento, se forma un activo de flota de dispositivos derivado del modelo de activos de su flota de dispositivos. A continuación, vincula los activos de sus dispositivos individuales al activo de la flota. Esta asociación permite que las propiedades métricas del activo de la flota recopilen y analicen datos de varios dispositivos. Estos datos le proporcionan una visión consolidada del rendimiento colectivo de toda la flota.

Para crear un activo de flota de dispositivos y asociar activos de dispositivo
  1. Vaya a la consola de AWS IoT SiteWise.

  2. En el panel de navegación izquierdo, elija Assets (activos).

  3. Elija Create asset (Crear activo).

  4. En Información de modelo, elija su modelo de activos de flota de dispositivos, SiteWise Tutorial Device Fleet Model.

  5. En Información del activo, introduzca un nombre para su activo. Por ejemplo, SiteWise Tutorial Device Fleet 1.

  6. Elija Create asset (Crear activo).

  7. Para el nuevo activo de flota de dispositivos, elija Edit (Editar).

  8. En Activos asociados a este activo, elija Añadir activo asociado y haga lo siguiente:

    1. En Hierarchy (Jerarquía), elija Device. Esta jerarquía identifica la relación jerárquica entre el dispositivo y los activos de la flota de dispositivos. Ha definido esta jerarquía en el modelo de activos de flota de dispositivos anteriormente en este tutorial.

    2. En Asset (activo), elija el activo del dispositivo, SiteWise Tutorial Device 1.

  9. (Opcional) Si ha creado varios activos de dispositivo anteriormente, repita los pasos 8 a 10 para cada activo de dispositivo que haya creado.

  10. Seleccione Guardar.

    Ahora debería ver los activos de su dispositivo organizados como una jerarquía.

Paso 7: Cree 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 sombra del dispositivo se actualice, AWS IoT enviará un MQTT mensaje. Puedes crear una regla que actúe cuando las sombras del dispositivo cambien en función del MQTT mensaje. 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. Elija Crear regla.

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

  5. Introduzca la siguiente SQL declaración 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 al respecto AWS IoT SQL, consulte la AWS IoT SQLreferencia 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))}.

      La entrada identifica de IDs forma única cada intento de entrada de valores. 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 epoch Time. 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 del interior de 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 IAMFunción, elija Crear nueva función para crear una IAM función para esta acción de regla. Esta función 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 Solucionar problemas con una regla ()AWS IoT SiteWise.

  8. Elija Next (Siguiente).

  9. Revise la configuración y seleccione Crear.

Paso 8: Ejecute el script del cliente del dispositivo

En este tutorial, no está utilizando un dispositivo real para informar datos. En su lugar, ejecutas un script para actualizar la AWS IoT sombra del dispositivo CPU y el uso de memoria para imitar los datos reales de los sensores. Para ejecutar el script, primero debes instalar Python los paquetes necesarios. En este procedimiento, instale los Python paquetes necesarios y, a continuación, ejecute el script del cliente del dispositivo.

Para configurar y ejecutar el script del cliente del dispositivo
  1. Vaya a la consola de AWS IoT.

  2. En la parte inferior del panel de navegación izquierdo, elija Settings (Configuración).

  3. Guarde el punto de enlace personalizado para usarlo con el script del cliente del dispositivo. Utiliza este punto de enlace para interactuar con las sombras de su objeto. Este punto de enlace es exclusivo de su cuenta en la región actual.

    El punto de enlace personalizado debe ser similar al siguiente ejemplo.

    identifier.iot.region.amazonaws.com
  4. Abra una línea de comandos y ejecute el siguiente comando para acceder al directorio del tutorial que creó anteriormente.

    cd iot-sitewise-rule-tutorial
  5. Ejecute el siguiente comando para instalar AWS IoT Device SDK para Python.

    pip3 install AWSIoTPythonSDK

    Para obtener más información, consulte AWS IoT Device SDK para Python en la Guía para desarrolladores de AWS IoT

  6. Ejecute el siguiente comando para instalar psutil, un proceso multiplataforma y una biblioteca de utilidades del sistema.

    pip3 install psutil

    Para obtener más información, consulte psutil en el Python Package Index.

  7. Cree un archivo denominado thing_performance.py en el directorio iot-sitewise-rule-tutorial y, a continuación, copie el siguiente código Python en el archivo.

    import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT import json import psutil import argparse import logging import time # Configures the argument parser for this program. def configureParser(): parser = argparse.ArgumentParser() parser.add_argument( "-e", "--endpoint", action="store", required=True, dest="host", help="Your AWS IoT custom endpoint", ) parser.add_argument( "-r", "--rootCA", action="store", required=True, dest="rootCAPath", help="Root CA file path", ) parser.add_argument( "-c", "--cert", action="store", required=True, dest="certificatePath", help="Certificate file path", ) parser.add_argument( "-k", "--key", action="store", required=True, dest="privateKeyPath", help="Private key file path", ) parser.add_argument( "-p", "--port", action="store", dest="port", type=int, default=8883, help="Port number override", ) parser.add_argument( "-n", "--thingName", action="store", required=True, dest="thingName", help="Targeted thing name", ) parser.add_argument( "-d", "--requestDelay", action="store", dest="requestDelay", type=float, default=1, help="Time between requests (in seconds)", ) parser.add_argument( "-v", "--enableLogging", action="store_true", dest="enableLogging", help="Enable logging for the AWS IoT Device SDK for Python", ) return parser # An MQTT shadow client that uploads device performance data to AWS IoT at a regular interval. class PerformanceShadowClient: def __init__( self, thingName, host, port, rootCAPath, privateKeyPath, certificatePath, requestDelay, ): self.thingName = thingName self.host = host self.port = port self.rootCAPath = rootCAPath self.privateKeyPath = privateKeyPath self.certificatePath = certificatePath self.requestDelay = requestDelay # Updates this thing's shadow with system performance data at a regular interval. def run(self): print("Connecting MQTT client for {}...".format(self.thingName)) mqttClient = self.configureMQTTClient() mqttClient.connect() print("MQTT client for {} connected".format(self.thingName)) deviceShadowHandler = mqttClient.createShadowHandlerWithName( self.thingName, True ) print("Running performance shadow client for {}...\n".format(self.thingName)) while True: performance = self.readPerformance() print("[{}]".format(self.thingName)) print("CPU:\t{}%".format(performance["cpu"])) print("Memory:\t{}%\n".format(performance["memory"])) payload = {"state": {"reported": performance}} deviceShadowHandler.shadowUpdate( json.dumps(payload), self.shadowUpdateCallback, 5 ) time.sleep(args.requestDelay) # Configures the MQTT shadow client for this thing. def configureMQTTClient(self): mqttClient = AWSIoTPyMQTT.AWSIoTMQTTShadowClient(self.thingName) mqttClient.configureEndpoint(self.host, self.port) mqttClient.configureCredentials( self.rootCAPath, self.privateKeyPath, self.certificatePath ) mqttClient.configureAutoReconnectBackoffTime(1, 32, 20) mqttClient.configureConnectDisconnectTimeout(10) mqttClient.configureMQTTOperationTimeout(5) return mqttClient # Returns the local device's CPU usage, memory usage, and timestamp. def readPerformance(self): cpu = psutil.cpu_percent() memory = psutil.virtual_memory().percent timestamp = time.time() return {"cpu": cpu, "memory": memory, "timestamp": timestamp} # Prints the result of a shadow update call. def shadowUpdateCallback(self, payload, responseStatus, token): print("[{}]".format(self.thingName)) print("Update request {} {}\n".format(token, responseStatus)) # Configures debug logging for the AWS IoT Device SDK for Python. def configureLogging(): logger = logging.getLogger("AWSIoTPythonSDK.core") logger.setLevel(logging.DEBUG) streamHandler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) streamHandler.setFormatter(formatter) logger.addHandler(streamHandler) # Runs the performance shadow client with user arguments. if __name__ == "__main__": parser = configureParser() args = parser.parse_args() if args.enableLogging: configureLogging() thingClient = PerformanceShadowClient( args.thingName, args.host, args.port, args.rootCAPath, args.privateKeyPath, args.certificatePath, args.requestDelay, ) thingClient.run()
  8. Ejecute thing_performance.py desde la línea de comandos con los siguientes parámetros:

    • -n, --thingName: su nombre del objeto, como SiteWiseTutorialDevice1.

    • -e, --endpoint — El AWS IoT punto final personalizado que guardó anteriormente en este procedimiento.

    • -r, --rootCA — La ruta a su certificado de CA AWS IoT raíz.

    • -c, --cert — La ruta a su certificado de AWS IoT cosas.

    • -k, --key — La ruta a la clave privada de su certificado de AWS IoT cosas.

    • -d, --requestDelay: (opcional) el tiempo de espera en segundos entre cada actualización de la sombra de dispositivo. El valor predeterminado es 1 segundo.

    • -v, --enableLogging: (opcional) si este parámetro está presente, el script imprime los mensajes de depuración desde el AWS IoT Device SDK para Python.

    El comando debería ser similar al siguiente ejemplo.

    python3 thing_performance.py \ --thingName SiteWiseTutorialDevice1 \ --endpoint identifier.iot.region.amazonaws.com \ --rootCA AmazonRootCA1.pem \ --cert device1/thing-id-certificate.pem.crt \ --key device1/thing-id-private.pem.key

    Si está ejecutando el script para otras AWS IoT cosas, actualice el nombre de la cosa y el directorio del certificado en consecuencia.

  9. Intenta abrir y cerrar programas en tu dispositivo para ver cómo cambian los usos CPU y de la memoria. El script imprime cada uno CPU y lee el uso de memoria. Si el script carga datos en el servicio de sombra del dispositivo correctamente, el resultado del script debe ser similar al siguiente ejemplo.

    [SiteWiseTutorialDevice1] CPU: 24.6% Memory: 85.2% [SiteWiseTutorialDevice1] Update request e6686e44-fca0-44db-aa48-3ca81726f3e3 accepted
  10. Siga estos pasos para comprobar que el script está actualizando la sombra del dispositivo:

    1. Vaya a la consola de AWS IoT.

    2. En el panel de navegación de la izquierda, elija Todos los dispositivos y, a continuación, Objetos.

    3. Elige lo tuyo, SiteWiseTutorialDevice.

    4. Seleccione la pestaña Sombras de dispositivo, seleccione Sombra clásica y compruebe que el Estado de la sombra es similar al del siguiente ejemplo.

      { "reported": { "cpu": 24.6, "memory": 85.2, "timestamp": 1579567542.2835066 } }

      Si el estado de sombra de tu objeto está vacío o no tiene el mismo aspecto que en el ejemplo anterior, comprueba que el script se esté ejecutando y que se haya conectado correctamente AWS IoT. Si se sigue agotando el tiempo de espera del script al conectarse AWS IoT, compruebe que su política de cosas esté configurada de acuerdo con este tutorial.

  11. Siga estos pasos para comprobar que la acción de regla está enviando datos a AWS IoT SiteWise:

    1. Vaya a la consola de AWS IoT SiteWise.

    2. En el panel de navegación izquierdo, elija Assets (activos).

    3. Elija la flecha situada junto a su activo de flota de dispositivos (SiteWise Tutorial Device Fleet 1 1) para expandir su jerarquía de activos y, a continuación, elija su activo de dispositivo (SiteWise Tutorial Device 1).

    4. Elija Measurements (Medidas).

    5. Compruebe que las celdas Latest value (Valor más reciente) tengan valores para las propiedades CPU Usage y Memory Usage.

      Captura de pantalla con la palabra «Medidas» resaltada.
    6. Si las propiedades CPU Usage y Memory Usage no tienen los valores más recientes, actualice la página. Si los valores no aparecen después de unos minutos, consulte Solucionar problemas con una regla ()AWS IoT SiteWise.

Ha completado este tutorial. Si desea explorar visualizaciones en directo de sus datos, puede configurar un portal en AWS IoT SiteWise Monitor. Para obtener más información, consulte Supervise los datos con AWS IoT SiteWise Monitor. De lo contrario, puede pulsar CTRL+C en la línea de comandos para detener el script del cliente del dispositivo. Es poco probable que el programa Python envíe suficientes mensajes para incurrir en gastos, pero se recomienda detener el programa cuando haya terminado.

Paso 9: Limpiar los recursos después del tutorial

Después de completar el tutorial sobre la ingesta de datos de AWS IoT las cosas, limpie sus recursos para evitar incurrir en cargos adicionales.

Para eliminar activos jerárquicos en AWS IoT SiteWise
  1. Vaya a la consola AWS IoT SiteWise.

  2. En el panel de navegación izquierdo, elija Assets (activos).

  3. Al eliminar activos AWS IoT SiteWise, primero debe desasociarlos.

    Complete los siguientes pasos para anular la asociación de los activos de su dispositivo de su activo de flota de dispositivos:

    1. Elija su activo de flota de dispositivos (SiteWise Tutorial Device Fleet 1).

    2. Elija Editar.

    3. En Assets associated to this asset (activos asociados a este activo), elija Disassociate (Anular asociación) para cada activo de dispositivo asociado a este activo de flota de dispositivo.

    4. Seleccione Guardar.

      Ahora ya no debería ver los activos de su dispositivo organizados como jerarquía.

  4. Elija el activo de dispositivo (SiteWise Tutorial Device 1).

  5. Elija Eliminar.

  6. En el cuadro de diálogo de confirmación, escriba Delete y, a continuación, elija Delete (Eliminar).

  7. Repita los pasos 4 a 6 para cada activo de dispositivo y el activo de flota de dispositivos (SiteWise Tutorial Device Fleet 1).

Para eliminar modelos de activos jerárquicos en AWS IoT SiteWise
  1. Vaya a la consola de AWS IoT SiteWise.

  2. Si aún no lo ha hecho, elimine el dispositivo y los activos de la flota de dispositivos. Para obtener más información, consulte el procedimiento anterior. No puede eliminar un modelo si tiene activos creados a partir de ese modelo.

  3. En el panel de navegación izquierdo, elija Models (Modelos).

  4. Elija su modelo de activos de flota de dispositivos (SiteWise Tutorial Device Fleet Model).

    Al eliminar modelos de activos jerárquicos, comience por eliminar primero el modelo de activos principal.

  5. Elija Eliminar.

  6. En el cuadro de diálogo de confirmación, escriba Delete y, a continuación, elija Delete (Eliminar).

  7. Repita los pasos 4 a 6 para el modelo de activos del dispositivo (SiteWise Tutorial Device Model).

Para deshabilitar o eliminar una regla en AWS IoT Core
  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 su regla y seleccione Eliminar.

  4. En el cuadro de diálogo de confirmación, ingrese el nombre de la regla y, a continuación, elija Eliminar.