• No se han encontrado resultados

Aplicación de los dispositivos Smart Phone

DISCONNECT

5. Desarrollo de la aplicación

5.3 Aplicación de los dispositivos Smart Phone

El diseño de la aplicación consta inicialmente de un layout en el que se piden los datos de autenticación. En primer lugar, al ejecutar la aplicación se carga el menú de autenticación, es decir, el layout inicial. Éste da la posibilidad de, una vez añadido el nombre de usuario y la contraseña, validar la información y conectar con la aplicación domótica. Por otro lado, también permite ir a la configuración del resto de la aplicación. La captura de imagen de este layout se puede observar en la figura 5.10.

Los componentes principales consisten en unas instrucciones de texto, dos editores de texto; una para el nombre de usuario y otro para la contraseña y dos botones; uno para validar la información y otro para acceder a la configuración.

Una vez que se ha validado el usuario y la contraseña correctamente, de forma transparente se conecta a la aplicación de la RPi3. Asimismo, se ejecuta el siguiente layout, es decir, el menú principal desde donde se puede acceder al resto de layout. Éste nos dirige a cada una de las salas de la vivienda. Concretamente, se puede observar en la figura 5.11.

Fig. 5.11. Menú Principal.

El layout consta de varios botones, dependiendo de las salas que tenga la vivienda. Además, incluye el nombre de usuario y una imagen de su perfil que puede ser cargada de la galería del smart phone o tablet.

En este menú, al dirigirse a un habitáculo en concreto, hace una llamada a los datos de dicho habitáculo solicitándolos a la aplicación domótica. También, dependiendo de los sensores que estén en esa sala, se mostrarán en el layout correspondiente actualizando dichos datos según esté establecido en la configuración.

El layout de monitorización y control se encuentra como ejemplo del salón en la figura 5.12.

Fig. 5.12. Menú de monitorización y control.

En el menú de monitorización y control se pueden controlar los diferentes sensores incluidos en la sala de forma remota. Además, en cada uno de sus indicadores de texto se cargan unas variables según cual sea el estado de la propiedad a la que se refiere. En el indicador Modo muestra si el sistema domótico está activado en manual o automático, es decir, si se controla sólo o se puede controlar mediante este menú.

Por otro lado, están los botones automático y manual que permiten cambiar el modo en el que se encuentran los microcontroladores de dicha sala. Asimismo, están los botones de encendido y apagado que permiten encender en este caso la iluminación, aunque también en otros casos pueden encender electrodomésticos, como por ejemplo un calefactor. Igualmente, en el indicador de Estado muestra si está encendida o apagada, en este caso la iluminación. Los siguientes indicadores como el nivel de intensidad de luz, temperatura, humedad relativa, numero de persones y cantidad de gas, muestran los valores de los sensores tal y como le están llegando a la aplicación domótica.

Los layout son solamente la parte gráfica de la aplicación por lo que por sí solos no son capaces de hacer una acción, aunque con alguna excepción. Por ello es necesario la parte de programación en lenguaje java, para que se realicen las acciones correspondientes, como por ejemplo al pulsar un botón.

Integración de la aplicación.

Para que la aplicación sea capaz de gestionar todas sus tareas, cuenta con la parte no visual para el usuario, pero no por ello menos importante, ya que es más costosa y llevadera que cualquier otra. Para resumir, es la programación en lenguaje Java de todas y cada una de las acciones que realiza la aplicación.

La aplicación se ha gestionado en dos partes. Por un lado, ha sido la ejecución por el usuario y por otro lado, la ejecución automática realizada por la aplicación. De ahí que, siguiendo la gestión de la aplicación se han separado las clases Java con los servicios en segundo plano.

5.3.2.1 Clases

Cada proyecto de Java se organiza en clases donde quedan instanciadas todas las tareas en su interior. Asimismo, cada clase se divide en dependencias o librerías, variables, constructor/es y métodos(funciones). Concretamente, en Android existe un constructor especial encargado de hacer una llamada al layout y así asociar su contenido gráfico al código de la clase Java al que pertenece. Igualmente, en su interior también se inicializan todas las variables y, a la vez, desde donde se ejecutan los métodos o llamadas al constructor de las demás clases necesarias.

La aplicación en Android realmente comienza haciendo una llamada a la clase MainActivity, que está directamente enlazada con el layout de autenticación al que se ha dado referencia en la figura 5.10. A su vez, es la encargada de crear los servicios en segundo plano para la comunicación con la aplicación domótica mediante el protocolo MQTT. También, se encarga de ejecutar las acciones requeridas por el usuario, como es el de validar al usuario y contraseña, mostrar mensaje de error y ejecutar otro servicio para obtener la dirección IP del dispositivo Android, así como su MAC.

En la figura 5.13 se muestran todas las clases de las que consta la aplicación, estando organizadas en paquetes para su estructuración.

Fig. 5.13. Estructura Java de la APP.

En las demás clases se encuentran cada uno de los métodos con los que puede realizar todas las tareas necesarias.

Por un lado, la clase SecurePreferencies permite crear contraseñas de forma cifradas mediante una contraseña con codificación AES. Gracias a ella se puede decodificar y codificar las cadenas de forma segura y poder transmitirlas a la aplicación central de forma que no sean entendibles.

Por otro lado, las clases Codificador y Decodificador contienen herramientas para poder leer y entender los mensajes de la aplicación domótica y poder responderle de manera correcta junto con el mensaje recobrado de forma segura de SecurePreferences.

Igualmente, las clases de MQTT permiten conectarse al servidor para enviar y recibir mensajes mediante este protocolo. Cabe recalcar que utiliza la librería paho mqtt de eclipse para ser funcional. Se puede obtener más información sobre esta librería en su web [29].

Finalmente, están las clases encargadas de gestionar los menús de la aplicación de monitorización y control. Éstas, junto con las demás clases, hacen posible que el proceso de obtención de datos o realización de alguna acción se efectúen correctamente.

5.3.2.2 Servicios

También es importante definir las funciones que se realizan de forma transparente para el usuario, ya que las ejecutan unos servicios incluidos en la aplicación. Estos servicios se establecen en segundo plano durante el funcionamiento de la aplicación e incluso cuando ésta se encuentra cerrada.

Cabe señalar que los servicios son los procesos más complejos de realizar en una aplicación Android ya que son autómatas desde que se ejecutan hasta que finalizan dicho servicio.

Como se ha mostrado en la figura 5.13 anterior, se han creado dos servicios.

El primero llamado servicioDireccionIP, se encarga de recoger cada cierto tiempo las direcciones IP y MAC y comprobar si han cambiado. En caso de que hayan cambiado estas direcciones se las manda a la aplicación domótica, de forma habitual, para que ésta las actualice.

De esta forma, si el smart phone que está en la red domótica se cambia a otra red, la aplicación domótica es capaz de atender las solicitudes de dicho dispositivo.

El otro servicio, denominado servicioMQTT, mantiene la comunicación activa en todo momento con la aplicación domótica, adelantándose a las acciones del usuario para realizar las tareas de manera más rápida. Además, este servicio establece toda la comunicación principal para que todos los datos que necesita la aplicación domótica sean transferidos correctamente.

De esta forma, el dispositivo se encuentra preparado de forma inmediata para cualquier otra acción que pretenda realizar el usuario. Para realizar la comunicación MQTT inicial mediante el lenguaje Java se han obtenido algunas nociones de la web de hiveMQ [39].

Capítulo 6