martes, 21 de mayo de 2013

Autoretroalimentación: UGarage

¿Qué se tenía planeado?

Contar con un sistema añadido a un Garage con el cual sería posible expandir sus funcionalidades para poder hacer lo siguiente:
  • Abrir el Garage con un Smartphone mediante Bluetooth.
  • Abrir el Garage desde una Plataforma Web de forma segura.
  • Abrir el Garage con códigos QR generados para amigos con una fecha de expiración.
  • Utilizar la misma cámara usada para detectar códigos QR para informar sobre actividad sospechosa en el frente del Garage, tomar fotos y enviarlas a un correo.
  • Generación de historial de apertura y cerrado.
Todo lo anterior integrado en un solo gran proyecto.

¿Qué se hizo?

Todo lo anterior está programado en cuanto a software y una simulación en Hardware. 

Nosotros en nuestro proyecto, proponemos un sistema añadido al Garage para las tareas antes mencionadas, asumiendo que el Garage y su funcionamiento ya esta implementado. Por ello, la forma de simularlo fue utilizando simples LEDS de colores (que igualmente deberían de estar disponibles en el sistema o algún panel para informar de la situación). Un LED verde que enciende cuando se abre la puerta, un LED amarillo cuando se cierra la puerta y un LED rojo que avise que no se puede abrir por alguna razón (contraseña incorrecta, QR no válido). 

Con eso, las funcionalidades que se buscaron se implementaron en un prototipo probado localmente, y hace lo siguiente:
  • Apertura con Smartphone: La aplicación, disponible para Android, se conecta con el dispositivo y envía por bluetooth una señal para abrir o cerrar el Garage, adjuntando la contraseña además para validar que en verdad el usuario puede manipular la puerta. Básicamente, si la contraseña configurada es correcta y se presiona el botón abrir se enciende el LED verde (abrir puerta), y si se presiona el botón cerrar se enciende el led Amarillo. En caso de ingresar una contraseña no válida se enciende el LED amarillo.
  • Abrir desde plataforma web:  La plataforma web, con un usuario autentificado puede abrir la puerta de Garage desde la sección Mi Garage. En dicha sección se presenta un botón de abrir y uno para cerrar, además de información acerca del último estado registrado de la puerta (Abierto o cerrado) y un timestamp con la fecha del momento cuando ocurrió.
  • Abrir con código QR: Desde la plataforma web, con un usuario autenficado se pueden generar códigos QR a nombre de alguien en específico con una fecha de expiración dada y los almacena en una base de datos. Esto hace que cuando una persona se presente al dispositivo y muestre el código QR, la puerta se abra o cierra dependiendo del estado actual de la misma. Para eliminar QRs cuya fecha de expiración ya ha pasado, verifica el código en una base de datos para eliminarlo si la fecha ha pasado, ignorandolo de ahí en adelante.
  • Notificaciones: Con una cámara grabando la entrada del Garage y un programa corriendo en el fondo analizando el video, se busca detectar cambios en el fondo regular para enviar notificaciones cuando ese cambio permanece un tiempo dado en la pantalla. Al cumplirse el tiempo se envía una notificación y una foto de lo ocurrido a un correo dado. Para evitar enviar múltiples fotos de un mismo objeto, y por lo tanto spam, el fondo regular se recalcula cuando se detecta ese cambio, y automáticamente cada cierto tiempo para eliminar fallas por cambio en la iluminación (día/noche).
  • Historial: Toda apertura y cerrado del Garage se registra en una base de datos, con el timestamp en cuando se abrió, si se abrió o cerró, y con que servicio se abrió (actualmente implementado solo para QR y el servicio web, no con dispositivo móvil). Este historial se puede acceder en el servicio web en la cuenta del usuario.

¿Qué hice yo?

Inicialmente, mi asignación fue el servicio web y el prototipo del Garage a escala. Cuando se definió que nos enfocaríamos más en el servicio web, el prototipo de Garage pasó a ser de baja prioridad. 

Al final, terminé realizando el servicio web con lo definido (probado localmente) y además por fallas en el detector QR implementado por nosotros, agregue la funcionalidad con QR, para decodificar los QR, compararlos con la base de datos y saber si es válido o no, y después conectarse con el Arduino y encender la señal correspondiente.

Además, realicé la conexión a Bluetooth con el Arduino.

¿Qué se debió hacer?

Pienso que se debió de haber planeado mejor la forma de integrar todo conjunto en un solo proyecto, debido a que solo se contaba con los módulos por separado por falta de ideas de como integrarlos. Otro problema fue el hardware, ya que no teníamos en mente que el Arduino Uno solo puede realizar una conexión serial por Hardware (o con el servidor o con el dispositivo móvil). 

Además pienso que se debió elegir un líder desde el inicio, ya que al parecer la gente asumió que uno de nostotros era el líder y esperaba en todo momento órdenes para empezar, en vez de realizar lo que se asignó y simplemente informar a los demás cuando estuviera listo.

1 comentario: