Saludos Cordiales! Soy Raúl Díaz estudiante de la carrera de Ingeniería en Telecomunicaciones de la Universidad Técnica del Norte ubicada en la ciudad de Ibarra - Ecuador.
IntroducciónEste documento resume cómo enviar datos a la plataforma IoT de Amazon Web Services mediante MQTT-SN utilizando un banco de pruebas propiedad de FIT IoT-Lab para mostrar los datos obtenidos de dos estaciones meteorológicas en una página web alojada en una instancia AWS EC2.
DESAROLLOProblemáticaEl laboratorio FIT IoT-LAB se utiliza para la visualización de la simulación de la red de sensores, que da acceso a configuraciones reales de hardware y visualiza su funcionamiento. Por lo tanto, el objetivo principal de este proyecto es buscar una plataforma de integración para integrar proyectos IoT, para ello utilizamos FIT IoT Lab, donde utilizamos hardware Openmoteb para crear una red de sensores y Mosquito broker MQTT-SN utilizando At86rf231, por lo que desde. una instancia de intermediario, una conexión a AWS mediante IoT Core, Dynamo DB e integración con Grafana mediante un agente de Panoply que utiliza la herramienta Big Query de Google. Cabe mencionar que este proyecto se basa en trabajos previos, pero las siguientes secciones muestran todas las configuraciones utilizadas para desarrollar la topología presentada.
Configuraciones en AWSCrear usuario IAM
Para poder realizar este paso lo que primero se realizo fue la creación de una cuanta en AWS, la cual se la puede registrar en https://aws.amazon.com/es/, de preferencia crear una cuenta educativa, ya que esta es gratuita y sirve con el fin de aprender. Continuando con el proceso se crea este tipo de usuario por seguridad y para contar con algunas
herramientas extras. Una vez dentro nos dirigimos a la pestaña superior donde está el nombre de usuario, se da clic en Mi cuenta.
En la ventana que aparece se despliega hasta Usuario de IAM y acceso de rol a la información de facturación, se da en Editar, seleccionar la casilla de verificación
Activar IAM Access y luego en Actualizar.
En la barra de navegación, elegir Servicios y luego IAM.
En el panel de navegación, elija Usuarios y luego en Agregar usuario.
En la siguiente página Detalles, se debe realizar, primero escribir un Nombre de usuario, en este caso se ha utilizado “Administrador”. Seleccione la casilla de verificación Acceso a la consola de administración de AWS.
Se selecciona Contraseña personalizada y se escribe una nueva contraseña en el cuadro de texto. Se da clic en Siguiente: Permisos.
En la página de Permisos, se debe elegir Agregar usuario al grupi Crear grupo. En el cuadro de diálogo Crear grupo se escribe en Nombre de grupo, en este caso será “Administradores”. Seleccionar la casilla de verificación de la política AdministratorAccess. Y finalmente se da en Crear grupo.
En la página con lista de grupos, seleccionar la casilla de verificación para el nuevo grupo. Se elige Actualizar y se verá el grupo creado y las políticas asociadas.
Se debe elegir en Siguiente: Revisión, se verifica las membresías del grupo que se agregarán al nuevo usuario. Cuando esté listo se elige Crear usuario.
Crear una Objeto
Ingresamos a la consola de AWS y se dirige al servicio de IoT Core.
Cuando se encuentre dentro del servicio IoT Core, se da clic en Administrar. En la subpestaña Objetos, buscar el botón que diga Crear y luego en Crear una sola cosa.
Se debe car un nombre a la cosa y se da en Siguiente.
Luego se debe elegir en Crear certificado.
El siguiente paso es muy importante, se debe crear una carpeta de los certificados que proporcionará el sistema, estos se utilizan para configurar la conexión al Objeto. Se debe descargar un certificado y su clave privada.
A continuación, en A root CA for AWS IoT, se debe dar en Descargar, será redirigido a la página de Certificados de CA para la autenticación del servidor. Debe elegir Amazon Root CA1 y guardar el certificado que se mostrará en un archivo con extensión. pem. Finalmente se da clic en Activar.
Crear Política
Regresar a la página de inicio de AWS IoT Core y seleccionar la pestaña Seguro, luego en Políticas: en esta ocasión se crea una política para adjuntar a los certificados.
En la subpestaña Políticas, clic en Crear
Se agrega un nombre a la política, los campos de Acción y Arn de recursos se llena con el signo “ * ”, marcar la casilla Permitir y luego en Crear.
Cuando se haya creado la política, se debe regresar a la subpestaña de Certificados, se buscan los certificados y se da clic en los tres puntos.
Cuando se hayan seleccionado los certificados, es necesario dar en Asociar política y se selecciona la política que se creó y se da en Asociar.
Crear una Tabla en DynamoDB
Se necesita ahora una base de datos para almacenar todos los datos que transmitirán los sensores, para ello se debe dirigir a la consola de administración de AWS y se busca DynamoDB y se da clic en Crear tabla.
En la ventana que aparece se debe dar un Nombre a la tabla, elegir una clave primaria que será el ID, luego una clave de ordenación que se sugiere que sea la fecha y hora, tal como se indica a continuación.
Almacenamiento de credenciales en GitHub: En esta sección, usamos GitHub para almacenar las claves y credenciales descargadas previamente, ya que estos son datos necesarios para poder conectarse a AWS. Entonces, el comando para cargar el archivo es el siguiente, recuerde que estamos usando la herramienta GIT para hacer esto.
git init
git add -A
git commit -m "Certificados"
git branch -M main
git remote add origin https:ubicar_enlace_a_su_repositorio
git push -u origin main
Configuraciones en FIT IoT LABCreación de experimento
Empezamos ejecutando un experimento, para ello seleccionamos "Nuevo experimento" del portal principal, luego buscamos el nombre y el tiempo de ejecución, posteriormente seleccionamos los nodos, nos aseguramos que sean hardware OpenMote-b y estén en el base de datos de la prueba de Strasbourg también, que sugirió Seleccione el nodo, que está libre (activo) y finalmente, en la visualización del experimento, determinamos el número del nodo que se asignará como un enrutador de borde, para un mejor manejo se recomienda poner al primer nodo de la lista como el de borde, para no confundirse. A continuación se muestra una captura de pantalla del proceso descrito.
Primero ingresamos a nuestra cuenta de FIT IoT-LAB, y ponemos nuevo experimento.
Una vez abierta la siguiente pantalla, llenamos los solicitado, el nombre de proyecto, el tiempo para su ejecución y agregamos los nodos.
Para agregar los nodos escogemos las propiedades, donde destacamos el número de nodos, en este caso:
- 3 Nodos Openmote-b
- 1 Nodo A8
Seguimos y escogemos los host name de los nodos, en otras palabras escogemos los nodos que estén libres.
Creamos y verificamos lo que creamos, primero con el tiempo y el estado del experimento, luego en la otra ventana vemos los detalles de los nodos.
Configuración del firmware para nuestro Router de Borde
Configuración del firmware para las estacionesPara acceder a nuestros nodos físicos lo haremos de forma remota, en este caso usaremos hardware OpenMote-b compatible con IEEE802.15.4 y programable usando una plataforma de código abierto como RIOT OS. Por tanto, el nodo que actuará como router de borde es el que asigna direcciones a los nodos de la red, en este caso mediante direccionamiento IPv6, con el sistema operativo RIOT OS compilado en el hardware. Para ello, partimos de un servidor remoto con una configuración de entorno donde clonamos el repositorio iot-lab, que contiene varios ejemplos que se pueden ejecutar en hardware de laboratorio. Luego ingresamos al repositorio clonado e inicializamos el entorno.
ssh <login>@<site>.iot-lab.info
git clone https://github.com/iot-lab/iot-lab.git
cd iot-lab
make
Seguimos eligiendo el SO que se ejecutará en la placa, para ello elegimos RIOT y seguimos buscando el ejemplo gnrc_border_router, el mismo que se utilizará para este nodo, luego seguimos cargando y compilando la placa openmote de ejemplo.b especificar las funciones de compilación; tasa de símbolo y canal en el que operará.
make setup-riot
cd parts/RIOT/examples/gnrc_border_router
source /opt/riot.source
Después de compilar el ejemplo, se crea un archivo con la extensión.elf, que es el mismo que el firmware que debe cargarse en el nodo de laboratorio. Para hacer esto, necesitamos descargar este archivo a nuestro repositorio local, tal como está en el repositorio remoto. Así que aquí hay dos opciones para descargar el firmware integrado.
El comando scp copia archivos o directorios entre un sistema local y un sistema remoto, o entre dos sistemas remotos. En este punto, copie la ruta al archivo .elf ubicado al final del ejemplo de hardware. Además, debe especificar la ruta al servidor local copiado donde se guardará el archivo, que tendrá un nombre de archivo. Entonces, la sintaxis para copiar un archivo de un sistema remoto a un sistema local es la siguiente, y recuerde que el comando debe ejecutarse en el servidor local, por lo que se recomienda que abra una nueva terminal.
En esta configuración es necesaria para que el enrutador de borde distribuya los prefijos y direcciones IPv6 asignados. Para esto nos ubicamos en el mismo directorio que el ejemplo y usamos el comando ethos_uhcpd.py para propagar este proceso. Después de ejecutar el comando, no se recomienda cerrar la terminal en la que se está ejecutando, ni interrumpir el proceso, por lo que para configuraciones futuras, use una terminal diferente y vuelva a ingresar ssh. En el comando bajo openmoteb-3 encuentre el número de nodo de simulación.
cd iot-lab/parts/RIOT/examples/gnrc_border_router
sudo ethos_uhcpd.py openmoteb-3 tap0 2a07:2e40:fffe:00ff::/64
En este caso se utilizará el nodo A8 ya que es el tipo de nodo adecuado para ejecutar Mosquitto RSMB en el dispositivo proporcionado por IoT-LAB y será el encargado de recibir las publicaciones de la estación y enviar esta información al servicio de AWS. primero por acceso SSH al nodo a8-3 (ya que no hay otra forma de acceder a la consola ya que el tablero no lo soporta) y verifique que tenga una dirección IPv6 global addr show eth0 on el comando ip -6 - o (aunque ifconfig también se puede usar)
ssh root@node-a8-3
Saber la IP global del dispositivo no es suficiente, también debe verificar la conectividad con el resto de la topología, así que haga un ping6 para confirmar que la red es convergente.
Una vez que se verifica la conexión, se puede crear un archivo de configuración para ejecutar Mosquitto. Para hacer esto, use el editor vim para crear un archivo config.conf (en el directorio de inicio del usuario):
Contiene la información que se muestra en la siguiente imagen, que muestra los puertos de escucha para MQTTN-SN UDP 1885 y MQTT TCP 1886, que son válidos para conexiones desde direcciones IPv6.
Validamos nuevamente la dirección IPv6 del nodo A8-3
Ya con el archivo editado, se procede a ejecutar el bróker con el comand
broker_mqtts config.conf
y verifique que esté escuchando en el puerto definido.
Ahora pasamos a configurar los nodos que envían información al broker, para esto necesitamos descargar el repositorio de GitHub y copiar el ejemplo emcute_MQTTSN a la carpeta RIOT-examples en el front end FiT-IoT-LAB SSH.
Visualización de datos en DynamoDBUna vez ejecutado todo el proceso anterior, podremos visualizar los datos de los sensores dentro de BynamoDB.
Creación de cuenta
En esta sección, describimos cómo crear una cuenta Panoply gratuita, pero es importante tener en cuenta que debe registrarse con un correo electrónico laboral y que el correo electrónico pertenece a una empresa que no se ha registrado previamente con usted. Entonces, en nuestro caso, lo estamos haciendo usando el correo electrónico de las autoridades, se requieren los siguientes pasos:
Inicie sesión en el portal de Panoplia. Introduce tus datos personales, incluido tu correo electrónico laboral. Deberá verificar su bandeja de entrada para ver el correo electrónico de registro para continuar con la creación de la cuenta, donde deberá completar la información requerida. Sin embargo, si la empresa se registró previamente en Panoply, no podrá completar la creación de la cuenta. Finalmente, luego de completar todos los requisitos, tendrás 21 días de acceso al portal de Panoply con una cuenta gratuita.
Creación de usuario IAM para Panoply: Desde la instancia de IAM en AWS, es importante crear un usuario al que se le asigne el rol de lectura de DynamoDB para Panoply, y también es importante otorgarle la creación de la clave de programación de acceso donde recibirá las claves de conexión a DynamoDB. . Pasos a seguir:
- Abra IAM en la consola de AWS. Vaya a Usuarios en IAM y seleccione Agregar usuario.
- Luego ingresamos el nombre de usuario y seguimos creando.
- El siguiente paso es asignar una política de acceso de lectura a DynamoDB que le permita recopilar datos.
- Para completar la creación del usuario, revisamos la configuración realizada y presionamos el botón "Crear Usuario".
Generación de claves para conexiones programadas: Una vez que hemos creado un usuario, es importante asignarle una "clave de acceso al plan", una clave maestra y una clave de unión, este par es necesario para que Panoply haga la configuración, por lo que deben crearse. Siga los pasos a continuación para crear una clave.
- Desde la sección de usuario, ingresamos al usuario creado y vamos a la sección "Información de seguridad".
- Busque la sección Clave de acceso y toque Crear clave de acceso.
- Luego seleccione "Aplicaciones que se ejecutan fuera de AWS".
- Más tarde, asigne un nombre a la clave generada.
- Finalmente, descargue las claves en formato .csv y guárdelas si las necesita para conectarse.
DynamoDB como fuente de datos en Panoply
En el panel principal de Panoply, vamos a "Agregar fuente de datos". Allí buscamos DyamoDB y completamos la información, en este punto necesitamos la clave que descargamos en el paso anterior, además necesitamos encontrar la región donde se encuentra DynamoDB para conectarnos. Se recomienda mantener el valor predeterminado para otros datos. Una vez validada la clave, podrá seleccionar la tabla que contiene sus datos. Luego de conectar, debemos presionar el botón “Recolectar datos” que aparece en la esquina superior derecha. Este paso le permite recopilar datos de la tabla seleccionada, el proceso depende de la cantidad de datos contenidos en la tabla.
Una vez que se complete el proceso de recopilación de datos, vaya a "Formularios", donde puede encontrar el formulario que necesita y los datos que contiene.Configuración de Graphan con BigQuery
Usamos BigQuery para realizar consultas de Grafana a Panoply, lo que nos permite extraer datos de Panoply a Grafana, donde se pueden almacenar y mostrar.
Credenciales de BigQuery en Panoply
Desde Panoply, debemos estar en BI Connection, donde encontramos que el controlador de conexión es Google BigQuery, pero necesitamos recuperar la clave de conexión usando BigQuery. Lo obtenemos en la última línea donde enviamos el archivo clave que crea a la dirección de correo electrónico que es utilizado para la cuenta. En la bandeja de entrada del correo electrónico, seguimos buscando un correo electrónico con una clave de conexión, descargamos el archivo y lo guardamos para su uso posterior.
La herramienta Google BigQuery se debe instalar desde Grafana, para ello vamos a la sección “Plugins”, luego buscamos BigQuery y continuamos con la instalación.
Luego procedemos a generar la fuente de datos usando BigQuery como se muestra a continuación.
Encontramos el archivo JWT de Google en el tipo de documento y copiamos el contenido del archivo previamente descargado en el campo inferior. Luego podemos ver como se ejecuta el campo de conexión. Finalmente, probamos la conexión y la guardamos.
Finalmente, se muestra el Dashboard creado en Grafana. Además, se puede ver que los datos en Grafana coinciden con los datos que hemos obtenido en DynamoDB. Empezamos la visualización de los datos por computadora.
Comments