Creación de un flujo en un grupo de AWS IoT Greengrass con dispositivos - AWS IoT Things Graph

AWS IoT Things Graphse está interrumpiendo. Puede seguir utilizando elConsola de AWS IoT Things Graphsolo si estás en la lista de permitidos para ello.

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.

Creación de un flujo en un grupo de AWS IoT Greengrass con dispositivos

En este tema se describen los pasos que debe seguir para crear e implementar un flujo de trabajo sencillo que se compone de un Raspberry Pi conectado a tres dispositivos: un sensor de movimiento Aukru HC-SR501, una cámara Raspberry Pi y una pantalla Raspberry Pi.

El flujo de este ejemplo se activa cuando el sensor de movimiento detecta movimiento. El sensor de movimiento envía un mensaje a la cámara, que toma una foto y la envía a la pantalla para mostrarla.

Si no desea comprar los dispositivos que se utilizan en este ejemplo, puede ejecutar tres scripts de Python que imitan las funciones de los dispositivos. En este tema se muestra cómo ejecutar el flujo con dispositivos reales y emulados.

Busque el código de los dispositivos emulados en el archivo MockDevices.zip o MockDevices-v2.zip. El primer archivo contiene scripts que usan AWS IoT Device SDK para Python v1. El segundo archivo contiene scripts que usan AWS IoT Device SDK para Python v2. Puede ejecutar estos scripts en cualquier entorno Linux, como un Raspberry Pi o unInstancia Amazon EC2, en el que está instalado Python 2.7.

Prerequisites

Para crear este ejemplo, necesita los siguientes recursos de AWS:

Para crear este ejemplo con dispositivos reales, necesita los siguientes recursos de hardware:

Configuración de Raspberry Pi

Para ejecutar el flujo de trabajo con dispositivos reales, debe configurar su Raspberry Pi con esos dispositivos. Si va a crear este ejemplo con los dispositivos emulados, vaya a la sección Crear un grupo de AWS IoT Greengrass.

Ahora ha configurado su Raspberry Pi para que se comunique con el sensor de movimiento, la cámara y la pantalla.

Cree un grupo de AWS IoT Greengrass

nota

Para obtener más información acerca de cómo utilizar AWS CloudFormation para crear y administrar grupos y recursos de AWS IoT Greengrass, consulte Referencia de tipos de recursos de AWS IoT Greengrass.

Si va a crear este ejemplo con dispositivos reales, instale AWS IoT Greengrass en el mismo Raspberry Pi en el que ha conectado el sensor de movimiento, la cámara y la pantalla.

Si utiliza dispositivos emulados, instale AWS IoT Greengrass en el mismo entorno Linux en el que ejecuta los scripts de Python.

Realice los pasos que se indican en Configuración del entorno en el dispositivo o equipo apropiado. Asegúrese de que ha creado un rol de IAM paraAWS IoT Greengrass(paso 4 en elCreación de unAWS IoT GreengrassGroupprocedimiento en ese tema). Asocie la política AmazonS3FullAccess para concederle acceso a su bucket de S3.

nota

LaAWS IoT GreengrassEl grupo de y el bucket de Amazon S3 que utiliza en este ejemplo se deben crear en el mismoAWSRegión . Las entidades del AWS IoT Things Graph que cree también deben estar en la misma región que estos recursos.

Creación de objetos

Abra el iconoConsola de AWS IoTY cree tres objetos: uno para el sensor de movimiento y los otros dos para la cámara y la pantalla conectadas a su Raspberry Pi.

Para obtener instrucciones sobre cómo crear objetos en el Registro, consulte Registro de un dispositivo en el Registro. Asegúrese de crear y activar certificados para cada objeto.

En el navegadorConsola de AWS IoT, en laGreengrass, seleccione su grupo de y elijaDispositivosy, a continuación, agregue las tres cosas nuevas a suAWS IoT Greengrassgrupo.

Para obtener más información acerca de los conceptos de AWS IoT, consulte¿Qué es AWS IoT?

Configuración de los dispositivos emulados

Para ejecutar el flujo de trabajo (flujo) con dispositivos emulados, debe instalar el SDK de AWS IoT Greengrass Core y, a continuación, copiar los scripts de Python en el archivo MockDevices.zip o MockDevices-v2.zip en su entorno Linux.

Si va a crear este ejemplo con dispositivos reales, vaya a la sección Creación e implementación del flujo.

  1. Instale el SDK para dispositivos con AWS IoT.

  2. Descargue y extraiga el archivo MockDevices.zip o MockDevices-v2.zip. El directorio extraído contiene tres archivos llamados ms.py, camera.py y screen.py.

  3. Cree las carpetas ms, camera y screen.

  4. Copie el archivo ms.py en el directorio ms, el archivo camera.py en el directorio camera y el archivo screen.py en el directorio screen.

  5. Copie el certificado y la clave privada de cada uno de los tres objetos que ha creado en el directorio correspondiente en su entorno Linux. Copie también el certificado de la entidad de certificación (CA) raíz de AWS IoT en cada directorio. Por ejemplo, el certificado y la clave privada del sensor de movimiento deben estar en lams, con la CA raíz para AWS IoT y elms.pyfile.

    Si no ha creado y activado certificados para sus objetos, siga los pasos de Registrar un dispositivo en el registro. Asegúrese de asociar una política a cada certificado.

Crear y publicar el flujo

Para crear este flujo con la herramientaAWS CLIen lugar de la consola AWS IoT Things Graph, siga las instrucciones deCreación de un flujo con dispositivos utilizando laAWS CLI.

  1. Abra el iconoAWS IoT Things GraphHaga clic en y luego enCreación de flujo.

  2. Cree un flujo.

    En el panel Flow configuration (Configuración de flujo) que aparece, asigne un nombre al flujo (como SecurityFlow). Elija Create flow (Crear flujo).

  3. Añada los modelos de dispositivo al flujo.

    Busque el dispositivo MotionSensor (Sensor de movimiento). Seleccione el modelo de dispositivo y arrástrelo al diseñador de flujo. Haga lo mismo con los modelos de dispositivo Camera (Cámara) y Screen (Pantalla).

  4. Conecte los modelos de dispositivo.

    En el diseñador de flujo, seleccione el extremo del modelo de dispositivo MotionSensor (Sensor de movimiento) y conéctelo al modelo de dispositivo Camera (Cámara). Conecte también el modelo de dispositivo Camera (Cámara) al modelo de dispositivo Screen (Pantalla).

    
               CamerayScreenModelos de dispositivo conectados mediante una línea recta.
  5. Actualice el desencadenador del sensor de movimiento.

    En el editor del desencadenador que aparece en el panel derecho, en Condition (Condición), elija StateChanged (Estado cambiado). En Action (Acción), seleccione ThingsGraph.startFlow.

  6. Actualice la acción del modelo de dispositivo de cámara.

    1. En el diseñador de flujo, seleccione el modelo de dispositivo Camera (Cámara).

    2. En el editor de acciones que aparece en el panel derecho, elija No action configured (Ninguna acción configurada).

    3. En Action (Acción), elija Capture (Capturar).

    4. Amplíe Output (Salida) y, a continuación, introduzca cameraResult.

  7. Actualice la acción de los dispositivos de pantalla.

    1. En el diseñador de flujo, seleccione el modelo de dispositivo Screen (Pantalla).

    2. En el editor de acciones que aparece en el panel derecho, elija No action configured (Ninguna acción configurada).

    3. En Action (Acción), elija Display (Visualización).

    4. Amplíe Inputs (Entradas) y, a continuación, elija Define Input (Definir entrada).

    5. En Inputs (Entradas), introduzca ${cameraResult.lastClickedImage}.

  8. Publique el flujo.

    Elija Publish (Publicar) en la parte superior derecha de la página. Se creará el flujo y se añadirá a la lista de flujos que se pueden implementar.

Asociar objetos a los modelos de dispositivo

  1. Seleccione el icono de menú de la parte superior izquierda de la página. Elija Objetos.

    En la página Things (Objetos), elija el objeto de sensor de movimiento que creó anteriormente. A continuación, elija Associate with device (Asociar con dispositivo).

  2. En la página Select device model (Seleccionar modelo de dispositivo), elija HCSR501MotionSensor. Elija Associate. Este paso asocia al objeto del sensor de movimiento HCSR501MotionSensor en el registro con el modelo de dispositivo de sensor de movimiento en su flujo. El dispositivo HCSR501MotionSensor implementa la capacidad del modelo de dispositivo MotionSensor (Sensor de movimiento).

  3. Una vez que vuelva a la página Select device model (Seleccionar modelo de dispositivo), actualice la página para verificar que el objeto del sensor de movimiento se asocie al dispositivo HCSR501MotionSensor. Repita los dos pasos anteriores para los dispositivos RaspberryPiCamera y RaspberryPiScreen.

Crear e implementar la configuración de flujo

  1. Cree la configuración de flujo.

    Seleccione el icono de menú de la parte superior izquierda de la página y, a continuación, elija Flows (Flujos) para volver a la página Flows (Flujos). Active la casilla situada junto al flujo que acaba de crear y, a continuación, elija Create flow configuration (Crear configuración de flujo).

  2. Asigne un nombre a la configuración de flujo.

    Una configuración de flujo contiene los detalles que son específicos de una sola implementación. En la página Describe flow configuration (Describir la configuración de flujo), seleccione su flujo e introduzca un nombre de configuración de flujo. El nombre de configuración de flujo no puede contener espacios.

    Elija Greengrass y, a continuación, Next (Siguiente).

  3. Configure el destino.

    En la páginaConfigurar destino, introduzca el nombre del bucket de Amazon S3 y elAWS IoT Greengrassal que suAWS IoT Greengrassel dispositivo de núcleo pertenece. Los buckets de Amazon S3 son únicos globalmente, por lo que el nombre de su bucket será diferente del que aparece en la siguiente captura de pantalla. Elija Next (Siguiente).

  4. Seleccione objetos para su implementación.

    La página Map Things (Asignar objetos) proporciona una interfaz para seleccionar los objetos específicos que se van a incluir en la implementación. Los menús situados bajo cada modelo de dispositivo de la implementación contienen todos los objetos asociados con el modelo de dispositivo. Como acaba de empezar, los menús de cada modelo de dispositivo de esta página incluirán un único objeto (el que ha asociado a cada dispositivo).

    En la página Map Things (Asignar objetos), para motionSensor (Sensor de movimiento), seleccione el objeto de sensor de movimiento que creó anteriormente. Seleccione los objetos de pantalla y cámara para los modelos de dispositivo Camera (Cámara) y Screen (Pantalla). Elija Next (Siguiente).

  5. Vea el desencadenador.

    En la página Setup triggers (Configurar desencadenadores), el GraphQL que define el desencadenador del evento de movimiento aparece en el editor. Este GraphQL especifica el evento que desencadena el flujo. Cuando el sensor de movimiento detecta a una persona moviéndose, la función ThingsGraph.startFlow inicia el flujo. No tiene que editar este código.

    Elija Review.

  6. Revise y cree.

    En la página Review and create (Revisar y crear), revise la información introducida para su configuración de flujo. Seleccione Create (Crear).

  7. Implemente.

    Cuando aparezca el mensaje Flow configuration created (Configuración de flujo creada), elija Deploy now (Implementar ahora).

    Actualice la página Deployments (Implementaciones) para verificar que el flujo se ha implementado. Después de una implementación correcta, la página Deployments (Implementaciones) muestra Deployed in target (Implementado en destino) en la columna Status (Estado).

