Kora

Alcalá

Qué es Kora

Kora es mi proyecto fin de carrera. Consiste en una aplicación para Android que pretende facilitar la interacción con el entorno a personas con algún tipo de discapacidad motora, sensorial o cognitiva. Kora permite controlar elementos domóticos con un dispositivo móvil, además de mostrar el estado de los mismos, así como interactuar con otras aplicaciones. Está siendo desarrollada dentro del marco del proyecto Sc@ut del Departamento de Lenguajes y Sistemas Informáticos de la Universidad de Granada, un proyecto que pretende facilitar la integración de las personas con necesidades especiales.

Un concepto básico en el funcionamiento de Kora es el de perfil. Debido a que la aplicación debe dar soporte a varios usuarios que utilizarán el mismo dispositivo en momentos distintos, Kora soporta la gestión de varios usuarios. Cada usuario tiene asociados un perfil de uso (que determina cómo va a interactuar con la aplicación y cuál va a ser su aspecto) y un perfil de dispositivos que indica qué dispositivos le está permitido usar al usuario y qué acciones podrá realizar sobre los mismos.

Kora es software libre

Está siendo desarrollado de una forma 100% libre bajo licencia GPLv3.  Debido al carácter eminentemente social de la aplicación, y a que está siendo creada en el marco de un proyecto de investigación universitario como lo es Sc@ut, es importante que sea una aplicación libre para que pueda llegar al máximo posible de gente y para que pueda ser constantemente mejorada. Además, está siendo implementada sobre Android, que es un Sistema Operativo para dispositivos móviles basado en el kernel Linux, y que además da soporte a varios tipos de dispositivos (tales como teléfonos móviles, UMPCs, tablet PCs, cámaras y hasta lavadoras).

De qué se encarga Kora

Su objetivo principal es ofrecer una capa de interfaz de usuario adaptable a las necesidades, capacidades y preferencias del mismo. A través de esta interfaz se accede a los dispositivos domóticos para operar con ellos o consultar su estado. La comunicación con el sistema que controla los dispositivos se realiza a través del middleware de comunicación BlueRose, también desarrollado en la Universidad de Granada. La conexión a bajo nivel con los dispositivos se realiza sobre bibliotecas para KNX (principalmente, Calimero). Está previsto el desarrollo de una biblioteca que permita conectarse con varios estándares como ZigBee, Lonworks o X-Bee de forma genérica.

Adaptabilidad de la interfaz de usuario

El principal objetivo de Kora es implementar una interfaz totalmente configurable según las necesidades del usuario. Aun con todas las personalizaciones, en todo momento se han considerado requisitos y normas de accesibilidad para que la interfaz se mantiene limpia y simple, facilitando al máximo su uso y potenciando la atención del usuario y la realimentación que se le ofrece. Así, dentro de los aspectos más importantes  que se pueden configurar se encuentran:

  • El modo de interacción con la aplicación: interacción táctil directa o modo de barrido.
  • La cantidad y la organización de los elementos en pantalla.
  • Los colores de los elementos.
  • Selección de texto y/o tipografía.
  • Realimentación o refuerzo ante las acciones del usuario: vibración, confirmación, resaltado, sonido, etcétera.
  • Selección de los iconos que representan el objeto con el que interaccionar: pictogramas, iconos en alto contraste, en blanco y negro, fotografías, etcétera.
  • Soporte de múltiples usuarios sobre el mismo dispositivo, cada uno con características distintas.
  • Soporte de permisos sobre el control de los dispositivos y las operaciones a realizar con ellos.

De esta forma, se consigue superar el requisito inicial de facilitar su uso a personas con distintos tipos de discapacidad, independientemente de sus capacidades y necesidades.

Los requisitos más importantes de la aplicación son la facilidad y la rapidez de uso, tanto desde el punto de vista del usuario final, como del tutor. La interfaz de la aplicación debe ser rápida, confiable, atractiva y simple, para no confundir al usuario y distraer su atención lo mínimo posible. Debido a que, en la mayoría de los casos, serán los profesores o tutores de los usuarios finales quienes creen los perfiles para ellos, hay que tener en cuenta que no tienen por qué tener conocimientos avanzados de informática, y además hay que evitar en la medida de lo posible que sea difícil o tedioso configurar cualquiera de los muchos aspectos de la configuración. Con este propósito se incluyen iconos para la mayoría de las acciones, se muestra en todo momento la información más relevante y se permite la edición y copia rápidas de los perfiles existentes.

Comunicación con dispositivos

La comunicación con los dispositivos se realiza de una forma totalmente transparente e independiente de la tecnología concreta que se utilice. Kora solo necesita conocer los valores máximo y mínimo de un dispositivo, además del tipo de valor que se utilice. Esta transparencia se consigue gracias al middleware de comunicación BlueRose, que proporciona un modelo de comunicación orientado a eventos especialmente interesante para esta aplicación: cuando se produce un evento en el sistema, se notifica al resto de usuarios que estén usando la aplicación en ese momento en tiempo real. De esta forma, también se da soporte al acceso cooperativo a un dispositivo, pudiendo haber más de un usuario interaccionando con él en el mismo instante de tiempo.

Cómo funciona

Como se comentó arriba, una de las características básicas de la aplicación son los perfiles de uso. Este aspecto determina también su arquitectura y funcionamiento. La aplicación se compone de tres módulos principales: gestión de perfiles, gestión de dispositivos y actividades de la interfaz de usuario.

El gestor de perfiles, ProfileManager, es una clase estática que gestiona de forma centralizada los usuarios y sus perfiles de uso y dispositivos correspondientes. Se encarga de manejarlos en memoria y trabajar con el almacenamiento de los mismos en el dispositivo. Esto se hace actualmente mediante una base de datos SQLite, pero tengo previsto cambiarlo durante el verano para que se usen ficheros XML. Los perfiles consisten en estructuras simples con una serie de atributos que indican los valores de la configuración. Esto se hizo así inicialmente por cuestiones de rendimiento pero, al igual que el backend de almacenamiento, tengo previsto cambiarlo por estructuras de datos más versátiles como tablas hash.

El gestor de dispositivos, DeviceManager, se encarga de gestionar de forma centralizada las comunicaciones con la centralita domótica y de las representaciones de los dispositivos detectados. Todas las operaciones de consulta o alteración del estado de los dispositivos tienen que pasar necesariamente por él. Esto es así para permitir un control de los eventos más sencillo y da robustez a la aplicación.

Las actividades se dividen en dos grupos: de configuración de perfiles y de manejo. Las primeras son las utilizadas por los tutores para configurar la aplicación para los alumnos, y las segundas son las que contienen los elementos que permiten interactuar con los dispositivos.

Adaptabilidad de la interfaz de usuario

Los widgets estándar de Android no tenían algunas de las características necesarias para esta aplicación (como el escalado automático de iconos y texto o el soporte a múltiples realimentaciones), así que se han desarrollado algunos propios:

  • GridLayout: es un gestor de disposición en forma de rejilla simple que distribuye los elementos en filas y columnas, todos con una misma proporción. Tiene la particularidad de que asigna un tamaño fijo a todos los elementos con un margen configurable, además de poder interceptar ciertos eventos antes que los elementos que contiene. De esta forma, es posible distribuir los elementos de una forma sencilla y se puede implementar fácilmente el modo de barrido.
  • KoraButton: es un botón que soporta varias personalizaciones (como vibración independiente, modos de resaltado, color de texto, color para fondo y borde en distintos estados) y además el escalado automático de imágenes y texto. Puede incluirse en un fichero XML de layout igual que cualquier otro widget estándar de Android.
  • KoraSlider: es un deslizador sencillo que soporta las mismas características que el KoraButton.
  • Y varios widgets compuestos para selección de color, listas personalizadas, etcétera.

Comunicación con dispositivos

Como se comentó anteriormente, la comunicación con la centralita domótica se realiza mediante el middleware de comunicación BlueRose, desarrollado en la Universidad de Granada.

La gestión a bajo nivel de dispositivos se consigue conectando una centralita KNX a un ordenador que ejecuta permanente el servidor de BlueRose y que transforma las operaciones de los clientes en acciones sobre los dispositivos. Asimismo, cuando se produce una acción externa sobre alguno de los dispositivos, se envía un evento de multidifusión a todos los clientes (en este caso, dispositivos móviles con Android y Kora) que procesan el evento y actualizan la interfaz de usuario según se necesite.

Tanto la aplicación como la centralita comparten la misma especificación del modelo de dispositivos. Es la centralita la que se encarga de transformar los datos de los dispositivos para enviárselos a la aplicación de usuario. KNX, por ejemplo, identifica los dispositivos mediante una dirección numérica y permite interactuar con ellos mediante varios tipos de dato distintos. En cambio, Kora solo conoce los nombres de los dispositivos, y sus valores máximo, mínimo y actual.

Actualmente se está desarrollando la biblioteca para el control domótico, aunque en el repositorio de Kora hay una aplicación de simulación que permite probar el funcionamiento del sistema.

Al arrancar la aplicación, esta pide al servidor la lista de dispositivos, con sus respectivos nombres de sistema, tipos de dispositivo, y valores máximo, mínimo y actual. Una vez obtenida la lista, se cargan las representaciones correspondientes y se rellena la rejilla de selección de dispositivo. Para gestionar los eventos, los widgets que representan a los dispositivos deben implementar la interfaz DeviceListener y registrarse como escuchadores de los mismos, de forma que cuando se recibe un evento para un dispositivo, este llama al método onDeviceChange(). Este enfoque permite que los esuchadores de eventos no sean únicamente widgets de la interfaz de usuario, también podría ser un servicio de alarma, un servicio de gestión automática de eventos, etcétera.

Estado actual de la aplicación

Actualmente, la aplicación es capaz de conectarse con el servidor de BlueRose y adapta su funcionamiento a los aspectos más importantes definidos en el perfil de uso definido para el usuario que esté usando la aplicación. Actualmente se está probando la conexión con dispositivos en un panel de pruebas con dispositivos KNX y en las próximas semanas se comenzará a probar la aplicación en la instalación de la casita domótica del colegio de educación especial Jean Piaget de Granada. Se espera poder hacer pruebas con usuarios reales a principios del curso 2010-2011.

<fotos de la instalación y la casita>

En el repositorio en el que se aloja la aplicación se encuentra también un simulador simple desarrollado en Java que sirve para hacer las pruebas en ausencia de los dispositivos reales.

Kora ganó el premio a mejor proyecto del Concurso Universitario de Software Libre a nivel de Granada, y va a participar en la final nacional en Cádiz junto con otros siete proyectos.

Beneficios que proporciona

  • Autonomía e independencia de personas con necesidades especiales. pueden interactuar con su entorno sin necesidad de que lo haga otra persona con ellos.
  • Autodeterminación. La aplicación está enfocada desde un punto de vista distinto al típico en domótica. El entorno no es automático (excepto en un futuro, un sistema de alarmas). La aplicación requiere de la intervención del usuario y deja que decida qué quiere hacer.
  • Adaptación al usuario. Al poderse adaptar tanto la forma como los contenidos de la interfaz de usuario, la aplicación es capaz de adaptarse a las preferencias, capacidades, necesidades y habilidades del usuario final. Se pretende que la aplicación esté diseñada para todos.
  • Bajo coste. Los sistemas domóticos son caros (especialmente los del sistema KNX). No obstante, se pretende desarrollar una bibloteca genérica que permita enlazar con otros estándares domóticos como ZigBee, que tienen costes más asequibles. Al ser una aplicación libre y adaptable al usuario, se pretende reducir el coste de la capa software.
  • Interoperabilidad. Muy en parte gracias al uso de una biblioteca de comunicación portable como lo es BlueRose, es posible definir un modelo de eventos común a varias aplicaciones conectadas al mismo sistema domótico.
  • Extensibilidad. La aplicación se está diseñando con la idea en mente de ser totalmente extensible sin necesidad de tocar el código fuente. Como ya se comentó anteriormente, será posible intercambiar perfiles de uso y representaciones de dispositivos entre dispositivos. Además, pueden añadirse representaciones para dispositivos nuevos simplemente añadiendo la especificación en XML. Los widgets desarrollados pueden utilizarse en cualquier aplicación Android, simplemente añadiendo la clase. Además, la aplicación es software libre, de forma que cualquier persona puede colaborar en la mejora de la misma.

Ampliaciones futuras

  • Publicación de la biblioteca de control domótico (implementada en el servidor).
  • Pruebas con usuarios reales.
  • Reescritura completa del sistema de perfiles: implementación de los propios perfiles y las actividades que los gestionan, almacenamiento como ficheros XML, etcétera.
  • Soporte para varios idiomas en la representación de dispositivos.
  • Añadir atributos a las representaciones de dispositivo, como sonidos o especificaciones declarativas para los widgets.
  • Modo administrador para que un tutor pueda supervisar el estado de todos los dispositivos.
  • Añadir nuevas personalizaciones como voces e iconos personalizadas.
  • Control por voz.
  • Investigación del soporte en UMPCs y tablets que permitan nuevas formas de interacción y conexión de pulsadores o dispositivos similares.

Agradecimientos

  • A mi tutora, María José, por darme la oportunidad de hacer un proyecto tan interesante. También a José Luis, por cedernos su despacho para trastear con el panel de pruebas, y por toda la documentación que me ha pasado.
  • A Carlos por BlueRose y por toda la ayuda que me ha dado.
  • A Álvaro por su aplicación Picaa, que ha sido un referente.
  • A la Oficina de Software Libre de la Universidad de Granada.
  • A todos los participantes en el Hackathón que me echaron una mano y sobre todo, hicieron que me pusiera las pilas.
  • A Jeremy Todaro por el icono tan chulo que me hizo.
  • A los autores del proyecto Oxygen de KDE, del que he tomado prestados varios iconos para la interfaz de configuración.
  • A los autores de Inkscape, magnífica herramienta que he usado para crear los iconos.
  • Al autor del ColorPickerDialog y a los autores de PhotoStream, programa que contenía un GridLayout que luego amplié.
  • A mi hermana por ayudarme con iconos y capturas para la aplicación.
  • A mi novia, por haber aguantado el poco caso que le he hecho durante estos meses.
  • Y a mi Kora, que era mu bonica.

6 comentarios to “Kora”

  1. Final nacional del CUSL en Cádiz dijo::

    [...] las conferencias han sido bastante interesantes, especialmente las de Opengnsys, Guadalinfo y Korea. Me da lástima no haberme podido quedar a las del viernes por la tarde, pero me gradué ayer y si [...]

  2. Fase Final CUSL4 – Oficina de Software Libre de la Universidad de Granada dijo::

    [...] Jose Alcalá recibió el premio en la categoría de accesibilidad por Kora. [...]

  3. Bleiraner » Archivo » Kora dijo::

    [...] cierto, mi proyecto lo presento en septiembre y se llama Kora. Para entonces, lo mismo escribo algo y os lo muestro, y subo el proyecto al Market. Tenéis toda [...]

  4. Kora, a capa y espada dijo::

    [...] supongo que ya sabéis los pocos que me leéis y no vais directamente a este otro post, se llama Kora. Coloquialmente puede decirse que va de controlar cacharricos domóticos con móviles (o tablets, o [...]

  5. Mª Carmen dijo::

    Hola,

    Estaba buscando un software para minusvalidos, estoy montando una empresa de domótica en barcelona y me quiero especializar en minusvalidos para poder les ayudar a adaptar sus casas con los costes para ellos lo más reducidos posibles, intentandoles gestionar ayudas, etc….
    En resumen me interesa mucho tu software, te he dado mi e-mail privado para que te pongas en contacto conmigo y te pueda comentar más a fondo mi proyecto.

    Gracias y te deseo un futuro muy exitoso.

    Mª Carmen

  6. Kora, aplicación para Android que ayuda a hacer un entorno accesible | Arquitectura y Diseño Accesible dijo::

    [...]     http://www.gskbyte.net/kora/ [...]

Deje un comentario