51 UNIVERSIDAD DE COSTA RICA SISTEMA DE ESTUDIOS DE POSGRADO SISTEMA DE GESTIÓN Y MANEJO DE REUNIONES PARA UNA SALA DE REUNIÓN INTELIGENTE BASADO EN LA OCUPACIÓN REAL Y SINCRONIZADO CON EL SISTEMA MEETING ROOM BOOKING SYSTEM Trabajo final de investigación aplicada sometido a la consideración de la Comisión del Programa de Estudios de Posgrado en Computación e Informática para optar al grado y título de Maestría Profesional en Computación e Informática LUIS MIGUEL SÁNCHEZ VARGAS Ciudad Universitaria Rodrigo Facio, Costa Rica 2019 Agradecimientos A Dios por darme la sabiduría necesaria para poder llegar a cumplir con mis metas. Además, muy agradecido con todas las personas que hicieron posible el desarrollo de este documento, y en especial al grupo de investigación donde todos aportaron sus valiosas ideas. Quisiera dar las gracias a los profesores encargados del grupo como lo son Luis Guerrero, Luis Quesada, Ignacio Díaz, Gustavo López y Kryscia Ramírez, que sin sus valiosos aportes este trabajo no se hubiera podido realizar. Dedicatoria A Maribel Canales, la mujer que Dios puso en mi vida para recorrer el mundo juntos. A Melody, que desde el vientre de mi esposa me dio el impulso y la motivación que necesitaba. A mi Madre, que con esmero y dedicación me enseñó a perseverar en la vida. A mi Padre, y sus valiosos consejos. A mi hermana, que siempre ha sido un gran ejemplo a seguir para mí. Tabla de Contenidos Hoja de Aprobación ii Agradecimientos iii Dedicatoria iv Lista de Figuras vii Resumen viii Introducción 1 1.1 Descripción del Problema 2 1.2 Justificación 5 1.3 Objetivos de la Investigación 6 Metodología 8 Sistema Propuesto 11 3.1 Sistema de Reservas 12 3.1.1 Módulo Principal 13 3.1.2 Agregar Asistentes 14 3.1.3 Buscar Salas Disponibles 16 3.2 Módulo de ocupación de la sala en tiempo real 18 3.3 Sincronización con el sistema MRBS 19 3.4 Transmisión Inalámbrica 20 3.4.1 Instalación Firmware 21 3.4.2 Instalar el programa creado en Arduino en el módulo ESP8266 22 3.5 Políticas de la Sala 25 3.6 Botón de Finalización de la reunión 26 3.6.1 Configuración del botón AWS 26 3.7 Instalación del Sistema en una sala 30 Proceso de Evaluación 31 4.1 StoryBoards 31 4.2 Entorno Controlado 33 Conclusiones 37 Referencias 40 Anexos 43 Anexo 1. Artículo presentado en JOCICI 2019 44 Anexo 2. Cuestionario UEQ para la evaluación UX 50 Anexo 3. StoryBoards 52 Lista de Figuras Figura 1: Vista General del Sistema 11 Figura 2: Servicios creados en Heroku 13 Figura 3: Página principal del sistema de reservas 14 Figura 4: Agregar, Editar reuniones 15 Figura 5: Proyecto creado en la plataforma de Google Cloud 16 Figura 6: Módulo para buscar salas disponibles 17 Figura 7: Recomendación sala disponible 18 Figura 8: Interfaz de estado de ocupación en tiempo real 19 Figura 9: ESP8266 PINS 21 Figura 10: Esquema de conexiones 21 Figura 11: Configurar ESP8266 como microcontrolador 22 Figura 12:Agregar placa adicional en Arduino 23 Figura 13: Gestor de tarjetas Arduino 24 Figura 14: Seleccionar place ESP8266 en Arduino 24 Figura 15: Módulo inalámbrico Wi-Fi 25 Figura 16: Panel principal de la consola en línea de AWS 27 Figura 17: Botón creado correctamente en la consola de AWS 27 Figura 18: Política creada para el botón registrado en la consola de AWS 28 Figura 19: Certificado creado para el botón registrado en la consola de AWS 28 Figura 20: Función Lambda creada en la consola de AWS 29 Figura 21: Instalar certificados creados en el botón AWS IoT 30 Figura 22: Módulo Inalámbrico 30 Figura 23: Botón AWS IoT 30 Figura 24: Módulo de estado de ocupación en tiempo real 30 Figura 25: Escalas UEQ, Evaluación Storyboards 32 Figura 26: Nube de palabras creadas con las entradas de los participantes 33 Figura 27: Evaluación Entorno Simulado 34 Figura 28: Escalas UEQ, Evaluación Entorno Simulado 35 Figura 29: Resultados UEQ comparado con los datos del benchmark 35 Resumen Este documento propone la creación de una sala de reuniones inteligente, mediante la incorporación de un sensor infrarrojo pasivo (PIR) para la detección de movimiento, el cual reacciona ante la luz infrarroja emitida por los objetos situados en el campo de visión del sensor, como por ejemplo el calor del cuerpo humano. Además, un botón AWS IoT que funciona como un actuador que permite liberar la sala en caso de que una reunión termine antes de lo esperado, así como un módulo de ocupación en tiempo real, el cual permite conocer el estado de la sala. Estos elementos permiten que el sistema de reservaciones de reuniones logre una disponibilidad más precisa de salas de reuniones, de acuerdo con el estado de ocupación real. Los dispositivos de Internet de las cosas (IoT) se controlan mediante un módulo Wi-Fi que les permite conectarse al servicio Web REST e integrarse con el sistema de reserva de salas de reuniones llamado Meeting Room Booking System (MRBS) el cual es de código abierto. Para evaluar el sistema, se realizó una evaluación de guion gráfico (storyboard) con 47 participantes. Todos los participantes completaron los Cuestionarios de Experiencia del Usuario (UEQ), describieron el producto con tres palabras y expresaron su opinión a través de comentarios abiertos. Finalmente, 19 participantes interactuaron con el producto a través de un entorno controlado de la sala de reuniones inteligente, y evaluaron el sistema utilizando otro cuestionario. Con base en la aceptación positiva reflejada en las evaluaciones, los resultados muestran que el sistema propuesto es considerado muy atractivo y útil por los participantes. ii Capítulo 1 Introducción Las reuniones se utilizan para prácticamente cualquier tarea intelectual que requiera la coordinación o el consenso de varias personas [1]. En general, una reunión es una conversación, que está organizada formalmente [2]. Para una definición más precisa, diremos que la reunión es una actividad que tiene horas de inicio y finalización específicas, programadas en intervalos de tiempo en la agenda del usuario [2]. Las reuniones son eventos indispensables en todas las organizaciones donde las personas pueden simplemente compartir conocimientos e información, o debatir sobre decisiones importantes [3]. Sin embargo, la mayoría de las organizaciones enfrentan desafíos para usar sus salas de reuniones de manera efectiva debido a la falta de sistemas eficientes y factibles [4]. Además, las personas generalmente no pueden asistir a todas las reuniones que tienen programados en sus agendas [5], lo que provoca que en algunas ocasiones las reuniones no se realicen del todo, y esto imposibilite a los demás empleados disponer de la sala reservada, aun cuando ésta no está siendo utilizada. Los estudios estadísticos sugieren que los trabajadores de oficina gastan aproximadamente entre el 30% y el 70% de su tiempo en reuniones [6], lo que agrava el problema. El presente documento detalla un trabajo realizado en el marco del Programa de Posgrado en Computación e Informática de la Universidad de Costa Rica, con el objetivo de utilizar Inteligencia Ambiental para aliviar el problema mencionado, referente al uso deficiente de las salas de reunión, el cual es provocado, muchas veces, por no contar con información real de la ocupación de las salas. El trabajo realizado fue presentado en las IV Jornadas Costarricenses de Investigación en Computación e Informática (JOCICI 2019). La referencia completa del artículo publicado en esta conferencia es la siguiente: Sánchez, L. M., Díaz-Oreiro, I., Quesada, L., Guerrero, L. A, López, G. (2019). Smart Meeting Room Management System Based on real-Time Occupancy. IV Jornadas Costarricenses de Investigación en Computación e Informática, San José, Costa Rica, Agosto, 2019, IEEE Xplore. El artículo publicado se puede encontrar en su versión original en el Anexo 1 de este documento. 1.1 Descripción del Problema De acuerdo con Padmanabh et al. [7], la duración de una reunión no se puede decidir "exactamente" por adelantado. Incluso después de tener una agenda bien definida, las reuniones pueden terminar antes o después de la hora indicada. Esto se debe a varias razones, por ejemplo, no hubo interrupciones inesperadas y la reunión fluyó muy rápidamente. Incluso si el moderador de la reunión tiene la certeza de que la reunión va a tomar mucho menos tiempo de lo previsto, reserva la sala de conferencias durante un período de tiempo más prolongado, solo para estar seguro de tener suficiente tiempo para cubrir el tema a tratar [7]. En este contexto, Padmanabh et al. [7] reportaron los siguientes patrones a la hora agendar reuniones, que hacen que la reservación de la sala no coincida con el uso real que se le dio, siendo el tiempo de ocupación real menor al reservado: · La reunión termina antes de la hora programada. · La reunión no se produce en absoluto. · Otros recursos requeridos para la reunión pueden no estar disponibles en la sala reservada, como por ejemplo un video-beam, o una computadora, por lo que la reunión no se puede llevar a cabo y debe ser reprogramada para otro momento. En general, no hay mecanismos de retroalimentación que informen a los usuarios si una reunión realmente se llevó a cabo o no, o si terminó antes de lo previsto, y la sala de reuniones queda disponible una fracción de tiempo que podría ser utilizada por otras personas. Aunque es posible que una sala de reuniones se haya reservado con anticipación, se puede dejar sin utilizar en el caso de una cancelación de última hora. En este caso, aun si la reserva de salas se realiza mediante un sistema informático, si no existe un mecanismo para liberar la sala que no se utilizó, otro usuario no sería capaz de reservarla. La mayoría de las investigaciones existentes en el contexto de administración de salas de reuniones, se concentran en mejorar el software de programación para ayudar a los participantes a seleccionar el tiempo de reunión óptimo [8] [9] o a construir salas de reunión inteligentes donde el contenido audiovisual se grabe automáticamente para verlo en el futuro [10] [11] [12]. Sin embargo, no todos los sistemas se centran en analizar la disponibilidad real, lo que se identifica como una oportunidad de mejora de los sistemas actuales. Entonces, los sistemas de software mencionados en estas investigaciones, no pueden detectar la presencia de seres humanos en las salas de conferencias y, por tanto, no pueden decidir cuándo disponer de una sala de reunión, aun cuando ésta ya no está siendo utilizada, y además los usuarios no pueden ver el estado de la sala de conferencias en tiempo real. En los sistemas de reservación de reuniones, una sala de reunión puede ser requerida al mismo tiempo por muchas personas y solo puede ser ocupada para una reunión a la vez. Por lo tanto, es necesario comprobar la disponibilidad de dicha sala antes de hacer la reservación. Existen actualmente algunos sistemas de software (ver [13], [14], [15]) que cuentan con la funcionalidad para resolver solicitudes de reservaciones simultáneas. Además, algunos sistemas muestran la disponibilidad de las salas a través de una pantalla interactiva colocada afuera de cada salón, agregando un valor adicional para el usuario. Sin embargo, la mayoría de estos sistemas no son gratuitos, y justifican estos costos agregando funcionalidades que no son necesariamente indispensables para el usuario, como, por ejemplo, alojamiento en la nube, soporte personalizado, sistema de estadísticas y políticas de seguridad. Con el fin de construir una solución que mejore la utilización de salas de reuniones y que sea a la vez gratuito, se buscaron opciones de sistemas de reservación de código abierto, identificándose el sistema de reserva de salas de reuniones MRBS (llamado así por sus siglas en inglés: Meeting Room Booking System). De acuerdo con [16], MRBS es un sistema de código abierto que sirve para gestionar salas de reuniones. MRBS es una aplicación Web basada en el lenguaje de programación PHP, con soporte para base de datos MySQL. MRBS permite a los usuarios hacer reservaciones sobre una sala específica en un horario determinado. Las salas pueden ser ingresadas al sistema manualmente por el usuario. Además, cuenta con una visualización tipo calendario donde se puede observar la ocupación de una sala, ya sea diaria, semanal o mensual. Según [16] actualmente el sistema se encuentra en uso por muchas grandes organizaciones en todo el mundo. Actualmente hay muchas personas utilizando el software MRBS. Sin embargo, éste no posee un módulo para revisar la ocupación real de una sala y además no cuenta con formas automatizadas de liberar una sala aun cuando ésta ya no está siendo utilizada por nadie. En el presente trabajo se desea crear un sistema de reuniones inteligente, que se sincronice con el sistema de código abierto MRBS y provea la funcionalidad antes mencionada. Además, se desea conocer la disponibilidad en tiempo real de las salas de reuniones previamente registradas en el sistema. Dado lo anterior, surge la siguiente pregunta de investigación: ¿Cómo se puede mejorar la disponibilidad del uso de las salas de reunión a través de un acceso sencillo a su estado actual, utilizando sensores y actuadores? 1.2 Justificación Las Salas de Reuniones Inteligentes (Smart Meeting Rooms, o SMR por sus siglas en inglés), se pueden definir como una sala de conferencia o reunión que ofrece un entorno automatizado, utilizando el equipo disponible para el uso regular de los empleados [17]. Es decir, sirve como una plataforma que ofrece equipos y servicios destinados a simplificar el proceso de organización y ejecución de reuniones. Según Ahmed et al. [2], las salas de reuniones inteligentes son necesarias no solo para facilitar el servicio del usuario de acuerdo con los criterios de reunión y la programación fluida de todas las salas disponibles, sino también para reducir la complejidad de una reunión típica. Además, ayudan a gestionar el horario de las reuniones, y proporcionar facilidades de comunicación con los miembros de la reunión [2]. Internet de las cosas (IoT por sus siglas en inglés) es una red en crecimiento de objetos cotidianos, que va desde máquinas industriales hasta bienes de consumo, los cuales pueden compartir información y completar tareas mientras las personas están ocupadas realizando otras actividades [17]. De acuerdo con Saravanan y Das [17], una sala de reunión inteligente puede estar monitoreada por varios sensores para recolectar información en tiempo real, como por ejemplo la temperatura, humedad, y movimientos. En este trabajo se desarrolló un sistema de gestión y manejo de reuniones para una sala de reunión inteligente basado en la ocupación real y sincronizado con el software MRBS, integrando sensores de movimiento y un botón de liberación, a una sala de reunión convencional para convertirla en una sala de reunión inteligente. 1.3 Objetivos de la Investigación En esta sección se presentan tanto el objetivo general como los objetivos específicos de la investigación. Objetivos General Crear un sistema de gestión de reservaciones para una sala de reunión inteligente que incorpore elementos que informen de la ocupación real de la sala.  Objetivos Específicos 1. Caracterizar las salas de reuniones inteligentes existentes. 2. Crear un sistema de reserva digital que se integre con el sistema de manejo de reuniones MRBS. 3. Integrar sensores a una sala de reuniones tradicional para convertirla en una sala de reunión inteligente. 4. Evaluar la experiencia de usuario del uso del sistema de gestión de reservaciones creado. En el siguiente capítulo, se describe la metodología utilizada para diseñar, desarrollar y evaluar el sistema de reunión de salas inteligentes descrito en este documento. Capítulo 2 Metodología Seguidamente, se explican las tareas realizadas asociadas a los objetivos específicos. 1. Caracterizar las salas de reuniones inteligentes Se realizó una revisión de literatura, para poder caracterizar las salas de reuniones inteligentes existentes, además de tener un contexto más amplio de lo que significa una sala de reunión inteligente. 2. Construcción del sistema de reserva digital Se creó un sistema para el manejo de reserva digital utilizando la metodología de desarrollo ágil Scrum [18], que nos permitió tener iteraciones de desarrollo cortas, que se adaptaron a los requerimientos según la prioridad del momento. Las funciones principales desarrolladas fueron agendar, editar, eliminar y buscar reuniones, además se implementó un módulo de calendario donde se puede dar seguimiento a las reuniones previamente agendadas. También se desarrolló un módulo que permite mostrar, en tiempo real, la disponibilidad de cada sala, donde los usuarios pueden ver el estado actual de una sala de reunión sin necesidad de utilizar un sistema externo. Este módulo se implementó colocando una pantalla afuera de cada sala. Además, el sistema desarrollado está basado en tecnologías web y cuenta con una interfaz que se adapta a dispositivos móviles. Con respecto a la integración con el sistema de código abierto MRBS, se creó un micro-servicio [19], que es el encargado de establecer la comunicación entre ambos sistemas. Para poder lograr este objetivo se desarrolló una API Web [20] que se encarga de consumir los datos que usa el sistema MRBS. 3. Integración de los sensores Se construyó un dispositivo para detectar movimiento utilizando los siguientes componentes: · PIR Motion Sensor: Sensor de movimiento que se activa con la presencia de un cuerpo cálido a una distancia de 2.7 metros [21]. · Arduino One: Placa de microcontrolador de código abierto basada en el microcontrolador Microchip ATmega328P y desarrollada por Arduino [22]. Se utilizó para crear el código necesario para obtener comunicación entre el sensor y el Web API. · ESP8266: Módulo Wi-Fi serial que se integra con la placa Arduino, para tener acceso a internet y hacer los llamados a los servicios publicados mediante el Web API. · Breadboard: placa para prototipos para conectar los circuitos entre el Arduino One y el módulo Wi-Fi sin necesidad de soldaduras. · Jumper Wire: cables para hacer las conexiones entre el Arduino, el módulo Wi-Fi y los sensores PIR. Una vez construido el sensor se realizó la integración con el sistema de reserva de salas inteligentes desarrollado, el cual se comunica con el Web API por medio de la red wifi. Además, se colocó un botón AWS IoT [23] dentro de cada sala, para que la misma se pueda liberar si la reunión termina antes del tiempo reservado. 4. Evaluación de la experiencia de usuario Para evaluar la idea del sistema, se utilizó la técnica de guiones grafios (Storyboards), en los cuales se definieron diferentes escenarios de uso del sistema basados en la disponibilidad de la sala y utilizando los sensores propuesto, los cuales fueron ejecutados por 47 participantes, a los cuales se les aplicó el cuestionario estandarizado de experiencia de usuario UEQ (adjunto en el Anexo 2), se recolectó información para establecer si el sistema era viable o no, además se definió el diseño y arquitectura del sistema. Finalmente, se realizó una evaluación de experiencia de usuario sobre el sistema desarrollado en un entorno controlado, utilizando el cuestionario UEQ y basado en los mismos escenarios propuestos en los guiones gráficos, pero está vez en un entorno controlado. A continuación, se describe detalladamente el proceso de diseño, desarrollo e implementación del sistema inteligente de reservas propuesto en este documento, así como la descripción de cada uno de los sensores integrados al sistema. Capítulo 3 Sistema Propuesto En la Figura 1 se muestra una vista general del sistema propuesto para administrar las salas de reuniones inteligentes. Figura 1: Vista General del Sistema Como se puede observar en la Figura 1, el sistema está compuesto por el Sistema de Reservas, el cual es el encargado de administrar y manejar las reuniones; el Módulo de ocupación de la sala en tiempo real, el cual permite a los usuarios ver en tiempo real la disponibilidad de una sala de reunión; el MRBS, o sistema de código abierto con el cual se desea sincronizar el sistema; el MySQL, o gestor de base de datos utilizado por ambos sistemas; el Web Api, que es el encargado de gestionar el manejo de datos de sistema, así como integrar el sistema principal con dispositivos IoT y el MRBS. Además, en la sala de reuniones se integraron los siguientes sensores y actuadores: un Sensor PIR, que es el encargado de detectar movimiento en la sala de reuniones y se encarga de enviar las señales al módulo inalámbrico Wi-Fi, que a su vez envía los datos en tiempo real al Web Api desarrollado; un botón AWS IoT, que es el encargado de liberar la sala cuando una reunión terminó antes de lo esperado y así esta pueda ser utilizada por otra persona. A continuación, se explica de manera detallada todas las partes que conforman el sistema. 3.1 Sistema de Reservas El sistema implementado fue desarrollado utilizando las versiones de Angular 6 para el frontend (parte del sitio Web que interactúa con los usuarios, que está del lado del cliente) y .Net Core 2.0 para el backend (parte que se conecta con la base de datos y el servidor que utiliza el sitio Web). El sistema fue instalado en la plataforma en línea llamada Heroku, la cual permite, de manera gratuita, instalar sistema de reservas inteligentes en la nube. En la Figura 2 se puede observar los servicios creados en Heroku, uno de tipo contenedor para el servicio Web API (este servicio fue instalado utilizando la herramienta Docker y la consola de Heroku), y una aplicación tipo Node.js para instalar el sistema de reservas inteligente. Figura 2: Servicios creados en Heroku Para poder asegurar el Web API, ya que al estar en la nube otras personas pueden tener acceso a la misma, se utilizó una autenticación por token, dándole a cada usuario una autorización única para poder realizar las consultas. Para controlar las versiones de código y hacer más fácil la implementación de la solución, se optó por utilizar el sistema de manejo de versiones Git, el cual se sincronizó con el sistema de almacenamiento en línea Google Drive y el repositorio en línea de Heroku Git. 3.1.1 Módulo Principal Una vez publicado el sistema de reservas inteligente en Heroku, los usuarios pueden iniciar sesión en el sistema utilizando su usuario y contraseña. Posteriormente a su inicio de sesión, el usuario es re-direccionado a la página principal del sistema como lo muestra la Figura 3. Figura 3: Página principal del sistema de reservas En este módulo del sistema, los usuarios pueden manejar sus reservaciones y tener diferentes vistas de su calendario, ya sea por mes, semana o día, como lo muestra la Figura 3. 3.1.2 Agregar Asistentes Para ingresar o editar reservas, se agregó la opción de asistentes, como lo muestra la Figura 4. Figura 4: Agregar, Editar reuniones Para poder implementar la opción de Asistentes en los formularios de agregar-editar reservaciones de una manera automática, se optó por crear un proyecto en la plataforma Google Cloud (ver Figura 5), con el cual posteriormente se puede obtener una llave secreta, proporcionada por Google, para poder interactuar de manera remota con el API de Google Calendar. De esta manera, es posible agregar, actualizar y eliminar los eventos en los calendarios de los participantes, así como también poder manejar las notificaciones del sistema. Figura 5: Proyecto creado en la plataforma de Google Cloud 3.1.3 Buscar Salas Disponibles Uno de los módulos más importantes del sistema de reservas es el que permite buscar salas disponibles. Desde este módulo los usuarios pueden buscar una sala utilizando filtros de fecha y hora deseadas, además de la capacidad de la sala. En la Figura 6 se puede observar cómo el sistema le indica al usuario las salas que están disponibles según el criterio de su búsqueda, pudiendo reservar la sala a la hora deseada con solo hacer clic en el botón para reservar. Figura 6: Módulo para buscar salas disponibles Además, si todas las salas están ocupadas en la hora que se buscó, este módulo le recomienda al usuario una sala disponible, pero en diferente horario, con lo cual el usuario podrá tener un panorama más amplio y así tomar decisiones basadas en las sugerencias del sistema, tal como lo muestra la Figura 7. Figura 7: Recomendación sala disponible 3.2 Módulo de ocupación de la sala en tiempo real Para poder tener acceso al estado real de una sala de manera sencilla, se desarrolló una interfaz de ocupación de tiempo real de la sala. Como lo muestra la Figura 8, este módulo permite observar el estado real de la sala, así como el tiempo que está reservada. Además, el usuario tiene acceso a ver todas las reuniones que están programadas en un día en la sala, así como tener información básica de las reuniones programadas, como por ejemplo: nombre de la sala, tiempo de duración de la reunión y el usuario que reservó la sala. Figura 8: Interfaz de estado de ocupación en tiempo real 3.3 Sincronización con el sistema MRBS El sistema propuesto tiene la capacidad de funcionar de manera independiente, así como trabajar junto con el sistema de reservas de salas de reuniones MRBS. MRBS es un sistema de código abierto que se utiliza para administrar salas de reuniones. MRBS, es implementado a través de una aplicación Web en PHP con soporte para la base de datos MySQL. MRBS permite a los usuarios hacer reservas de una sala de reunión específica en un momento específico, pero no posee ningún módulo que permita a los usuarios saber cuándo una sala está o no disponible. Según [16], el sistema está siendo utilizado actualmente por un conjunto importante de organizaciones grandes en todo el mundo, lo que nos impulsó a utilizarlo para incorporar la integración con sensores y módulos propuestos en este documento. Esta integración de sensores se produce en el servicio Web API desarrollado. Dado que MRBS es de código abierto y no proporciona una API pública, se prefirió usar la misma estructura de base de datos para compilar el sistema. Esto significa que, cuando ambos sistemas están sincronizados, utilizarán la misma base de datos, es decir, el mismo esquema de datos en MySQL. Seguidamente se explican las diferentes funcionalidades implementadas, necesarias para la integración de los componentes IoT. 3.4 Transmisión Inalámbrica El ESP8266 ESP-01 es un módulo Wi-Fi que permite el acceso de microcontroladores a una red Wi-Fi. Este módulo es autónomo y también puede programarse para actuar como un microcontrolador. Tiene dos pines GPIO: GPIO0 y GPIO2 (ver Figura 9) que permite tener algunos dispositivos conectados (en este caso, un sensor de movimiento PIR está conectado al pin GPIO2 como lo muestra la Figura 10). Cuando el sensor de movimiento PIR detecta objetos con una temperatura por encima del cero absoluto, es decir luz infrarroja (la presencia humana emite calor y es detectado por el sensor), envía entradas de alto voltaje al módulo; de lo contrario será una entrada de bajo voltaje. Este comportamiento lo realiza cada segundo, por ejemplo, si en el transcurso de 10 segundos se detecta luz infrarroja por parte del sensor, el módulo procederá a enviar señales altas por todo este tiempo, y si no detecta ningún objeto emitiendo calor entonces enviará señales bajas indefinidamente hasta que vuelva a detectar luz infrarroja. El módulo ESP se programó a través de Arduino UNO [20], utilizando el IDE de Arduino. Arduino tiene su propio lenguaje de programación, que esencialmente es C ++ con algunos métodos y funciones adicionales. Figura 9: ESP8266 PINS Figura 10: Esquema de conexiones 3.4.1 Instalación Firmware Para poder comunicarse con el módulo inalámbrico, primero se debe instalar un firmware [24] al módulo inalámbrico. Este firmware permite ejecutar comandos AT sobre el módulo y así configurarlo de una manera más amigable. Para instalar el firmware, primeramente, se debe conectar el pin GPIO0 al GND de Arduino como lo muestra la Figura 10. Posteriormente, se puede instalar el firmware utilizando la herramienta esptool [25], ejecutando los siguientes comandos como administrador en la terminal de un computador: · esptool.py --port erase_flash · esptool.py -b 115200 --port write_flash -fm dout 0x00000 Una vez instalado el firmware, se procede a desconectar el pin GPIO0 de la tarjeta Arduino. Seguidamente, se debe abrir el monitor serie para comunicarse con el módulo, y así poder ejecutar el comando AT+CWMODE=3 que significa que el módulo va a actuar como microcontrolador y además como receptor (ver Figura 11). Figura 11: Configurar ESP8266 como microcontrolador 3.4.2 Instalar el programa creado en Arduino en el módulo ESP8266 Para instalar el programa, se deben realizar algunas configuraciones adicionales en el IDE de Arduino. Primeramente, se debe ingresar el siguiente URL http://arduino.esp8266.com/package_esp8266com_index.json en las preferencias de Arduino, como lo muestra la Figura 12. Figura 12: Agregar placa adicional en Arduino Seguidamente, se debe abrir el gestor de placas y proceder a buscar la tarjeta ESP8266, dando clic en la opción de instalar (ver Figura 13). Figura 13: Gestor de tarjetas Arduino Finalmente, se debe seleccionar la tarjeta ESP8266 (ver Figura 14) para comenzar a programar en ella. Figura 14: Seleccionar place ESP8266 en Arduino Una vez realizado los pasos anteriores, se podrá cargar el código directamente en el módulo Wi-Fi. Para hacer esto, es necesario habilitar su modo de grabación, conectando el pin GPIO0 al GND de la placa Arduino nuevamente. Después de cargar el código en el módulo Wi-Fi, se retiró la placa Arduino y se reemplazó por un pequeño módulo de fuente de alimentación de 3.3V, como se muestra en la Figura 15. Figura 15: Módulo inalámbrico Wi-Fi 3.5 Políticas de la Sala Se definieron dos reglas relacionadas con el sensor de movimiento para determinar si una reunión realmente comienza. Estas reglas son: 1. Si al inicio del horario de la reunión programada no se detecta movimiento en la sala durante 15 minutos, el sistema liberará la sala y enviará una notificación a los asistentes. Este tiempo inicial es configurable y puede ser cambiado por los usuarios, lo que significa que podría cambiar según las necesidades del usuario. 2. Si no se cumple la primera regla y el sistema continúa detectando movimiento después de 15 minutos, la reunión se considera consolidada. Después de esto, la habitación solo podría ser liberada por el botón de finalización colocado dentro de la sala, esto se explica en la subsección 3.6. Basado en estas dos reglas, el sistema puede determinar si los participantes se presentaron o no a la reunión. Si no se presentaron, la sala se libera en el sistema para que otras personas puedan usarla. 3.6 Botón de Finalización de la reunión Este es un botón de Wi-Fi programable que permite a los participantes poner la sala disponible en caso de que una reunión termine antes de lo programado. 3.6.1 Configuración del botón AWS Para configurar el botón de AWS se debe primero tener una cuenta en la consola en línea de Amazon Web Services (AWS por sus siglas en ingles). Una vez creada la cuenta se debe registrar una cosa (a thing en inglés) como lo muestra la Figura 16 y la Figura 17. Figura 16: Panel principal de la consola en línea de AWS Figura 17: Botón creado correctamente en la consola de AWS Una vez registrado el botón de AWS se debe crear una política de seguridad, seguido de un certificado generado por AWS como lo muestran la Figura 18, y la Figura 19. respectivamente. Una vez creadas estas políticas se deben agregar al botón que registramos anteriormente. Figura 18: Política creada para el botón registrado en la consola de AWS Figura 19: Certificado creado para el botón registrado en la consola de AWS Para poder decirle al botón qué acciones debe tomar una vez que alguien le dio clic, se debe crear una función lambda, como lo muestra la Figura 20. Básicamente, lo que hace esta función es tomar un token válido del servicio Web API, para posteriormente liberar la sala, así otra persona podrá usarla. Figura 20: Función Lambda creada en la consola de AWS Finalmente, para agregar todas estas configuraciones al botón, se debe dar clic al botón AWS y mantenerlo apretado por unos 5 segundos, hasta empezar a ver una luz roja parpadeando. Luego, veremos una red en el computador con el nombre de Button ConfigureMe–XXXX (identificador del botón) y procedemos a conectarnos a ella. Usamos los últimos 8 dígitos del número de serie del botón como contraseña de la red. Luego, se debe ingresar la dirección 192.168.0.1 en el navegador (ver Figura 21) y completar la información solicitada, esto incluye los certificados creados en la cuenta de Amazon. Así, Amazon verificará que realmente el botón configurado es el que quiere comunicarse con la función lambda creada anteriormente. Figura 21: Instalar certificados creados en el botón AWS IoT 3.7 Instalación del Sistema en una sala La instalación del sistema en una habitación consiste en colocar el módulo inalámbrico en el techo de la habitación (ver Figura 22), colocar el botón AWS IoT a la salida de la habitación (ver Figura 23) y finalmente configurar el módulo de estado de ocupación en tiempo real a la entrada de la sala (ver Figura 24). Figura 22: Módulo Inalámbrico Figura 23: Botón AWS IoT Figura 24: Módulo de estado de ocupación en tiempo real Capítulo 4 Proceso de Evaluación A continuación, se resumen los resultados de las evaluaciones realizadas al sistema descrito en el capítulo anterior. 4.1 StoryBoards Los storyboards adjuntos en el Anexo 3 fueron presentados a 3 diferentes grupos de la Escuela de Computación e Informática de la Universidad de Costa Rica. Al final de cada presentación, se les solicitó a los participantes que llenaran una evaluación de anticipación de la experiencia de usuario, es decir, cómo creen que sería la sala de reuniones inteligente una vez que estuviera implementada. Adicionalmente, se les solicitó que describieran el producto en tres palabras y agregaran comentarios abiertos (adjunto en el Anexo 2). Un total de 47 participantes completaron de manera satisfactoria la evaluación, de los cuales un 80% eran hombres y un 20% mujeres, con un promedio de edad de 21 años. El cuestionario estandarizado de experiencia de usuario UEQ [26] proporciona una herramienta de análisis de datos de Excel para capturar la experiencia de los usuarios, después de que estos han interactuado con el producto o sistema. Esta consiste en una escala de seis dimensiones. Estas dimensiones son: Atracción: ¿Les gusta o no el producto a los usuarios? Transparencia: ¿Es fácil familiarizarse con el producto y aprender a usarlo? Eficiencia: ¿Pueden los usuarios resolver sus tareas sin un esfuerzo innecesario? Controlabilidad: ¿El usuario se siente en control de la interacción? Estimulación: ¿Es emocionante y motivador usar el producto? Novedad: ¿Es el producto innovador y creativo? UEQ considera que los puntajes que comienzan en 0.8 son positivos y los que comienzan en −0.8 son negativos. La media para cada escala (la escala varía de −3 horriblemente mala a +3 extremadamente bueno) se puede apreciar en la Figura 25 que se muestra a continuación. Figura 25: Escalas UEQ, Evaluación Storyboards De acuerdo con estos resultados, los participantes estaban bastante satisfechos con lo Atractivo, Transparente y Eficiente del producto, además sentían Confianza con el sistema. Por otra parte, los participantes estaban un poco menos satisfechos con las dimensiones de Estimulación y Novedad, ya que, como se aprecia en los resultados, se ubicaron en el rango de -0.8 a 0.8. Además, se recibieron muchos comentarios, por ejemplo: “Es una buena idea; Puede ser muy útil” o “Puede ser una herramienta poderosa en las empresas”. Por otra parte, las palabras con las que los participantes más describían el producto fueron que “era muy útil”, como lo muestra la Figura 26. Figura 26: Nube de palabras creadas con las entradas de los participantes 4.2 Entorno Controlado Todos los comentarios recolectados en la primera evaluación se consideraron mientras se desarrollaba el sistema. Una vez que el sistema se implementó, se decidió ejecutar el mismo script descrito en la evaluación de los storyboards, pero esta vez en una sala de reuniones real, que incluyó los módulos de detección de movimiento, de estado de ocupación de tiempo real, así como el botón de finalización, como se muestran en las Figuras 22, 23 y 24, permitiendo a los participantes interactuar con el producto. En esta evaluación participaron 19 personas, que fueron organizadas en grupos de cuatro personas por grupo. Antes de que cada grupo comenzara a interactuar con el sistema, todas sus preguntas y dudas con respecto a la utilización del sistema fueron respondidas, y luego se les pidió que interactuaran con el producto y ejecutaran acciones equivalentes a las que fueron explicadas para los storyboards (ver Figura 27). Figura 27: Evaluación del entorno controlado Al final de cada iteración, se les pidió a los participantes que completaran el cuestionario UEQ, pero esta vez evaluando la experiencia en el ambiente real y no la anticipación de la experiencia, como lo hicieron los participantes para la evaluación de los storyboards. La Figura 28 muestra los resultados de las seis dimensiones de UEQ, donde se puede observar que las evaluaciones estuvieron entre los 1.19 y 2.25. De acuerdo con UEQ los resultados con puntuaciones mayores a 0.8 se pueden considerar como positivos. Por lo tanto, podemos concluir que los participantes estaban extremadamente satisfechos, en especial con la dimensión de Atracción. Figura 28: Escalas UEQ, Evaluación Entorno Controlado Figura 29: Resultados UEQ comparado con los datos del benchmark El cuestionario UEQ también proporciona un conjunto de datos de referencia que contiene datos recopilados de 18,483 personas de 401 estudios de diferentes productos. El punto de referencia (benchmark en inglés) muestra un análisis comparativo de cuán bueno es el producto evaluado, en comparación con los productos en el conjunto de datos de referencia. La Figura 29 presenta los resultados de la evaluación de experiencia de usuario de la sala de reservas inteligente presentada en este trabajo, en comparación con los de 401 estudios. Como puede verse, el sistema de sala de reservas inteligente propuesto en este trabajo obtuvo una puntuación entre buena y excelente, obteniendo el 10% de mejores resultados en las dimensiones de atractivo, visibilidad, eficiencia y confiabilidad. A continuación, se describe las conclusiones y trabajo futuro del sistema de reservas inteligente desarrollado. Capítulo 5 Conclusiones La revisión de literatura permitió distinguir cuándo una sala de reuniones puede considerarse inteligente, así como las conocer las diferentes implementaciones que han realizado otros investigadores o desarrollado otras empresas. Esto proporcionó una visión más amplia de las diferentes soluciones ya presentadas en la literatura, las cuales no solucionaban del todo la pregunta de investigación presentada en la sección 1.1 de este documento. Además, conocer qué se había desarrollado en relación con la disponibilidad de las salas de reuniones, nos permitió crear una mejor propuesta que las encontradas en la literatura. Teniendo presente las soluciones disponibles, se construyó un sistema de gestión y manejo de reuniones para una sala de reunión inteligente, que mejora la experiencia de usuario con respecto del MRBS. El sistema desarrollado puede convivir con el MRBS, o funcionar de forma independiente. Integrar el sistema con la herramienta de código abierto MRBS permite a las personas que utilizan este software, la posibilidad de utilizar los sensores y actuadores descritos en este documento. Asimismo, el desarrollo de un servicio Web permite realizar modificaciones y mejoras en el comportamiento de los dispositivos IoT de forma flexible, y brinda la oportunidad de crear nuevos servicios. Se integró un sensor de movimiento, un botón de liberación (actuador) y un módulo de ocupación en tiempo real. Estos elementos permiten mejorar la disponibilidad de una sala de reunión. En cuanto a la evaluación de experiencia de usuario, los resultados de los cuestionarios UEQ muestran una aceptación positiva por parte de los usuarios, tanto para los participantes que usaron los guiones gráficos (storyboards) como para los que hicieron la prueba en el entorno de reuniones en el que se instalaron los módulos de detección de movimiento, de estado de ocupación en tiempo real y el botón de finalización. Como era de esperar, las evaluaciones del entorno real mostraron resultados superiores a los de los guiones gráficos (storyboards), específicamente en las dimensiones Estimulación y Novedad. Esto se debe a las diferencias entre ambos contextos, donde la interacción con los sensores y dispositivos reales presenta la interacción con el sistema de una manera mucho más completa e interesante. Además, si comparamos los resultados obtenidos en la evaluación de la sala de reuniones propuesta con los puntos de referencia generales proporcionados por UEQ (benchmarks), el sistema muestra una experiencia de usuario satisfactoria que nos hace creer que la implementación del producto propuesto en el mundo real sería altamente exitosa. En lo que respecta al trabajo futuro, hay otros escenarios que no fueron cubiertos con el sistema propuesto, como por ejemplo; que pasa si la reunión requirió más tiempo del necesario, o que pasa si hay un receso durante la reunión. Sin embargo, hemos recopilado algunos aportes importantes de los usuarios, lo que permitiría integrar estas características más adelante en el sistema. Asimismo, si el sistema almacena la información generada por el sensor de movimiento (PIR), esta información podría ser procesada por algoritmos de aprendizaje automático y por ejemplo estimar la ocupación de las salas de reunión en tiempo real, así como saber el uso que se les está dando a las salas. También podemos agregar sensores de otro tipo, por ejemplo, de temperatura y humedad, para así combinar la información proporcionada por estos sensores con la de detección de movimiento. De esta manera, si un sensor detecta movimientos dentro de la sala, lo que significa que hay una reunión en curso, el sistema podría ejecutar operaciones en el microcontrolador para realizar modificaciones al ambiente de la sala, como regular el aire acondicionado para que se adapte a la presencia de personas. Por otro lado, si el sistema detecta que la habitación está vacía, podría apagar la luz y los aires acondicionados y ahorrar consumo de energía. Referencias 1. Stefik, M., Foster, G., Bobrow, D. G., Kahn, K., Lanning, S., & Suchman, L. (1987). Beyond the chalkboard: Computer support for collaboration and problem solving in meetings. Communications of the ACM, 30(1), 32-47. doi:10.1145/7885.7887 2. Ahmed, S., Sharmin, M., & Ahamed, S. (2005.). A Smart Meeting Room with Pervasive Computing Technologies. Sixth International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing and First ACIS International Workshop on Self-Assembling Wireless Networks (SNPD/SAWN05). doi:10.1109/snpd-sawn.2005.8 3. Tran, L. D., Stojcevski, A., Pham, T. C., Souza-Daw, T. D., Nguyen, N. T., Nguyen, V. Q., & Nguyen, C. M. (2016). A smart meeting room scheduling and management system with utilization control and ad-hoc support based on real-time occupancy detection. 2016 IEEE Sixth International Conference on Communications and Electronics (ICCE). doi:10.1109/cce.2016.7562634 4. Patel, J., & Panchal, G. (2017). An IoT-Based Portable Smart Meeting Space with Real-Time Room Occupancy. Intelligent Communication and Computational Technologies, 2017, pp 35-42 5. Z. Yu and Y. Nakamura. (2010). “Smart Meeting Systems, A Survey of State-of-the-art and Open Issues”, ACM Computer survey, vol. 42, no. 2, 2010, pp. 8:1–8:20. 6. Panko. R.R. Office work. Off. Techml. People 2 (1964). 205-236. 7. Padmanabh, K., Malikarjuna, A., Sen, S., Katru, S. P., Kumar, A., C, S. P., Paul, S. (2009). ISense. Proceedings of the First ACM Workshop on Embedded Sensing Systems for Energy-Efficiency in Buildings - BuildSys 09. doi:10.1145/1810279.1810288 8. Mussawar, O., and Al-Wahedi, K. (2013). "Meeting scheduling using agent based modeling and multiagent decision making," in Innovative Computing Technology (INTECH). Third International Conference on, 2013, pp. 252-257. 9. Mishima, T., Takahashi, K., Kawamura, T., and Sugahara, K. (2013). "Meeting Scheduling System using Unpleasant Notification," in IT Convergence and Security (ICITCS). International Conference on, 2013, pp. 1- 4. 10. Yu, Z., and Nakamura, Y. (2010). "Smart meeting systems: A survey of state-ofthe-art and open issues," ACM Computing Surveys (CSUR), vol. 42, p. 8, 2010. 11. Ronzhin, A., Ronzhin, A., and Budkov, V. (2011). "Audiovisual speaker localization in medium smart meeting room," in Information, Communications and Signal Processing (ICICS). (2011). 8th International Conference on, 2011, pp. 1-5. 12. Chen, H., Perich, F., Chakraborty, D., Finin, T., and Joshi, A. (2004) "Intelligent agents meet semantic web in a smart meeting room," in Autonomous Agents and Multiagent Systems. AAMAS 2004. Proceedings of the Third International Joint Conference on, 2004, pp. 854-861. 13. GoGet (2017). Room Display 6. Disponible en: https://www.gogetcorp.com/ 14. Sitrix Tecnology Solutions. (2017). FISHBOWL MEETINGS. Disponible en: https://fishbowlmeetings.com/ 15. Joan. (2017). Joan Meetings. Disponible en: https://getjoan.com/ 16. Meeting Room Booking System (2012). Meeting Room Booking System. Disponible en: https://mrbs.sourceforge.io/ 17. Saravanan, M., & Das, A. (2017). Smart real-time meeting room. 2017 IEEE Region 10 Symposium (TENSYMP). doi:10.1109/tenconspring.2017.8070069 18. Ágiles, P. (2014). Qué es SCRUM. Disponible en: www.proyectosagiles.org/que-es-scrum ANEXOS. 19. Fowler, M. (2014). Microservices. Disponible en: http://martinfowler.com/articles/ microservices.html 20. Merino, M. (2014). ¿Qué es una API y para qué sirve? Disponible en: http://www.ticbeat.com/tecnologias/que-es-una-api-para-que-sirve/ 21. Instructables. (2017). PIR Motion Sensor Tutorial. Disponible en: https://www.instructables.com/id/PIR-Motion-Sensor-Tutorial/ 22. Arduino UNO R3 ~ Arduino.cl - Plataforma Open Source para el desarrollo de prototipos electrónicos. (2017). Disponible en: https://arduino.cl/arduino-uno/ 23. AWS IoT Button Overview - Cloud Programmable Dash Button. (n.d.). Disponible en: https://aws.amazon.com/iotbutton/ 24. ESP8266 Firmaware (n.d). Disponible en: https://github.com/espressif/ESP8266_NONOS_SDK 25. Esptool (n.d). Disponible en: https://github.com/espressif/esptool 26. B. Laugwitz., T. Held., & M. Schrepp. (2008). Construction and Evaluation of a User Experience Questionnaire. Presented at the HCI and Usability for Education and Work, Berlin, Heidelberg, 2008, pp. 63–76. Anexos Anexo 1. Artículo presentado en JOCICI 2019 Anexo 2. Cuestionario UEQ para la evaluación UX Anexo 3. StoryBoards 0.22034854868217243 0.27509949632472552 0.22346122615695771 0.21692638787932189 0.27172245350610486 0.30355157695936724 0.22034854868217243 0.27509949632472552 0.22346122615695771 0.21692638787932189 0.27172245350610486 0.30355157695936724 Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 1.4184397163120572 1.8936170212765957 1.2712765957446808 1.1223404255319149 0.45921985815602834 0.62765957446808507 0.27008238759826025 0.32290647292757962 0.34553267832982965 0.29852925553129628 0.34748756687111165 0.48795077493724581 0.27008238759826025 0.32290647292757962 0.34553267832982965 0.29852925553129628 0.34748756687111165 0.48795077493724581 Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 1.9824561403508774 2.2105263157894739 1.7850877192982455 1.763157894736842 1.25 1.1973684210526316 Lower Border Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad -1 -1 -1 -1 -1 -1 Malo Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 0.7 0.71 0.56999999999999995 0.77 0.5 0.25 Debajo del Promedio Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 0.47 0.54 0.48 0.36 0.49 0.52 Encima del Promedio Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 0.39 0.48 0.43 0.33 0.32 0.35 Bueno Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 0.27 0.27 0.32 0.23 0.24 0.49 Excelente Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 0.67 0.5 0.7 0.81 0.95 0.89 Media Atracción Transparencia Eficiencia Controlabilidad Estimulación Novedad 1.9824561403508774 2.2105263157894739 1.7850877192982455 1.763157894736842 1.25 1.1973684210526316 image2.jpeg image3.png image4.png image5.png image6.png image7.png image8.png image9.png image10.png image11.png image12.png image13.png image14.png image15.png image16.png image17.png image18.png image19.png image20.png image21.png image22.png image23.png image24.png image25.png image26.png image27.png image28.jpeg image29.jpeg image30.jpeg image31.jpeg image32.jpeg image33.jpeg image34.jpeg image35.jpeg image36.jpeg image37.jpeg image38.jpeg image39.jpeg image40.jpeg image41.jpeg image42.jpeg image43.jpeg image44.jpeg image45.jpeg image46.jpeg image47.jpeg image48.jpeg image49.jpeg image50.jpeg image51.jpeg image52.jpeg image1.jpeg