Ejecución del flujo con dispositivos reales

Si ha creado este ejemplo con dispositivos emulados, avance hasta la sección Ejecución del flujo con dispositivos emulados.

Encienda su Raspberry Pi, sensor de movimiento, cámara y pantalla. Coloque la cámara y sensor de movimiento junto delante de usted. Mueva la mano delante del sensor de movimiento. La cámara le hace una foto que muestra en la pantalla.

Ejecución del flujo con dispositivos emulados

Para ejecutar los scripts de Python para cada dispositivo simuado, necesita conocer el punto de enlace personalizado de AWS IoT. Esto le permitirá conectarse a AWS IoT.

Para encontrar este punto de enlace, abra la consola de AWS IoT (https://console.aws.amazon.com/iot/) y luego seleccioneConfiguración. También puede encontrar el punto de enlace mediante el comando aws iot describe-endpoint de la AWS CLI.

Si utiliza una entidad de certificación raíz de Amazon Trust Services (ATS), utilice el siguiente comando de la AWS CLI para buscar el punto de enlace personalizado. Para obtener más información acerca de los certificados y los puntos de enlace de ATS, consulte Certificados X.509 y AWS IoT.

aws iot describe-endpoint --endpoint-type iot:Data-ATS

Siga estos pasos para ejecutar los tres scripts de Python y ver cómo los dispositivos emulados interactúan en el flujo.

nota

No es necesario pasar su punto de enlace personalizado como parámetro para los scripts que usan AWS IoT Device SDK para Python v2.

  1. Abra tres sesiones de terminal en su entorno Linux. En un terminal, vaya al directorio ms. Para ejecutar el script ms.py, ejecute el siguiente comando.

    python ms.py -e custom endpoint -r root CA file path -c certificate file path -k private key file path -n motion sensor thing name

    Una vez que se empieza a ejecutar el script, muestra el siguiente resultado durante 10 segundos. Esto indica que el sensor de movimiento emulado ha detectado movimiento.

    Published topic motion sensor thing name/motion: {"isMotionDetected": true}
  2. En el segundo terminal, vaya al directorio camera. Ejecute el script camera.py mediante el comando siguiente.

    python camera.py -e custom endpoint -r root CA file path -c certificate file path -k private key file path -n camera thing name

    Una vez que se empieza a ejecutar el script, muestra el siguiente resultado durante 10 segundos. Esto indica que el desencadenador del sensor de movimiento ha solicitado a la cámara emulada que capture una imagen y la publique en el tema de MQTT /capture/finished.

    Received message on topic camera thing name/capture: {} 2019-02-11 21:37:33,430 - AWSIoTPythonSDK.core.protocol.mqtt_core - INFO - Performing sync publish... Published topic camera thing name/capture/finished: {"lastClickedImage": "https://images-na.ssl-images-amazon.com/images/I/41+K4pC74XL._AC_US218_.jpg"}
  3. En el tercer terminal, vaya al directorio screen. Ejecute el script screen.py mediante el comando siguiente.

    python screen.py -e custom endpoint -r root CA file path -c certificate file path -k private key file path -n screen thing name

    Una vez que se empieza a ejecutar el script, muestra el siguiente resultado durante 10 segundos. Esto indica que la pantalla emulada ha recibido la imagen de la cámara emulada.

    Received message on topic screen thing name/display: {"imageUri":"https://images-na.ssl-images-amazon.com/images/I/51rMLSWgwRL._AC_US218_.jpg"}

Eliminar el flujo y su configuración (opcional)

Para obtener instrucciones sobre cómo anular la implementación de una configuración de flujo y eliminar tanto la configuración como el flujo que ha creado, consulte Eliminación de configuraciones de flujo y Eliminación de sistemas, flujos y espacios de nombres en Administración del ciclo de vida de entidades, flujos, sistemas e implementaciones de AWS IoT Things Graph.