ELO 329 Programación Orientada a Objetos

REnergy App” Aplicación Android

 

Sebastían Neira

Benjamín Panatt

 

Descripción del problema

REnergy App es una aplicación para dispositivos Android que forma parte del hipotético ecosistema de productos REnergy, su propósito es servir como interfaz de usuario para el control de 4 módulos REnergy mediante Bluetooth, estos módulos son dispositivos embebidos que reciben comandos mediante Bluetooth para encender o apagar luces led. La aplicación provee los medios para conectarse estos módulos y utilizarlos con fines deportivos, terapéuticos o lúdicos, mediante rutinas preprogramadas o control manual.

 

Análisis del problema

El sistema consiste de la aplicación corriendo en un dispositivo Android, el cual interactúa con el usuario a través de la pantalla y con los módulos REnergy mediante Bluetooth conectándose a un modulo maestro que se conecta a los demás modulos, las interacciones del usuario incluyen el ingreso a su cuenta, conexión de módulos, selección de control manual, operación manual de los módulos, selección de rutinas preprogramadas. El sistema también interactúa con los módulos, estableciendo conexión con el módulo maestro y enviándole a este mensajes que le indican a los módulos que hacer.

 

La implementación de los módulos REnergy si bien parte del trabajo a realizar no se considera como parte del problema a solucionar, que es la aplicación.

 

Definición de Requerimientos

Caso de uso A:

Nombre: Login usuario.

Propósito: el usuario desea ingresar a la aplicación.

Actor: Usuario.

Pre-Condición: existe un nombre de usuario y contraseña.

Evento: el usuario ingresa sus credenciales.

Tipo: manual.

Curso normal de eventos:

Actor

Sistema

1) El usuario ingresa su nombre de usuario y contraseña

 

2) El usuario presiona el botón “ingresar”

3) El sistema verifica las credenciales y provee acceso a la aplicación

 

Variante 1, datos erróneos o incompletos:

1A1: El usuario ingresa nombre y/o contraseña incorrecto(s) o omite alguno de los campos.

3A3: El sistema no da acceso a la aplicación y notifica al usuario del ingreso de credenciales incorrectas.

 

Caso de uso B:

Nombre: Conexión modulo.

Propósito: Establecer una conexión con un módulo REnergy.

Actor: Usuario.

Pre-Condición: Usuario ha ingresado a su cuenta, existe y está encendido el módulo REnergy, Bluetooth activado.

Evento: El usuario selecciona la opción “conectar”.

Tipo: Manual.

Curso normal de eventos:

Actor

Sistema

1) Usuario presiona el botón “conectar”

2) El sistema muestra una lista de dispositivos Bluetooth detectados

3) Usuario selecciona un dispositivo Bluetooth que corresponde a un modulo REnergy

4) El sistema establece la conexión

 

5) El sistema notifica de la conexión exitosa

 

Caso de uso C:

Nombre: Envíar comando.

Propósito: Envíar una orden desde la aplicación a el módulo Renergy maestro, a fin de que se realice una acción.

Actor: Módulo REnergy.

Pre-Condición: Conexión establecida entre el módulo y el sistema, el usuario a ingresado un comando en modo manual o a activado una rutina.

Evento: El sistema envía un comando por Bluetooth a módulo REnergy.

Tipo: manual/Automático.

Curso normal de eventos:

Actor

Sistema

1) El sistema envía por Bluetooth un mensaje al módulo maestro

2) El módulo maestro recibe el mensaje y de acuerdo a su contenido cambia su estado o comanda a un módulo subordinado a cambiar su estado.

 

Diseño

La aplicación se compone de varias pantallas que extienden de una clase común de Widget las cuales se van componiendo y anidando a través de relaciones de agregación, dándole la estructura a la aplicación.

Diagrama UML ventanas:

Diagrama

Descripción generada automáticamente

Diagrama de secuencia para utilizar rutina preprogramada 1 comenzando desde la aplicación recién abierta, seguido por regreso de ventanas hasta la ventana principal y cierre de aplicación:

Diagrama

Descripción generada automáticamente

El login de usuario diseñado es un placeholder para un posible futuro login verdadero basado en cuentas reales de usuarios, en el diseño actual funciona como un nombre de usuario y contraseña hardcoded en la app (user:seba, password:123).

 

Cabe mencionar que por limitaciones de tiempo no se logro implementar toda la funcionalidad propuesta, de modo que las ventanas de rutinas preprogramadas y de manejo manual se encuentran en estructura pero no en función, se dispone sin embargo de el prototipo de estas funcionalidades en la ventana chatpage dentro de avanzado, donde se puede enviar manualmente mensajes a través de un chat a el módulo maestro directamente por bluetooth serial, lo que usamos para enviar caracteres que el módulo sabe interpretar, en ese sentido esta ventana incluso una vez se complementen las otras sirve como un modo de debugueo para el desarrollador, evitando pasar por interfaces que abstraen la comunicación de bajo nivel para el usuario final.

Implementación

Necesitamos de los medios para desarrollar una aplicación móvil para dispositivos Android, de modo que decidimos escribir la aplicación en el lenguaje de programación Dart utilizando el SDK flutter en el IDE Android Studio, el ambiente de desarrollo es básicamente igual a lo que vimos sobre android studio en clases pero se debe contar adicionalmente con el SDK flutter, los detalles de instalación para poder desarrollar aplicaciones con flutter en android studio se encuentran aquí en las secciones “Get the Flutter SDK” y “Android setup”, adicionalmente utilizamos la librería de bluetooth serial de flutter que se puede encontrar acá.

 

Pruebas

Al abrir la aplicación se muestra pantalla:

Interfaz de usuario gráfica, Texto

Descripción generada automáticamente con confianza media

Al ingresar el usuario y clave correcto nos lleva a la siguiente pantalla:

Texto

Descripción generada automáticamente

Sí los datos son erróneos se muestra:

Interfaz de usuario gráfica, Texto, Aplicación, Chat o mensaje de texto

Descripción generada automáticamente

El siguiente gif ilustra la navegación por la aplicación, conectando el módulo maestro y desplazándose a la ventana de rutinas

y en el este gif (muy pesado para incluír) se muestra la aplicación comunicándose con el módulo maestro a través de chatPage

 

Código del proyecto

El código del proyecto se encuentra en el archivo lib.zip que se puede descargar desde el siguiente enlace de Google drive.