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.
Configuración y solución de problemas de AWS IoT Greengrass con dispositivos cliente
Creado por Marouane Sefiani y Akalanka De Silva () AWS
Entorno: PoC o piloto | Tecnologías: IoT | AWSservicios: AWS IoT Greengrass; IoT Core AWS |
Resumen
AWSIoT Greengrass es un servicio en la nube y de tiempo de ejecución perimetral de código abierto para crear, implementar y administrar software de Internet de las cosas (IoT) en dispositivos periféricos. Los casos de uso de AWS IoT Greengrass incluyen:
Hogares inteligentes donde se utiliza una puerta de enlace AWS IoT Greengrass como centro de automatización del hogar
Fábricas inteligentes donde el AWS IoT Greengrass puede facilitar la ingesta y el procesamiento local de los datos del taller
AWSIoT Greengrass puede actuar como un punto de MQTT conexión seguro y autenticado para otros dispositivos periféricos (también conocidos como dispositivos cliente) que, de otro modo, normalmente se conectarían directamente a IoT AWS Core. Esta capacidad resulta útil cuando los dispositivos cliente no tienen acceso directo a la red al punto final de AWS IoT Core.
Puede configurar AWS IoT Greengrass para su uso con dispositivos cliente en los siguientes casos de uso:
Para que los dispositivos cliente envíen datos a AWS IoT Greengrass
Para que AWS IoT Greengrass reenvíe datos a IoT Core AWS
Para aprovechar las funciones avanzadas del motor de reglas de AWS IoT Core
Estas capacidades requieren la instalación y configuración de los siguientes componentes en el AWS dispositivo IoT Greengrass:
MQTTcorredor
MQTTpuente
Autenticación del dispositivo cliente
Detector de IP
Además, los mensajes publicados desde los dispositivos cliente deben estar en JSON formato Protocol Buffers (protobuf
Este patrón describe cómo instalar y configurar estos componentes necesarios y proporciona consejos para la solución de problemas y las prácticas recomendadas.
Requisitos previos y limitaciones
Requisitos previos
Limitaciones
Debe elegir una AWS región en la que AWS IoT Core esté disponible. Para ver la lista actual de regiones de AWS IoT Core, consulte AWSServicios por región
. El dispositivo principal debe tener al menos 172 MB RAM y 512 MB de espacio en disco.
Arquitectura
El siguiente diagrama muestra la arquitectura de soluciones para este patrón.
La arquitectura incluye:
Dos dispositivos cliente. Cada dispositivo contiene una clave privada, un certificado de dispositivo y un certificado de la entidad de certificación (CA) raíz. El dispositivo AWS IoTSDK, que contiene un MQTT cliente, también se instala en cada dispositivo cliente.
Un dispositivo central que ha implementado AWS IoT Greengrass con los siguientes componentes:
MQTTcorredor
MQTTpuente
Autenticación del dispositivo cliente
Detector de IP
Esta arquitectura admite los siguientes escenarios:
Los dispositivos cliente pueden usar su MQTT cliente para comunicarse entre sí a través del MQTT intermediario del dispositivo principal.
Los dispositivos cliente también pueden comunicarse con AWS IoT Core en la nube a través del MQTT intermediario del dispositivo principal y el MQTT puente.
AWSIoT Core en la nube puede enviar mensajes a los dispositivos del cliente a través del cliente de MQTT prueba y del MQTT puente y MQTT intermediario del dispositivo principal.
Para obtener más información sobre las comunicaciones entre los dispositivos cliente y el dispositivo principal, consulte la sección información adicional.
Herramientas
AWSservicios
AWSIoT Greengrass es un servicio en la nube y de tiempo de ejecución perimetral del Internet de las Cosas (IoT) de código abierto que le ayuda a crear, implementar y administrar aplicaciones de IoT en sus dispositivos.
AWSIoT Core proporciona una comunicación bidireccional segura para que los dispositivos conectados a Internet se conecten a la nube. AWS
AWSIoT Device SDK
es un kit de desarrollo de software que incluye bibliotecas de código abierto, guías para desarrolladores con ejemplos y guías de portabilidad para que pueda crear productos o soluciones de IoT innovadores en las plataformas de hardware que elija. AWSIdentity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
Prácticas recomendadas
La carga útil de los mensajes de los dispositivos cliente debe estar en formato Protobuf JSON o en formato Protobuf para aprovechar las funciones avanzadas del motor de reglas de AWS IoT Core, como la transformación y las acciones condicionales.
Configure el MQTT puente para permitir la comunicación bidireccional.
Configure e implemente el componente detector de IP en AWS IoT Greengrass para garantizar que las direcciones IP del dispositivo principal se incluyan en el campo del nombre alternativo del asunto (SAN) del certificado del MQTT corredor.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configura AWS IoT Greengrass en tu dispositivo principal. | Instale el software AWS IoT Greengrass Core siguiendo las instrucciones de la guía para desarrolladores. | AWS IoT Greengrass |
Compruebe el estado de la instalación. | Utilice el siguiente comando para comprobar el estado del servicio AWS IoT Greengrass en su dispositivo principal:
El resultado esperado del comando es:
| General AWS |
Configure una IAM política y adjúntela al rol de servicio de Greengrass. |
| General AWS |
Configure e implemente los componentes necesarios en el dispositivo principal de AWS IoT Greengrass. | Configure e implemente los siguientes componentes:
| AWS IoT Greengrass |
Confirme que el MQTT puente permita la comunicación bidireccional. | Para retransmitir MQTT mensajes entre los dispositivos cliente y AWS IoT Core, configure e implemente el componente MQTT puente y especifique los temas que se van a retransmitir. A continuación se muestra un ejemplo:
| AWS IoT Greengrass |
Confirme que el componente de autenticación permite a los dispositivos cliente conectarse y publicar temas o suscribirse a ellos. | La siguiente configuración
| AWS IoT Greengrass |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instale el dispositivo AWS IoTSDK. | Instale el dispositivo AWS IoT SDK en los dispositivos cliente. Para obtener una lista completa de los idiomas compatibles y los correspondientesSDKs, consulta la documentación básica de AWS IoT. Por ejemplo, el dispositivo AWS IoT SDK para Python SDK está ubicado en GitHub
Como alternativa, puede instalarlo SDK desde el repositorio de origen:
| AWSIoT general |
Cree un objeto. |
| AWSNúcleo de IoT |
Descargue el certificado de CA del dispositivo principal de Greengrass. | Si espera que el dispositivo principal de Greengrass funcione en entornos fuera de línea, debe poner el certificado de CA principal de Greengrass a disposición del dispositivo cliente para que pueda verificar el certificado del MQTT corredor (emitido por la CA principal de Greengrass). Por lo tanto, es importante obtener una copia de este certificado. Utilice alguna de los siguientes opciones para descargar el certificado de CA:
| General AWS |
Copiar las credenciales en los dispositivos cliente. | Copiar el certificado de CA principal de Greengrass, el certificado del dispositivo y la clave privada en los dispositivos cliente. | General AWS |
Asociar los dispositivos cliente al dispositivo principal. | Asociar los dispositivos cliente a un dispositivo principal para que puedan detectar el dispositivo principal. Luego, los dispositivos cliente pueden usar el descubrimiento de Greengrass API para recuperar la información de conectividad y los certificados de sus dispositivos principales asociados. Para obtener más información, consulte Asociar dispositivos cliente en la documentación de AWS IoT Greengrass.
Los dispositivos cliente que asoció ahora pueden usar el descubrimiento de Greengrass API para detectar este dispositivo principal. | AWS IoT Greengrass |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Enviar datos de un dispositivo cliente a otro dispositivo cliente. | Utilice el MQTT cliente de su dispositivo para publicar un mensaje sobre el | General AWS |
Envíe datos desde el dispositivo cliente a AWS IoT Core. | Utilice el MQTT cliente de su dispositivo para publicar un mensaje sobre el En el cliente de MQTT prueba, suscríbete al tema sobre el que el dispositivo está enviando mensajes o suscríbete a # para todos los temas (consulta los detalles). | General AWS |
Envíe mensajes desde AWS IoT Core a los dispositivos del cliente. | En la página del cliente de MQTT prueba, en la pestaña Publicar en un tema, en el campo Nombre del tema, introduzca el nombre del tema de su mensaje. En este ejemplo, utilice | General AWS |
Resolución de problemas
Problema | Solución |
---|---|
No se pudo verificar el error del certificado del servidor | Este error se produce cuando el MQTT cliente no puede verificar el certificado presentado por el MQTT bróker durante el TLS apretón de manos. La razón más común es que el MQTT cliente no tiene el certificado de CA. Siga estos pasos para asegurarse de que el certificado de CA se proporciona al MQTT cliente.
|
No se pudo verificar el error del nombre del servidor | Este error se produce cuando el MQTT cliente no puede comprobar que se está conectando al servidor correcto. La razón más común es que la dirección IP del dispositivo Greengrass no aparece en el SAN campo del certificado. Siga las instrucciones de la solución anterior para obtener el certificado de MQTT intermediario y compruebe que el SAN campo contiene la dirección IP del dispositivo AWS IoT Greengrass, tal y como se explica en la sección Información adicional. Si no es así, confirme que el componente del detector de IP está instalado correctamente y reinicie el dispositivo principal. |
No se puede verificar el nombre del servidor solo cuando se conecta desde un dispositivo cliente integrado | MbedTLS, que es una TLS biblioteca popular que se utiliza en los dispositivos integrados, actualmente solo admite la verificación de DNS nombres en el SAN campo del certificado, como se muestra en el código de la biblioteca de MbedTLS. Como el dispositivo principal no tiene su propio nombre de dominio y depende de la dirección IP, los TLS clientes que utilicen Mbed no podrán comprobar el nombre del servidor durante el TLS apretón de manos, lo que TLS provocará un fallo de conexión. Le recomendamos que añada la verificación de la dirección SAN IP a su TLS biblioteca de Mbed en la función x509_crt_check_san. |
Recursos relacionados
Implementación de dispositivos de clientes locales con AWS IoT Greengrass
(AWSentrada del blog)
Información adicional
Esta sección ofrece información adicional sobre las comunicaciones entre los dispositivos cliente y el dispositivo principal.
El MQTT agente escucha en el puerto 8883 del dispositivo principal un intento de conexión con el cliente. TLS En la siguiente ilustración se muestra un ejemplo de certificado de servidor de un MQTT bróker.
El certificado de ejemplo muestra los siguientes detalles:
El certificado lo emite la CA Core de AWS IoT Greengrass, que es local y específica del dispositivo principal; es decir, actúa como una CA local.
El componente de autenticación del cliente rota automáticamente este certificado cada semana, como se muestra en la siguiente ilustración. Puede establecer este intervalo en la configuración del componente de autenticación del cliente.
El nombre alternativo del asunto (SAN) desempeña un papel fundamental en la verificación del nombre del servidor por parte del TLS cliente. Ayuda al TLS cliente a asegurarse de que se conecta al servidor correcto y ayuda a evitar ataques man-in-the intermedios durante la configuración de la TLS sesión. En el certificado de ejemplo, el SAN campo indica que este servidor escucha en localhost (el socket de dominio Unix local) y que la interfaz de red tiene la dirección IP 192.168.1.12.
El TLS cliente utiliza el SAN campo del certificado para comprobar que se está conectando a un servidor legítimo durante la verificación del servidor. Por el contrario, durante un TLS apretón de manos típico entre un HTTP servidor y un navegador, el nombre de dominio del campo o SAN campo del nombre común (CN) se utiliza para comprobar el dominio al que se está conectando realmente el navegador durante el proceso de verificación del servidor. Si el dispositivo principal no tiene un nombre de dominio, la dirección IP incluida en el SAN campo tiene el mismo propósito. Para obtener más información, consulte la sección Nombre alternativo del asunto del perfil RFC
El componente detector de IP de AWS IoT Greengrass garantiza que se incluyan las direcciones IP correctas en el SAN campo del certificado.
El certificado del ejemplo lo firma el dispositivo AWS IoT Greengrass que actúa como CA local. El TLS cliente (MQTTcliente) no conoce esta CA, por lo que debemos proporcionar un certificado de CA similar al siguiente.