Escolar Documentos
Profissional Documentos
Cultura Documentos
PROYECTO DE GRADO
P RESENTADO COMO REQUISITO PARCIAL
P ARA OPTAR AL TTULO DE
INGENIERA ELECTRNICA
DIRECTOR:
-2-
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERA
CARRERA DE INGENIERA ELECTRNICA
RECTOR MAGNFICO:
R.P. JORGE HUMBERTO PELEZ PIEDRAHITA, S.J.
DECANO ACADMICO:
Ing. JORGE LUIS SNCHEZ TLLEZ, M.Ed.
DIRECTOR DE CARRERA:
Ing. JAIRO ALBERTO HURTADO LONDOO, Ph.D.
-3-
NOTA DE ADVERTENCIA
La Universidad no se hace responsable de los conceptos emitidos por algunos de sus alumnos en los
proyectos de grado. Solo velar porque no se publique nada contrario al dogma y la moral catlica y
porque no contengan ataques o polmicas puramente personales. Antes bien, que se vea en ello el anhelo
de buscar la verdad y la justicia.
-4-
A mi mam, por su cario y apoyo incondicional.
A mi pap, por ser un modelo en mi vida y por el jugo de naranja todas las maanas.
A Andrs y Santi, por rerse de mis chistes malos.
A David, por su paciencia y excelentes archivos de Excel.
A Felipe y a Ivonne, por sus cartas de aliento y natillas caseras.
A Stella, por sus clases de canto, y a Chiqui, por las velas al Espritu Santo.
A todos mis familiares y amigos que me han brindado un abrazo y una palabra de apoyo.
Hasta luego y gracias por el pescado.
-5-
TABLA DE CONTENIDO
LISTA DE TABLAS ...................................................................................................................... 8
LISTA DE ILUSTRACIONES..................................................................................................... 9
1. INTRODUCCIN ................................................................................................................. 12
3. ESPECIFICACIONES .......................................................................................................... 19
3.1 Gateway ............................................................................................................................................... 20
3.1.1 Hardware........................................................................................................................................... 20
3.1.2 Software ............................................................................................................................................ 20
3.1.3 Motor de sincronizacin .................................................................................................................... 21
3.2 Interfaz Grfica .................................................................................................................................... 21
3.3 Sensores y Actuadores ......................................................................................................................... 22
3.3.1 Sensor de movimiento ....................................................................................................................... 22
3.3.2 Sensor de consumo ........................................................................................................................... 22
3.3.3 Actuador para controlar una lmpara ................................................................................................ 23
3.4 Base de datos........................................................................................................................................ 23
-6-
4.2.2 Items de OpenHAB ........................................................................................................................... 29
4.2.3 Codificacin de los nombres de los items ......................................................................................... 30
4.2.4 Configuracin de la persistencia ....................................................................................................... 30
4.3 Protocolo inalmbrico .......................................................................................................................... 31
4.3.1 Sistemas inalmbricos tradicionales .................................................................................................. 31
4.3.2 ZigBee y Z-Wave .............................................................................................................................. 31
4.3.3 Seleccin del Protocolo de Comunicacin ........................................................................................ 32
4.3.4 Creacin de la red Z-Wave................................................................................................................ 32
4.4 Sensores y actuadores .......................................................................................................................... 33
4.4.1 Parmetros de configuracin los dispositivos.................................................................................... 33
4.4.2 Aeon Labs Aeotec Z-Wave Multisensor ........................................................................................... 34
4.4.3 AeonLabs - Z-wave Smart Energy Switch (DSC06106-ZWUS)....................................................... 35
4.4.4 Jasco Z-Wave Lighting Control On/Off Switch, (45609).................................................................. 36
4.5 Arquitectura del Software .................................................................................................................... 36
4.5.1 Bases de datos ................................................................................................................................... 36
4.5.1.1 Persistencia MySQL de OpenHAB ................................................................................................ 37
4.5.1.2 Tabla switch_next_state ................................................................................................................. 38
4.5.2 Motor de sincronizacin .................................................................................................................... 38
4.5.2.1 Entorno de programacin ............................................................................................................... 39
4.5.2.2 sync_engine.c ................................................................................................................................. 40
4.5.2.3 http_request.c ................................................................................................................................. 42
4.5.3 Interfaz grfica .................................................................................................................................. 43
4.5.3.1 Ambiente de desarrollo .................................................................................................................. 44
4.5.3.2 Aspecto visual ................................................................................................................................ 44
4.5.3.3 Estructura ....................................................................................................................................... 45
4.5.3.4 Autogenerado de los widgets ......................................................................................................... 48
4.5.3.5 Diseo para celulares ..................................................................................................................... 48
6. CONCLUSIONES.................................................................................................................. 58
7. BIBLIOGRAFA.................................................................................................................... 59
ANEXOS....................................................................................................................................... 61
-7-
LISTA DE TABLAS
-8-
LISTA DE ILUSTRACIONES
-9-
Ilustracin 31 Resultado de gtmetrix para la interfaz grfica ..................................................................... 51
Ilustracin 32 Captura de pantalla iPhone 4s. Diagramacin de la interfaz grfica para menos de 768px.. 52
Ilustracin 33 Captura de pantalla modo landscape de LG G PAD 8.3. Diagramacin para pantalla entre
768px y 1022px.......................................................................................................................................... 53
Ilustracin 34 Capturas de pantalla en el iPhone 4s de las estadsticas de Power, ON-OFF Switch, PIR
Sensor y Luminance ................................................................................................................................... 53
Ilustracin 35 Capturas de pantalla del iPhone 4s cambiando orientacin de portrait a landscape ............ 54
Ilustracin 36 Administrador Z-Wave de HABmin con todos los dispositivos vivos ................................. 55
Ilustracin 37 Uso CPU IZQ: Durante inicializacin de OpenHAB IZQ: Todos los servicio de OpenHAB
cargados ..................................................................................................................................................... 56
- 10 -
LISTA DE ANEXOS
- 11 -
1. INTRODUCCIN
La tendencia del Internet de las Cosas (IoT por sus siglas en ingls) indica que para el ao 2020 ms de 30
mil millones de dispositivos estarn conectados a internet [1], lo que ha creado una expectativa muy alta
sobre cmo estos dispositivos interactuarn entre ellos y de cmo la vida de las personas cambiar cuando
todos los objetos de su entorno dispongan de capacidad inalmbrica.
Para el mismo 2020 las proyecciones indican que en un hogar comn se encontraran ms de 30
dispositivos todos conectados a internet [1]. Teniendo esto en cuenta, es evidente la necesidad de una
integracin a travs de algn tipo de sistema de control intuitivo, que agrupe todos estos dispositivos y que
le facilite al usuario la interaccin con su entorno.
En la actualidad es posible crear, a un precio razonable, ambientes inteligentes construidos alrededor de
dispositivos basados en tecnologas inalmbricas ya disponibles comercialmente. Sin embargo, el modo en
que estos dispositivos se relacionan e interactan entre s, su control y su facilidad de uso, son
problemticas que no se han resuelto completamente y sobre las cuales muchas compaas actualmente se
encuentran trabajando, razn que ha dificultado su amplia distribucin.
Otro motivo que ha ocasionado que los sistemas de automatizacin residencial (domtica) no gocen de
una amplia distribucin, es la falta de una interfaz de usuario comn e intuitiva. Las soluciones
disponibles en el mercado vienen integradas a aplicaciones cerradas y de propiedad de una compaa, por
lo cual el usuario est obligado a usar diferentes programas o dispositivos para poder controlar su entorno.
La realizacin de este trabajo de grado busca acercarse a la solucin de estas problemticas a travs del
diseo e implementacin de un sistema de domtica para un espacio pequeo y controlado, en el cual el
control y la supervisin de los dispositivos se realice de manera remota a travs de internet. Con una
cantidad fija y limitada de dispositivos es posible delimitar cules son los requerimientos necesarios para
la integracin de stos en ambientes ms vastos y con ms variables. A partir de este punto, a este espacio
controlado que contiene los dispositivos se le conocer con el nombre de habitacin.
Las potenciales variables que un usuario quisiera supervisar dependen de la funcin de la habitacin. Por
ejemplo, en una bodega de alimentos as como en un invernadero son de especial inters la temperatura y
la humedad, mientras que en un espacio residencial la iluminacin y la deteccin de presencia pueden
llegar a ser muy tiles. Tomando esto en consideracin, los dispositivos para poblar la habitacin se
escogieron teniendo en cuenta que la informacin que stos permitan visualizar sea de especial inters
para un usuario residencial, le generen beneficios reales y le permitan interactuar con el espacio en formas
que antes no le eran posibles. Las variables escogidas para ser supervisadas y/o controladas fueron:
La iluminacin, mediante un interruptor conectado a una lmpara.
El movimiento, con un sensor PIR.
La potencia instantnea de entrada de un dispositivo conectado a una toma de corriente con sensor
de consumo.
El uso de tecnologas inalmbricas fue importante durante la concepcin de este proyecto debido a su
precio razonable y a su poco impacto en trminos de instalacin. Los sensores, actuadores y el sistema de
control, se comunican entre s a travs de un protocolo inalmbrico de bajo consumo orientado a
domtica, soportado por el framework OSGi. En la seccin 4.3 de este documento se evalan los
principales protocolos inalmbricos orientados a domtica y se selecciona el ms apropiado para esta
aplicacin.
La arquitectura software del sistema de automatizacin planteada en la seccin 4.5 de este documento, se
dise aprovechando las ventajas que ofrece un framework OSGi open-source orientado a domtica,
permitiendo su uso sin ningn costo y libre de regalas [2]. Adicionalmente se implement un software
que acta como motor de sincronizacin entre el framework, encargado de enviar y recibir los comandos y
estados de los sensores y actuadores, y la interfaz de usuario, accesible mediante internet.
- 12 -
Para la seleccin del hardware, donde vienen ejecutados el framework OSGi y el motor de sincronizacin,
se busc una plataforma de gran flexibilidad, bajo costo y consumo, caractersticas de los ordenadores de
placa reducida. En la seccin 4.1.2 de este documento se compararon diferentes opciones y se seleccion
el ms adecuado para el sistema de domtica desarrollado.
La interaccin del usuario con los sensores y actuadores en la habitacin se realiza a travs de una interfaz
grfica web accesible desde internet, implementada como parte de este proyecto. Dicha interfaz de usuario
permite: controlar el estado de un interruptor conectado a una lmpara (encendido/apagado), supervisar el
estado de un sensor de movimiento y supervisar el consumo de un dispositivo conectado a una toma de
corriente.
Finalmente, en la seccin 5 del documento, se realiza un anlisis para verificar y evaluar el
funcionamiento del sistema, considerando factores como su rendimiento, facilidad de uso, compatibilidad
entre diferentes plataformas, entre otros.
Las implicaciones de este proyecto van ms all de la creacin de un hogar inteligente. Desde el punto de
vista econmico, el proyecto se ve justificado teniendo en cuenta que el mercado de la domtica en
Colombia y Latinoamrica tiene pocos actores, as que una insercin temprana con un rpido diseo y
desarrollo del producto podra convertirse en una muy buena oportunidad de emprendimiento. Adems,
con modificaciones a la interfaz de usuario y la inclusin de sensores para supervisar datos fisiolgicos,
usuarios con discapacidad podran ganar independencia adems de seguridad, salud y bienestar. As
mismo, teniendo en cuenta que se usaron tecnologas y protocolos estndar fcilmente escalables, las
conclusiones de este proyecto son extrapolables para la implementacin de ambientes con ms
dispositivos.
- 13 -
2. MARCO CONCEPTUAL
2.1 Domtica
En los aos 90 la gran mayora de viviendas comenzaron a interactuar con: diversos dispositivos
electrnicos regulares como neveras y televisores; aparatos de comunicacin, como telfonos y faxes; y
dispositivos de cmputo, como computadores. El funcionamiento de cada uno de ellos requera un sistema
de cableado dedicado y muchas veces diferente. Todos estos sistemas usaban distintos tipos de
comunicacin y conducan mltiples tipos de seales completamente independientes las unas de las otras.
Bajo este escenario surge la necesidad de crear un sistema unificado de redes [3].
La clave para controlar todos los dispositivos de manera conjunta recae an en la habilidad de los
productos para comunicar su estado. Hasta 1993, las redes de comunicacin para domtica empleaban
medios cableados para la interconexin de los dispositivos [3], sin embargo, los problemas generados por
el uso fsico de redes cableadas y la dificultad de su instalacin no permitieron una completa introduccin
de soluciones de este tipo en el mercado. Esto cre la necesidad de desarrollar sistemas de fcil instalacin
e impuls el desarrollo y la implementacin de sistemas ms flexibles. De esta manera se introduce por
primera vez el concepto de domtica de tipo inalmbrica (wireless), usando dispositivos que se comunican
a travs de redes de control y automatizacin sin la presencia de cables entre ellos.
Durante la dcada pasada, grandes avances en internet, la telefona mvil y TCP/IP han dado como
resultado muchos dispositivos y soluciones de automatizacin para hogares que hacen uso de sus propios
sistemas y protocolos de comunicacin, entre ellos: Wi-Fi, enfocado principalmente a conexiones y hubs
de internet; Bluetooth, desarrollado como alternativa de baja potencia para la transferencia de datos entre
dispositivos; Z-Wave, orientado a la domtica de ltima generacin y seguridad en el hogar; y ZigBee,
orientado a sensores para el hogar y dispositivos de supervisin.
En los ltimos aos, internet ha mantenido un estado de desarrollo estable y constante pero no
significativo. En este contexto, IoT se vuelve inmensamente importante porque es la primera evolucin
real del internet, al constituirse como una nueva etapa que conducir el desarrollo de aplicaciones
revolucionarias con el potencial de mejorar la manera en que las personas viven, estudian, trabajan y se
entretienen.
- 14 -
Actualmente todos los sensores y dispositivos producen datos individuales que no son procesados en
conjunto, pero si estos volmenes de informacin son analizados es posible identificar patrones y generar
resultados potenciales. IoT incrementa dramticamente la cantidad de datos disponibles para procesar, y
esto, sumado a la habilidad del internet para comunicar la informacin, permitir acelerar el desarrollo y el
avance de la tecnologa. Dado que los humanos avanzan y evolucionan convirtiendo datos en informacin,
conocimiento y desarrollo, IoT tiene el potencial de cambiar el mundo que conocemos, de una manera
positiva.
Las WSN tpicamente tienen poca o ninguna infraestructura, se componen de un nmero de nodos de
sensores (desde decenas hasta miles) que trabajan juntos para controlar una regin y obtener datos sobre el
entorno [5]. La tarea de un nodo genrico de sensores es tomar medidas del ambiente a supervisar, puede
estar equipado con una variedad de dispositivos que pueden medir diferentes atributos fsicos, tales como
la luz, temperatura, humedad, presin baromtrica, velocidad, aceleracin, campo magntico, etc. El
Gateway o puerta de enlace de los nodos rene los datos de los sensores genricos y los trasmiten a la
estacin base. Los nodos de las puertas de enlace tienen mayor capacidad de procesamiento, autonoma de
batera y rango de trasmisin. Una combinacin de los nodos genricos y de puerta de enlace normalmente
se despliega para formar una red de sensores WSN.
Las aplicaciones WSN se pueden clasificar en dos categoras [5]:
Supervisin: la cual incluye supervisin de ambientes, sean externos o internos, de salud y
bienestar, control de energa, automatizacin de procesos o control ssmico.
Seguimiento: que incluye sujetos en movimiento, como animales, seres humanos y vehculos.
El protocolo de comunicacin se compone de cinco capas de protocolo estndar para la conmutacin de
paquetes: la capa de aplicacin, capa de transporte, la capa de red, capa de enlace de datos y la capa fsica.
A partir de los requisitos de aplicacin y perspectivas de gestin de red, es importante que los nodos de
sensores sean capaces de auto-organizarse. Es decir, que puedan organizarse en una red y, posteriormente,
sean capaces de controlar y gestionarse a ellos mismos de manera eficiente. Las redes de sensores son un
campo relativamente nuevo en adquisicin y tratamientos de datos, pero que al mismo tiempo pronostica
avances en mltiples aplicaciones en distintos campos tales como entornos industriales y domtica.
- 15 -
2.4 Ordenadores de placa reducida
Un ordenador de placa reducida o SBC (Single Board Computer) es un computador completamente
integrado en un solo circuito, junto con los microprocesadores, memorias, interfaces de entrada y salida y
otras caractersticas requeridas en un computador. Esta configuracin disminuye el costo global del
sistema, reduciendo el nmero de placas de circuitos requeridos y eliminando conectores y buffers que de
otra manera habran sido utilizados. Al implementar todas las funciones en una nica placa, se puede
obtener un sistema general ms pequeo y gil.
Su principal beneficio es su facilidad de uso, ya que mantienen la flexibilidad de un PC, con respecto a la
variedad de procesos que pueden realizar, pero su pequeo tamao y costo los hace ideales para
aplicaciones donde el uso de un PC regular sera excesivo. Esto es de gran ayuda especialmente durante el
proceso de investigacin y desarrollo.
- 16 -
La funcionalidad del framework OSGi se divide en las siguientes capas:
Security Layer: Capa de seguridad.
Module Layer: Este mdulo define la reglas para el intercambio de paquetes java entre los bundles.
Life Cycle Layer: Gestiona el ciclo de vida de un bundle o paquete dentro del framework, sin tener
que detener la Java VM.
Service Layer: La capa de servicios proporciona un modelo de programacin dinmico para los
desarrolladores de bundles, simplificando la implementacin y despliegue de mdulos a travs del
desacople de la especificacin del servicio (java interface) de su implementacin.
Java VM: Mquina virtual Java.
Execution Environment: Ambiente mnimo de ejecucin OSGi.
2.5.2 OpenHAB
OpenHAB es una plataforma software escrita en Java que integra diferentes sistemas de automatizacin y
tecnologas en una nica solucin que permite la creacin de reglas automticas y que ofrece interfaces
unificadas buscando ser absolutamente neutral respecto a los diferentes proveedores de dispositivos y
agnstica respecto a los protocolos de comunicacin y las plataformas hardware. Funciona utilizando
enlaces (bindings), por lo tanto es posible aadir paquetes de software para habilitar la comunicacin con
una variedad de sistemas como: KNX, Philips Hue, MiLight, USB, Bluetooth, Asterisk, Modbus, etc. [6].
2.5.2.1 Arquitectura Software OpenHAB
La grfica a continuacin muestra un resumen de los principales componentes de OpenHAB y la forma en
que dependen unos de otros:
Al estar basado en OSGi, OpenHAB proporciona una arquitectura altamente modular, lo que permite
incluso agregar y/o quitar una funcionalidad en tiempo de ejecucin sin detener el servicio. OpenHAB le
proporciona al usuario diferentes interfaces web basadas en HTML, capaces de funcionar en cualquier
dispositivo mvil o de escritorio, as como aplicaciones nativas para iOS y Android. Adems, si es
necesario integrarlo con otros sistemas, puede interactuar con ellos mediante un interfaz de servicio REST
API, permitiendo el acceso en lectura a los elementos as como actualizaciones de su estado o el envo de
comandos hacia los dispositivos.
2.5.2.2 Canales de comunicacin en OpenHAB
OpenHAB tiene dos canales diferentes de comunicacin interna, un bus de eventos asncronos y un
repositorio de estados que puede ser consultado. El bus de eventos es el servicio de base de OpenHAB y
- 17 -
todos los paquetes que no requieren un comportamiento basado en estados deben usarlo para informar a
otros sobre los eventos y para ser actualizados por eventos externos. Todos los bindings de protocolo (los
cuales proporcionan el vnculo a los dispositivos reales) deben estar comunicndose a travs del bus de
eventos. El siguiente esquema muestra como los canales de comunicacin son usados:
- 18 -
3. ESPECIFICACIONES
El sistema desarrollado a lo largo de este proyecto le permite a un usuario controlar y/o supervisar, a
travs de internet, un interruptor conectado a una lmpara, un sensor de movimiento y una toma de
corriente con sensor integrado de consumo, dispositivos que se encuentran ubicados en una habitacin. A
continuacin el diagrama general del proyecto.
La informacin que se propaga a travs del sistema ser, por lo tanto, el estado de los dispositivos. La
Ilustracin 7 proporciona una visin general del sistema mientras que la Ilustracin 8 muestra con ms
detalle la interaccin real de los elementos de la solucin, que sern explicados en las secciones
siguientes:
Para definir las especificaciones del proyecto es pertinente dividir el sistema de domtica en sus
principales componentes:
Gateway.
Interfaz grfica.
Sensores y actuadores.
Base de datos.
- 19 -
3.1 Gateway
El Gateway es el dispositivo hardware que toma el papel de centro de control del sistema y que
corresponde al nodo central de la red de sensores y actuadores. En este dispositivo sern ejecutados el
framework OpenHAB y el motor de sincronizacin encargado de mantener alineada la informacin real, la
informacin en el servidor y los datos mostrados en la interfaz de usuario. Debido al rol que desempea,
ste debe permanecer encendido y corriendo durante todo el tiempo que se quiera controlar la habitacin.
3.1.1 Hardware
Las especificaciones hardware del gateway se encuentran resumidas en la siguiente tabla:
Especificacin Notas
Para garantizar la comunicacin entre el gateway y la red inalmbrica de sensores y actuadores ubicados
en la habitacin, es necesario que ste cuente con un adaptador que soporte el protocolo inalmbrico de
comunicacin usado, en este caso Z-Wave. Para tal fin se usa un adaptador USB cuyas especificaciones
detalladas se encuentran en la tabla siguiente:
Especificacin Notas [8]
3.1.2 Software
En la tabla a continuacin se encuentran referenciadas las especificaciones del software con el que debe
contar el gateway:
Especificacin Notas
- 20 -
3.1.3 Motor de sincronizacin
Las especificaciones del componente software que sirve como motor de sincronizacin entre las diferentes
partes del sistema se encuentran resumidas en la siguiente tabla:
Especificacin Notas
Lenguaje de desarrollo C
Especificacin Notas
Teniendo en cuenta que el usuario puede controlar y/o supervisar diferentes tipos de dispositivos
(interruptor, sensor de movimiento, consumo de un aparato), es importante tener formas claras de
distinguir los dispositivos en la interfaz grfica. De igual modo, suponiendo que el usuario final del
sistema ser una persona promedio, la interfaz grfica tiene interfaces dedicadas y diseadas
especficamente para diferentes tipos de dispositivos (computadores, tabletas, smartphones, etc.) con
distintos tamaos de pantalla.
En la tabla siguiente son especificados los widgets que representan un dispositivo en la interfaz grfica.
Cada uno de stos tiene dos diagramaciones dependiendo del tamao de pantalla, por lo tanto el nmero
de columnas en que se despliega el widget puede cambiar de acuerdo a la plataforma en que la interfaz es
utilizada.
- 21 -
Tamao de pantalla Nmero de columnas Diagramacin
Menor a 768 px 1
- 22 -
Las especificaciones tcnicas de este dispositivo se encuentran resumidas en la siguiente tabla:
Especificacin Notas [10]
Marca y referencia GE/Jasco Z-Wave Wireless Lighting Control On/Off Switch, 45609
Especificacin Notas
Nombre tesisdb
- 23 -
4. DESARROLLO DEL PROYECTO
4.1 Preparacin de la plataforma
Parte del diseo e implementacin del sistema fue establecer cules seran las caractersticas necesarias de
la plataforma hardware y software. Adems del proceso de seleccin del hardware y software, en esta
seccin se indican cuales fueron algunas de las configuraciones adicionales que se debieron realizar
durante el desarrollo del proyecto, esto con el fin de sealarle al lector los requerimientos totales de la
plataforma, que es la base del sistema de domtica.
En la seccin 4.1.1 se describen cules son las caractersticas del servidor que se us. Este servidor
pertenece a HeliconiaTech y el sistema aprovech las caractersticas de mismo, en especial el hecho de
que cuente con una IP pblica y un domino, lo que le otorga al usuario final la posibilidad de acceder a la
interfaz grfica del sistema de domtica desde cualquier lugar. El proceso de seleccin del ordenador de
placa reducida y las configuraciones necesarias para que sea apropiado para al sistema de domtica se
desarrollan en la seccin 4.1.2.
4.1.1 Caractersticas del servidor
El servidor que se utiliz en el proyecto cuenta con plataforma LAMP y est hospedado por Bitnami/AWS
de HeliconiaTech. El servidor tambin tiene un nombre de dominio pblico que est administrado por
GoDaddy.
Caracterstica Descripcin
LAMP es el acrnimo usado para denominar al conjunto de soluciones de servicios web que consiste de
los siguientes software: Linux, Apache, MySQL y PHP. Linux es el sistema operativo del servidor, al
momento del desarrollo de este proyecto el servidor tiene instalado la distribucin de Ubuntu nombrada en
la Tabla 11, ste se encuentra totalmente actualizado. Apache es el servidor web HTTP para la plataforma
Linux, es capaz de interpretar lenguajes de programacin de lado servidor, como por ejemplo: Perl,
Python y PHP. MySQL es un sistema de motor gestin de base de datos y fue el mdulo de mayor inters
para el desarrollo del proyecto. El objetivo de usar la base de datos en el servidor de HeliconiaTech fue el
de poder exportar el estado actual de los dispositivos a una ubicacin donde el usuario fuera capaz de
accederlos desde internet, esto implica caractersticas propias de un servidor web, como el dominio
pblico y un sistema de gestin de base datos.
En la seccin 4.5.1 se describe con mayor detalle las caractersticas de la base de datos usada para este
sistema de domtica, as como las funciones del sistema de gestin MySQL que se utilizaron. Respecto a
la configuracin, tema principal de esta seccin, solo falta mencionar que fueron necesarios ajustes de
lado servidor para permitir al Gateway exportar los datos del estado de los sensores y actuadores a la base
de datos, entre estos habilitar y abrir puertos del servidor y permisos de escritura y lectura a usuarios
externos a ste.
- 24 -
4.1.2 Ordenador de placa reducida (SBC)
Actualmente en el mercado se encuentra una gran variedad de ordenadores de placa reducida. La mayora
de los procesadores de los SBC estn basados en la arquitectura de procesadores ARM y algunos de ellos
ofrecen un mejor rendimiento y ms memoria que otros, algunos tienen una gran variedad de conectores,
mientras que otros solo tienen el mnimo necesario. Con el fin de elegir el SBC adecuado para este
proyecto, a continuacin se presenta una comparacin de los principales SBC actualmente disponibles.
4.1.2.1 Comparacin de ordenadores de placa reducida
El ordenador de placa reducida ms econmico es la RaspberryPi, mientras que el ms costoso es el Intel
NUC. La RaspberryPi tiene un consumo muy bajo de potencia lo cual es deseable en este proyecto, la
Beaglebone Board tambin presenta un consumo bajo pero su precio es casi 3 veces mayor que el de la
RaspberryPi, adems esta ltima tiene una capacidad de memoria RAM ms alta que la Beaglebone.
VIA
Beaglebone RaspberryPi B Intel NUC PandaBoard
APC
Frec. CPU (MHz) 720 700 1800 800 1200
Puerto VGA NO NO NO SI NO
Puerto Ethernet SI SI SI SI SI
Wi-Fi interno NO NO SI NO SI
Entradas USB
1 2 3 4 2
(2.0/3.0)
Pines GPIO SI SI NO NO SI
Tabla 12 Comparacin de Ordenadores de placa reducida [7]
- 25 -
Ilustracin 10 Ordenador de placa reducida RaspberryPi
Estas razones, combinadas con el precio, llevaron a elegir la RaspberryPi como el SBC para el desarrollo
de este proyecto.
Especificaciones:
CPU: procesador ARM1176JZF-S 700 MHz
GPU: VideoCore IV
RAM: 512 MB
Conectores: USB, HDMI, RCA, Jack de audio 3.5mm, 10/100 Ethernet, micro USB
Almacenamiento: tarjeta SD/MMC/SDIO
Nota sobre las limitaciones de la RaspberryPi
La RaspberryPi tiene dos puertos USB de una sola raz: todo el trfico de todos los dispositivos
conectados se canaliza por este bus, que opera a una velocidad mxima de 480Mbps. Dado que el
adaptador para protocolo de comunicacin inalmbrica se conectar utilizando el puerto USB la limitacin
a la velocidad de datos estara cerca de 35MB/s. En general no hay problemas con la conexin de
mltiples dispositivos USB de alta velocidad a la RaspberryPi.
4.1.3 Distribuciones de Linux disponibles para la RaspberryPi
Existe una gran variedad de distribuciones de Linux para la RaspberryPi. La primera distincin que se
hizo fue entre distribuciones de propsito general y de propsito concreto. Entre estas ltimas se destacan
algunas como Raspbmc, la cual permite convertir la RaspberryPi en un media center, o arkOS, que ofrece
herramientas para crear y administrar un servidor cloud privado de archivos. Para este proyecto fue de
inters escoger una distribucin de propsito general, esto debido a que stas son ms flexibles en trmino
de posibles configuraciones, cualidad importante durante proyectos de investigacin y desarrollo.
Versin de Fecha de la ltima
Basado en GUI
Kernel versin
PIDORA Fedora Remix 3.12.23 2014-09-09 Yes
- 26 -
4.1.3.1 Seleccin de la distribucin Raspbian
Raspbian es un sistema operativo (SO) de libre distribucin basado en Debian y optimizado para la
RaspberryPi. Esta distribucin provee ms de 35000 paquetes de software optimizados para ejecutar en la
RaspberryPi. Este SO cuenta con una de las ms grandes comunidades de desarrollo entre todas las
distribuciones para la RaspberryPi; esto fue un importante factor al momento de escoger esta distribucin,
ya que gracias a la constante implementacin, el sistema posee una gran estabilidad y cualquier problema
que se genere es rpidamente detectado por el equipo de desarrollo.
4.1.3.2 Instalacin y configuracin de Raspbian
La instalacin del sistema operativo Raspbian se realiz en una tarjeta SD (clase 6, 8Gb) a partir del
instalador NOOBS. Una vez el sistema operativo se instal fueron necesarias algunas configuraciones
adicionales.
Los ajustes predeterminados de ingreso son:
Username: pi
Password: raspberry
Nota: En la disposicin final del proyecto esta informacin fue cambiada.
Una vez disponible la interfaz de lnea de comando es posible conectar un monitor por HDMI e iniciar la
Raspbian GUI con el comando startx, sin embargo, esto no es obligatorio ya que la mayora de la
configuracin se puede realizar por consola a travs de Secure Shell (SSH); este servicio inicia
automticamente con el sistema operativo.
Lo primero que se debi garantizar fue la conexin a internet, que puede ser va Ethernet o Wi-Fi, usando
el adaptador USB proporcionado. Una vez se comprob la conexin a internet, ya sea va el comando ping
o el comando ifconfig, se continu actualizando el sistema operativo e instalando JAVA 1.71 con los
comandos indicados en el ANEXO 2.
El motor de sincronizacin requiere dos bibliotecas que no estn incluidas en esta distribucin de
Raspbian: libmysql y libcurl. Los pasos detallados para instalar estas bibliotecas se encuentran en el
ANEXO 2 de este documento.
4.2 OpenHAB
A la fecha, la distribucin oficial de OpenHAB es la 1.5.1 y se puede descargar en la pgina oficial
(http://www.openhab.org/) junto a los addons (bindings) que fueron utilizados en este proyecto.
- 27 -
Para completar la instalacin fue suficiente descomprimir el archivo descargado distribution-1.5.1-
runtime.zip en una carpeta a eleccin, que en este caso se nombr openhab. Despus de realizar este
procedimiento, al interno de la carpeta mencionada se encuentra la serie de archivos y carpetas mostrada
en la Ilustracin 11.
El siguiente paso consisti en copiar los addons utilizados para el desarrollo de este proyecto en la carpeta
addons del directorio runtime; stos se encuentran en el archivo descargado denominado distribution-
1.5.1-addons.zip.
Los addons que se utilizaron fueron:
org.openhab.binding.zwave-1.5.1.jar
org.openhab.persistence.mysql-1.5.1.jar
El software de administracin para el framework OpenHAB (HABmin v.0.1.3) no se encuentra en los
addons de la distribucin oficial; se puede descargar en su pgina oficial:
https://github.com/cdjackson/HABmin.
4.2.1 Configuracin de OpenHAB
La carpeta de configuracin de OpenHAB, de nombre configurations, contiene los siguientes archivos y
carpetas:
El nombre del archivo de configuracin de OpenHAB es openhab.cfg. Este archivo contiene los
principales parmetros de configuracin tanto del framework como de los addons que se utilizaron en el
sistema. En el ANEXO 3 se encuentran los cambios que se realizaron a este archivo, los cuales consisten
principalmente en configurar la persistencia de la informacin relativa a los dispositivos en una base de
datos externa e identificar el dispositivo Linux donde se encuentra el adaptador USB de Z-Wave en la
RaspberryPi.
La mayora de los dems archivos y carpetas son usados por servicios de OpenHAB que no fueron usados
durante el desarrollo de este proyecto, como es el caso de la interfaz grfica nativa de OpenHAB o el uso
de reglas automticas que modifican un item de acuerdo a eventos predeterminados. Otras funcionalidades
de OpenHAB tienen gran potencial en desarrollos futuros de este proyecto, como por ejemplo: las reglas,
que otorgan la posibilidad de definir si otros items o bindings se modifican cuando algn comando en
particular se detecta en el bus de eventos; o los scripts, que permiten escribir cdigo que analice los
estados de los items.
- 28 -
Carpeta/Archivo Descripcin
Ac es posible definir a travs de archivos .map una traduccin para los estados
retornados por los diferentes dispositivos. Por ejemplo, se desea que para un
transform
interruptor encendido valor que se muestra en la interfaz grfica de OpenHAB sea
ENCENDIDO en vez de ON.
El sitemap corresponde a la distribucin lgica y grfica de las interfaces de usuario
sitemaps nativas de OpenHAB. Esta carpeta contiene archivos con extensin .sitemap, los
cuales contienen descripciones de la diagramacin de los items en la interfaz.
Un script es la manera de crear cdigo reutilizable para las reglas. Un archivo .script
scripts contiene instrucciones que pueden ser utilizadas simplemente incluyendo este archivo
en la lgica de la regla.
Con las reglas es posible definir respuestas automatizadas a diferentes eventos, como
rules cambios es el estado de algn dispositivo, condiciones de tiempo o cambios en el
sistema. Las reglas son escritas en un pseudo lenguaje similar a JAVA.
Esta carpeta contiene archivos con extensin .persist en los que es posible configurar
persistence
como se desea almacenar la historia del estado de los items.
Contiene archivos .item que son usados para definir los items. Un item es un objeto
items que se puede leer o escribir con el fin de interactuar con ellos, pueden estar
vinculados a un dispositivo real o corresponder a dispositivos virtuales.
En el archivo users.cfg se configuran los nombres de usuario y sus contraseas, como
users.cfg
opcin de seguridad para ingresar a la interfaz grfica de OpenHAB
Aquellas opciones que no se encuentren definidas en el archivo principal de
openhab_deafult.cfg
configuracin, openhab.cfg, tienen en este archivo su valor por defecto
Es el archivo principal de configuracin de OpenHAB. Especifica las opciones
openhab.cgf
generales del sistema as como parmetros para diferentes binddings/addons.
logback_default.xml Contiene las opciones por defecto de la verbosidad del log.
- 29 -
En general los items se definen de la siguiente manera:
itemtype itemname ["labeltext"] [<iconname>] [(group1, group2, ...)] [{bindingconfig}] [12]
En este proyecto los campos usados en la definicin de un item tienen son descritos en la Tabla 15.
El archivo demo.items, que se encuentra en la carpeta items de la configuracin de OpenHAB, contiene la
definicin de los items del sistema de domtica.
Number Energy_Consumo_Habitacion "Energy_Consumo_Habitacion [%.1f W]" <chart>
(Room) {zwave="4:1:command=meter"}
Contact Movement_Movimiento_Habitacion "Movement_Movimiento_Habitacion [%S]"
<chart> (Room) {zwave="3:1:command=sensor_binary,respond_to_basic=TRUE"}
Number Temperature_Temperatura_Habitacion Temperature_Temperatura_Habitacion
[%.1f F]" <temperature> (Room)
{zwave="3:1:command=sensor_multilevel,sensor_type=1,sensor_scale=0"}
Number Humidity_Humedad_Habitacion "Humidity_Humedad_Habitacion [%.1f %%]"
<wind> (Room) {zwave="3:1:command=sensor_multilevel,sensor_type=5"}
Number Luminance_Luminancia_Habitacion "Luminance_Luminancia_Habitacion [%.1f
lux]" <chart> (Room) {zwave="3:1:command=sensor_multilevel,sensor_type=3" }
Switch Switch_Luz_Habitacion "Switch_Luz_Habitacion" <light> (Room)
{zwave="5:1:command=switch_binary"}
4.2.3 Codificacin de los nombres de los items
Para OpenHAB el nombre que tengan los distintos items no tiene ningn significado, pero ya que esta
informacin va a estar disponible para la interfaz grfica a travs de la base de datos, fue conveniente
incluir en estos la mayor cantidad de informacin posible. Con esto en cuenta, el nombre de un item tiene
la siguiente codificacin:
type_name_group
En donde cada campo est descrito de la siguiente manera.
Es de vital importancia indicar que ninguno de los campos puede contener el carcter _ debido a que
ste se utiliza como token de separacin al decodificar esta informacin en la interfaz grfica.
El campo group describe el espacio al que pertenece el dispositivo, que para este proyecto es la
habitacin. Se implement para futuras iteraciones de la interfaz grfica que posean la posibilidad de
dividir los dispositivos por espacios residenciales.
4.2.4 Configuracin de la persistencia
Para configurar la persistencia de los datos recolectados por los diferentes dispositivos del sistema fue
necesario realizar los cambios al archivo openhab.cfg indicados en el ANEXO 3. Una vez definidos cules
son los parmetros de conexin a la base de datos, el siguiente paso consisti en configurar la estrategia, o
estrategias, que usa el servicio de persistencia, lo cual se realiz en el archivo mysql.persist ubicado en la
carpeta persistence, Ilustracin 12.
En este proyecto se usaron estrategias estticas de persistencia definidas en OpenHAB. Especficamente
se us everyChange (Nota: Es posible definir las estrategias con expresiones de tipo cron).
En el ANEXO 3 se encuentra el contenido del archivo mysql.persist, que define las estrategias usadas para
cada item.
- 30 -
4.3 Protocolo inalmbrico
Para el sistema de domtica desarrollado en este documento se decidi que los sensores y actuadores
comuniquen su estado de manera inalmbrica. Esto es importante debido a que en el momento en que se
quisiera implementar el sistema en un ambiente real y de manera permanente, una directiva esencial de
este proyecto, la instalacin se convierte en un proceso ms simple, debido a que no se necesita ninguna
clase de cableado estructural.
En la actualidad es posible encontrar sensores y actuadores que usan una gran variedad de protocolos
inalmbricos, desde los ms tradicionales como Wi-Fi y Bluetooth (seccin 4.3.1) hasta los orientados a
domtica (seccin 4.3.2).
4.3.1 Sistemas inalmbricos tradicionales
Wi-Fi y Bluetooth son protocolos tradicionales con amplia distribucin y gran soporte, se usan
principalmente para la transmisin de datos con alta tasa de transmisin.
Tamao de la red 32 7
Wi-Fi tiene excelente velocidad y gran rango de transmisin, pero el enrutamiento se hace desde un punto
central (servidor) lo cual limita la ubicacin de los dispositivos alrededor de ste, adems Wi-Fi no est
diseado como un protocolo de bajo consumo lo cual no es lo ideal para dispositivos que funcionen a
batera. Ahora, mientras Bluetooth es conveniente por su bajo consumo, su principal problema es que el
tamao de red est limitado a 7 dispositivos.
Es importante recalcar que aun cuando ninguna de estas razones hacen imposible la realizacin de este
proyecto en especfico, si limitan sus desarrollos futuros.
4.3.2 ZigBee y Z-Wave
Z-Wave y ZigBee son tecnologas de comunicacin inalmbrica basadas en chip que permiten transmitir y
recibir pequeas instrucciones (seales de comando). Los chips Z-Wave y ZigBee se utilizan para crear
sistemas inalmbricos que controlan funciones de iluminacin, seguridad, acceso, sensores, alarmas y
comunicacin entre dispositivos residenciales o industriales. Los chips de ambas tecnologas son de muy
bajo consumo de energa, por lo que pueden funcionar con base en pilas ordinarias en intervalos de tiempo
que alcanzan el orden de aos.
- 31 -
Las redes basadas en estas tecnologas son de topologa de tipo malla (mesh), esto quiere decir que no
dependen de un punto central de control (un servidor), ya que la plataforma de conectividad se establece a
partir de dispositivos compatibles que se enlazan entre s, como se muestra en la Ilustracin 13.
ZigBee Z-Wave
- 32 -
Sin embargo, realizar el pairing manual con los dispositivos es un proceso que no cuenta con ninguna
retroalimentacin, por lo tanto es difcil determinar si el dispositivo se agreg o no a la red. Es por esto
que se incluy en el sistema el addon administrador denominado HABmin, que provee, entre otros
servicios, la posibilidad de configurar la red Z-Wave, es decir, incluir y excluir dispositivos, adems de
supervisar el estado de la red en tiempo real.
De acuerdo a la pgina web oficial de HABmin [13], al iniciar, la interfaz deber mostrar solamente la
lista de los nodos y en el caso en el cual el tipo de nodo es encontrado en la base de datos de productos de
HABmin, se listarn tambin su fabricante y el tipo de producto para cada nodo.
El pequeo indicador junto al nombre del dispositivo puede ser gris, amarillo, verde o rojo. Si es gris,
entonces ste indica que el dispositivo no ha completado su inicializacin. Si es rojo, el nodo est
MUERTO, y si es verde, el nodo est VIVO. Si es amarillo, el nodo se encuentra operando de manera
correcta, sin embargo, ha estado muerto en las ltimas 24 horas o tiene un contador de reintentos de
arranque mayor al 5%. Se seala que para los dispositivos alimentados a batera puede tomar algn tiempo
completar su inicializacin, por lo tanto estos dispositivos pueden permanecer con su indicador de color
gris por un largo tiempo, tpicamente algunas horas dependiendo de la configuracin de su intervalo de
wake up.
- 33 -
El quin se refiere a los dispositivos a los cuales se le entregarn los datos. Este dispositivo de destino
no es necesariamente el controlador Z-Wave. Tal comportamiento se puede especificar configurando
grupos en cada dispositivo, donde por ejemplo, un sensor de presencia podra activar un interruptor sin
que el comando pasase por el controlador.
OpenHAB lee estos parmetros de cada dispositivo como un archivo XML y los almacena en la carpeta
etc/zwave/1.5 del runtime.
Estos parmetros se pueden modificar con HABmin a travs de la interfaz de configuracin Z-Wave
(Ilustracin 14), basta con expandir el nodo y aqu se da la posibilidad de modificarlos.
4.4.2 Aeon Labs Aeotec Z-Wave Multisensor
El multisensor de Aeon Labs es capaz de medir temperatura, humedad y luminancia, adems de detectar
movimiento a travs de su sensor PIR. Es alimentado por 4 bateras AAA o por USB. Cuando se ubica
apoyado en una pared, el rea de deteccin corresponde al siguiente diagrama:
El sensor PIR transmite un command class de tipo sensor_binary, con valor CLOSED cuando no hay
movimiento y OPEN cuando detecta movimiento. Este valor es mantenido la cantidad de segundos
especificada por el parmetro On time, y luego regresa a CLOSED hasta que se vuelva a disparar.
La temperatura, la humedad y la luminancia se miden respectivamente en, grados Fahrenheit, humedad
relativa y lux, donde cada una de estas medidas se transmite con un command class de tipo
sensor_multilevel. Es posible configurar 3 maneras distintas de trasmitir estas medidas a travs de los
parmetros 101, 102 y 103. Estos parmetros corresponden a la representacin decimal de un nmero
binario de 8 bits, donde los 3 bits ms significativos indican qu medidas se quieren transmitir, de la
siguiente manera: bit7, luminancia; bit6, humedad; y bit5, temperatura [14]. Ahora, una vez definidas qu
medidas se quieren transmitir, solo falta definir cundo se quieren transmitir. sta es la funcin de los
parmetros 111, 112 y 113, los cuales definen este intervalo en segundos.
Entonces, por ejemplo, si el parmetro 101 tiene un valor decimal de 160, binario 10100000, y el
parmetro 111 tiene un valor de 60, esto quiere decir que el multisensor transmitir cada 60 segundos
comandos sensor_multilevel nicamente con los valores de luminancia y temperatura medidos en ese
instante.
- 34 -
El multisensor usado en el sistema de domtica tiene la siguiente configuracin:
- 35 -
4.4.4 Jasco Z-Wave Lighting Control On/Off Switch, (45609)
Este interruptor ON/OFF (45609) de Jasco/GE puede controlar cualquier tipo de iluminacin. Es capaz de
manejar cargas incandescentes de mximo 600 W o motores de HP [11]. Este interruptor tambin
funciona como repetidor Z-wave, permitiendo as extender la cobertura de la red. Es importante tener en
cuenta que el lugar de instalacin elctrica necesita tener tanto neutro como fase.
A diferencia de los dems dispositivos para lograr el funcionamiento del interruptor 45609, no fue
necesario modificar sus parmetros Z-Wave, fue suficiente con incluirlo a la red e inmediatamente
OpenHAB reconoci sus comandos.
La primera de estas secciones es la base de datos, que almacena los estados de los dispositivos, usando la
persistencia de OpenHAB y que guarda adems los comandos que el usuario realiz para operar el
interruptor en la tabla switch_next_state. La segunda seccin es el Gateway, componente hardware donde
se ejecuta el motor de sincronizacin que mantiene la coherencia entre el estado del interruptor y los
comandos que el usuario realiza para operarlo y donde tambin est instalado y configurado OpenHAB,
que es el encargado de administrar los dispositivos Z-Wave. La ltima seccin que conforma la
arquitectura es la interfaz grfica. En sta el usuario puede supervisar el estado de los sensores y operar el
interruptor. Tiene tres componentes bsicos: el HTML, el CSS y el JavaScript, donde este ltimo que
encarga de comunicar los estados entre la base de datos y la interfaz grfica usando el mtodo AJAX.
4.5.1 Bases de datos
La creacin de una base de datos hospedada en el servidor de HeliconiaTech fue necesaria para que los
estados de los dispositivos estuvieran disponibles a travs de Internet. Si bien es cierto que es posible usar
tcnicas como NAT traversal, que establecen y mantienen conexiones abiertas con dispositivos que se
encuentran en una red local y usarlas para acceder a la informacin de los estados directamente en el
Gateway, este tipo de tcnicas requieren configuraciones adicionales de la conexin a internet (router) que
solo puede hacer el ISP, problema que no se tiene con una arquitectura que use algn mecanismo de
sincronizacin en un servidor.
- 36 -
Otra ventaja de exportar la informacin de los dispositivos a una base de datos alojada en un servidor
externo, fue la posibilidad analizar estos datos y generar estadsticas y grficas. Este tema se describe en
ms detalle en la seccin 4.5.3.3.
La base de datos es de tipo MySQL, un poderoso sistema de gestin de base de datos, multihilo,
multiusuario y de cdigo abierto, que es especialmente popular al ser parte de la plataforma LAMP.
Actualmente MySQL es propiedad de Oracle.
La base de datos del proyecto tiene como nombre tesisdb y se implement con la siguiente estructura:
De la Ilustracin 20 las tablas se pueden dividir en dos categoras: las que conciernen a la persistencia de
OpenHAB (items, item1, item2, item3) y la tabla switch_next_state que consultada por el motor de
sincronizacin.
4.5.1.1 Persistencia MySQL de OpenHAB
La persistencia de OpenHAB exporta los estados de los dispositivos desde el Gateway hacia el servidor de
HeliconiaTech. La estrategia usada para este proceso es everyChange, donde cada vez que el estado de los
dispositivos cambie se va a agregar una nueva entrada a la base de datos. El proceso de configuracin de
esta persistencia fue descrito la seccin 4.2.4.
OpenHAB implementa la persistencia con dos tipos de tablas: items e items#. La primera contiene la
informacin de todos los items que tienen persistencia MySQL configurada y tiene las siguientes
columnas:
El estado de actual de los dispositivos se almacena en las tablas de tipo item#, donde el nmero (#) en el
nombre de estas tablas corresponde a ItemId en la Tabla 19.
- 37 -
4.5.1.2 Tabla switch_next_state
Esta tabla tiene la funcin de almacenar los comandos que el usuario realiz para operar el interruptor.
Cada fila de la tabla es un comando y almacena tanto aquellos que ya se ejecutaron como los que estn
pendientes. El modo de diferenciar si un comando fue ejecutado es a travs del valor de la columna done,
donde 1 indica que ste ya se ejecut, 0 si est pendiente.
La tabla switch_next_state se implement con una estructura simple, lo suficientemente genrica para
soportar cualquier comando a cualquier item, lo cual se traduce en la capacidad de manejar una gran
cantidad de actuadores, an si este proyecto solo usa uno, sin embargo, se decidi esta implementacin
con el objetivo de dejar esta funcionalidad habilitada para desarrollos futuros.
Los campos de la tabla switch_next_state fueron definidos como lo muestra la Tabla 21:
- 38 -
4.5.2.1 Entorno de programacin
Para crear un entorno de programacin de tipo multi-plataforma se us la estructura estndar de una
aplicacin o biblioteca en Linux, es decir, se usaron las herramientas autotools que, en modo automtico,
generan una serie de archivos para la gestin de dependencias entre los componentes del cdigo fuente de
un programa. Estas dependencias se declararon en el archivo makefile.am ubicado en la carpeta src. La
siguiente es la organizacin del entorno de programacin:
Ilustracin 21 IZQ: Organizacin entorno de programacin del motor de sincronizacin; DER: Fuente del motor de sincronizacin
La mayora de estos archivos y carpetas son autogeneradas por la herramienta autotools, con excepcin de
la carpeta src que en donde se encuentran los archivos fuente del software, sync_engine.c y http_request.c,
y sus respectivos headers, sync_engine.h y http_request.h.
El archivo makefile.am, al interior de la carpeta src (ANEXO 4), contiene las dependencias necesarias
para compilar el cdigo, as como la ubicacin de las bibliotecas especiales instaladas en la seccin
4.1.3.2. En este archivo se especifica al archivo SyncEngine como el binario de salida.
Incluidas en el archivo de header sync_engine.h y http_request.h (ANEXO 4) se encuentran definidas las
bibliotecas usadas por este software, las que se describen en la siguiente tabla:
Bibliotecas Descripcin
- 39 -
Qu es una API?
API, abreviacin de Application Program Interface, es un conjunto de rutinas, protocolos y herramientas
para la construccin de aplicaciones software. La API especifica cmo interactuar con el software y sus
componentes, lo que significa que una compaa de software publica su API al pblico con el fin de que
los desarrolladores puedan disear productos que funcionan con su servicio.
MySQL C API
MySQL C API, es una API basada en C con la cual aplicaciones de cliente escritas en C pueden
comunicarse con un servidor MySQL. Las C API proporcionan acceso de bajo nivel al protocolo MySQL
y permite a los programas en C acceder a los contenidos de la base de datos. En este proyecto se utiliz la
versin con la biblioteca libmysqlclient, la cual se utiliza para aplicaciones que se comunican a travs de
una conexin de red a un servidor independiente.
4.5.2.2 sync_engine.c
El archivo sync_engine.c contiene la funcin main del software creado. En ste, con el fin de poder leer
las entradas de tabla swich_next_state, se us la API de MySQL para C. Esta API necesita una
configuracin previa, la cual se describe en la seccin 4.1.3.2. Las variables usadas son las siguientes:
res MYSQL_RES Estructura que contiene las filas del resultado de una query. [15]
Antes de ejecutar cualquier funcin de la MySQL API para solicitar informacin, se establece la conexin
con el servidor a travs de la funcin mysql_real_connect. Esta funcin necesita la informacin del
servidor, del usuario y de la base de datos. Si la conexin no es correcta, el programa se detiene y el error
se muestra en standard output.
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)){
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);}
Una vez establecida la conexin es posible empezar el polling para mantener la coherencia entre el estado
del interruptor y los comandos que el usuario realiz para operar el interruptor. El polling tiene un
intervalo time_loop, pero contina nicamente mientras la seal Crtl+C no sea detectada, es decir, si
keppRunning es 1.
- 40 -
/* EVERY time_loop SECONDS CHECK FOR UPDATES */
while (keepRunning){
/* SLEEP UNTIL NEXT CICLE */
sleep (time_loop);
}
De la tabla switch_next_state se quiere obtener cules son los comandos operados por el usuario que estn
pendientes por ser ejecutados, ordenados del ms reciente al ms antiguo. Esto se logra con la siguiente
query:
SELECT * FROM switch_next_state WHERE done=0 ORDER BY id DESC
La funcin de la API que ejecuta esta query es mysql_query, si la funcin es exitosa el resultado se
almacena en la variable res, en cambio si no es exitosa el programa se detiene y el error se muestra en
standard output.
/* CREATE THE QUERY IN STRING */
sprintf(sql_query,"SELECT * FROM switch_next_state WHERE done=0 ORDER BY
id DESC");
if (mysql_query(conn, sql_query))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
A este punto, el ltimo comando pendiente por ejecutar se encuentra en la primera fila de la estructura res.
Estas filas se pueden leer con la funcin mysql_fetch_row(res) que retorna la siguiente fila de un resultado
res, es decir, cuando se llama por primera vez retorna la primera fila, si se llama una segunda vez retorna
la segunda fila, etc. Si el resultado est vaco mysql_fetch_row retorna NULL. El siguiente paso por lo
tanto, es obtener el ltimo comando pendiente por ejecutar, almacenarlo en la variable row y comprobar
que el resultado no este vaco.
/* VERIFIED THAT RES IS NOT EMPTY*/
if ((row = mysql_fetch_row(res)) != NULL)
{
}
Si el resultado no est vaco, el ltimo comando pendiente por ejecutar estar almacenado en row. Vale la
pena recordar que row es un arreglo de strings, donde cada posicin del arreglo corresponde a una
columna, ahora, de acuerdo a la Tabla 21, esto quiere decir que row[2] corresponde a la columna
next_state, y row[3] corresponde al nombre del item sobre el cual se quiere ejecutar el comando. El
siguiente paso es entonces enviar a OpenHAB el comando pendiente. Esto se hace a travs de la funcin
POST_data, la cual se encuentra en el fichero http_request.c y que se desarrollar en la siguiente seccin.
/* CONNECT TO THE REST API AND SEND THE NEWER COMMAND*/
if (strncmp(row[2], "ON", 2) == 0){
res_post = POST_data("ON",row[3]);
if (res_post != -1) {
DEBUG("Prendio");
}
}
- 41 -
La funcin POST_data retorna 0 si el envo fue exitoso o -1 si hubo algn error, y este valor se
almacena en la variable res_post. Para asegurar que OpenHAB reciba el mensaje, el comando no se da por
ejecutado (done=1 en switch_next_state) si res_post no es igual a 0. Si en cambio res_post es igual a 0, la
query que establece como ejecutados los comandos es la siguiente:
UPDATE switch_next_state SET done=1 WHERE id<= <send command id>
Donde el id del comando que se envi a OpenHAB es row[0].
/* UPDATE THE REST OF THE COMMANDS TO DONE=1 IF POST IS A SUCCESS*/
if (res_post == 0){
sprintf(sql_query,"UPDATE switch_next_state SET done=1 WHERE
id<=%s", row[0]);
DEBUG(sql_query);
if (mysql_query(conn, sql_query))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res_post = -1;
}
Lo ltimo que hay que realizar, antes de reiniciar el polling, es liberar el resultado con la funcin
mysql_free_result sobre la variable res.
Nota: El cdigo completo se encuentra en el ANEXO 4.
OpenHAB REST API
La REST API de OpenHAB sirve para diferentes propsitos: puede ser utilizada para integrar OpenHAB
con otro sistema, ya que permite el acceso a los items y sus estados, con permisos de lectura y escritura y
adems da acceso al sitemap, por lo que es la interfaz de comunicacin con el framework a ser utilizada
por usuarios remotos, como es el caso de este proyecto. Esto hace posible implementar una visualizacin
completamente independiente a la de OpenHAB. La URL de entrada para la REST API es:
http://localhost:8080/rest/.
cURL Linux
cURL es un paquete de software que consiste en herramientas de lneas de comando y una biblioteca para
la trasferencia de datos utilizando la sintaxis de URL. En este proyecto se usa para realizar un POST
HTTP.
4.5.2.3 http_request.c
En este archivo se encuentra la funcin POST_data usada en sync_engine.c. Esta funcin le comunica a la
REST API de OpenHAB un comando asociado a un item travs de un POST HTTP. Para lograr esto es
necesario usar la biblioteca libcurl, que requiere la configuracin descrita en la seccin 4.1.3.2.
Las variables usadas en este cdigo son:
- 42 -
La funcin POST_data recibe dos variables: itemname, el nombre del item; y data, el comando.
Antes de poder llamar a cualquier funcin de la biblioteca curl.h es necesario inicializar el handler.
curl = curl_easy_init();
La funcin curl_easy_setopt permite configurar el handle curl una opcin a la vez, y retorna un
CURLcode que informa si la configuracin fue exitosa.
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter) [16]
El primer parmetro es el handle a configurar, el segundo es la opcin a configurar y el tercero es el
parmetro con el que se va a configurar la opcin. Para el handle se configuraron 3 opciones la URL, el
mtodo HTTP y la informacin.
/* Set the URL */
sprintf(url_to_post,"http://localhost:8080/rest/items/%s",itemname);
curl_easy_setopt(curl, CURLOPT_URL, url_to_post);
Una vez configurado el handle se realiza la peticin con la funcin curl_easy_perform y se almacena la
respuesta de la funcin en res. Por ltimo se evala si la respuesta es CURL_OK, si es diferente ocurri un
error y la funcin POST_data retorna -1, de lo contrario retorna 0.
/* Check for errors */
if(res != CURLE_OK)
{
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
return -1;
}
/* Cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
- 43 -
El aspecto visual, tratado en la seccin 4.5.3.2, tiene un papel muy importante a la hora de desplegar
informacin. En una diagramacin congestionada no es fcil distinguir qu informacin es importante o
con qu objetos se puede interactuar, de tal manera que caractersticas como paleta de colores,
retroalimentacin a las acciones del usuario y sets de conos, ganan gran importancia. Todo esto posible
usando CSS, un lenguaje usado para definir el aspecto de un documento HTML.
En lo que respecta a las funcionalidades tcnicas de la interfaz grfica, esta fue concebida para que fuera
eficaz en futuros desarrollos de este proyecto. Esto implic que el cdigo fuera paramtrico en la mayor
cantidad de casos posibles, de esta manera no se limita a las especificaciones del sistema ac desarrollado,
expandiendo las posibilidades a ms dispositivos o a configuraciones de dispositivos ubicadas en ms de
un espacio.
El despliegue de grficas con estadsticas fue una caracterstica nueva que no era parte de la propuesta
inicial. Durante el desarrollo del proyecto se identific que era posible generarlas a partir de los estados de
los dispositivos almacenados en la base de datos. Dado que tal informacin ya estaba disponible, bast
usarla como se explica en la seccin 4.5.3.3. La herramienta escogida para esto fue la biblioteca
JavaScript Flot, basada en JQuery y enfocada en el trazo de grficas.
Por ltimo, como en el caso del motor de sincronizacin, se estableci un polling que lee los estados de
los dispositivos en la base de datos cada segundo. Con esto es posible supervisar los sensores en tiempo
real sin necesidad de recargar la interfaz grfica. Para lograr esto fue necesario usar la tcnica de
desarrollo web, AJAX.
Nota: El cdigo completo de la interfaz grfica puede ser consultado en el ANEXO 5.
4.5.3.1 Ambiente de desarrollo
En el servidor de HeliconiaTech se encuentran las siguientes carpetas usadas durante el diseo e
implementacin de la interfaz grfica.
Las carpetas icons e images, contienen las imgenes usadas por la interfaz. En images se localizan las
imgenes representativas de los dispositivos. En la carpeta javascripts estn ubicados todos los scripts
utilizados, varios de los cuales son bibliotecas JavaScript importadas para la implementacin de
funcionalidades especficas. En php_includes estn el cdigo PHP que se llama continuamente, como la
conexin a la base de datos. stylessheets contiene los archivos CSS que definen el aspecto de la pgina
web. index.php es el archivo principal de la interfaz grfica donde se implement la estructura HTML
bsica y las llamadas a los principales scripts.
4.5.3.2 Aspecto visual
La interfaz de usuario se implement con la finalidad de que fuera clara y sencilla. El usuario no tiene que
hacer ms de 2 clics para realizar cualquier accin. sta es adems completamente funcional en
smartphones y tiene caractersticas familiares para los usuarios de estos dispositivos, como el cono de
triple barra (), que es ampliamente reconocido como el acceso a un men.
- 44 -
El aspecto visual se configur usando principalmente CSS, un lenguaje usado para definir la presentacin
de las pginas web. La sintaxis de CSS es relativamente simple: primero se definen uno o varios selectores
que especifican que elementos se vern afectados y a continuacin se declara como se afecta el estilo de
estos elementos, siguiendo el formato propiedad:valor;. As que por ejemplo, el siguiente cdigo fue
usado para establecer el mximo ancho (propiedad) a 62.5em (valor) para los elementos de clase ui-
listview, contenidos en el elemento room_canvas (selector).
#room_canvas .ui-listview {
max-width: 62.5em;
}
La paleta de colores que se us fue la oficial de HeliconiaTech, esta consiste de los siguientes colores en
formato hexadecimal: #ed275c (rosado), #8eba3e (verde) y #ababab (gris). El rosado est asignado a los
elementos con los que el usuario interacta, mientras que el verde identifica elementos o estados.
Las acciones del usuario estn retroalimentadas con efectos de volumen y de color. Un ejemplo de esto se
puede verificar cuando el usuario posiciona el cursor sobre un widget, el cual aparentemente se hunde
en la pantalla. Esta accin se realiz usando el selector li, junto a su pseudo-clase hover y la propiedad
CSS box-shadow.
4.5.3.3 Estructura
La interfaz grfica se divide principalmente en tres elementos HTML: el men, que le permite al usuario
navegar entre las posibles pginas; la pgina Home, que despliega la informacin de los dispositivos y le
permite operarlos; y la pgina Stats, que le informa al usuario los estados recientes de los dispositivos a
travs de una representacin grfica.
- 45 -
La siguiente ilustracin muestra la interfaz grfica en su diagramacin para pantallas grandes y resalta la
ubicacin del men de navegacin y de las pginas.
Men de navegacin
Con el men de navegacin el usuario puede escoger qu pgina desea visualizar. Las posibles pginas
son: Home y Stats. Para la apariencia de la barra de navegacin se utiliz el plugin de JavaScript
RESPONSIVE NAV (http://responsive-nav.com/). Este plugin no necesita bibliotecas y soporta distintos
tamaos de pantalla. La seccin 4.5.3.4 describe cmo el men es capaz de adaptarse a distintos
dispositivos.
El men de navegacin tiene la siguiente estructura HTML:
<div role="navigation" id="nav" class="nav-collapse closed" aria-hidden="false"
style="-webkit-transition: max-height 250ms; transition: max-height 250ms; position:
relative;">
<ul>
<li class="active"><a id ="home_menu" href="#">Home</a></li>
<li><a id ="stats_menu" href="#">Stats</a></li>
</ul>
</div>
<a href="#nav" id="toggle" aria-hidden="true">Menu</a>
- 46 -
La estructura HTML de cada widget es la siguiente:
<div class="widgetcont">
//Aca se genera el cono
<img src="images/<'device type'>.png" class="ui-li-thumb deviceIcon <'device
name'>" data-itemid="<'item id'>" id="<'device name'>$icon">
//Aca se genera el nombre
<h2 class="widgetname"><'device name'></h2>
//Aca se genera el estado
<div class="ui-li-aside li-aside-btn">
<div class="deviceText ui-li-aside" data-itemid="<'item id'>"
id="<'device name'>$UPD">
N/A
</div>
</div>
</div>
Es importante mencionar que para un cono, los archivos de imagen tienen una codificacin como la
siguiente: tipo_de_dispositvo-estado.png. Estos archivos se encuentran en la carpeta images del ambiente
de desarrollo.
El widget responde en tiempo real a los cambios de estado del dispositivo. Sin embargo, para el cono esto
es posible nicamente en dispositivos con una cantidad finita de estados, ya que cada estado requiere una
imagen individual.
Estos cambios en tiempo real se implementaron usando la biblioteca de JavaScript JQuery. sta contiene
mtodos que responden a eventos HTML y permiten manipulacin de CSS, adems implementa funciones
con las cuales es posible escribir una sola lnea de cdigo para realizar tareas que requieren muchas lneas
de JavaScript regular.
La sintaxis de JQuery esta especficamente diseada para seleccionar elementos HTML y realizar una
accin sobre estos elementos. La sintaxis bsica de JQuery tiene la siguiente forma:
$(<selector>).<accin>()
El signo $ especifica que sta es una sintaxis JQuery, el selector especifica los elementos HTML, y la
accin es la funcin JQuery que se va a realizar sobre los elementos. Con JQuery es posible definir
acciones que se disparen nicamente con un evento HTML (onclick, onload, onmouseover, etc.)
Uno de los eventos HTML ms importantes en este proyecto es ready. Este evento indica que el
navegador ha cargado completamente el documento, ste es el momento ms recomendado para empezar a
ejecutar funciones.
$(document).ready(function(){
// Ac se puede empezar a trabajar sobre el documento que ya termino de cargar
});
Y es precisamente dentro de esta accin que se implementaron todas las funciones encargadas de
modificar en tiempo real la interfaz grfica, estas funciones se encuentran en el ANEXO 5.
Stats
La pgina stats contiene grficas que despliegan la historia de los estados de los dispositivos. Se
despliegan al menos los ltimos 20 estados disponibles en la base de datos. Para cambiar la visualizacin
entre la grfica de estados de un dispositivo y otro, se implement la siguiente barra de navegacin:
La biblioteca JavaScript Flot fue utilizada para crear estas estadsticas. Flot renderiza las imgenes de las
estadsticas en un elemento HTML de clase flot-placeholder a partir de la configuracin que se encuentran
en el archivo flot.js ubicado en la carpeta javascript. Este archivo se encuentra en el ANEXO 5.
- 47 -
4.5.3.4 Autogenerado de los widgets
La interfaz grfica lee de la tabla items en la base de datos cuales son los items existentes y a partir de esta
informacin genera la estructura HTML para cada uno de estos. Esto se implement con PHP, que es un
lenguaje de programacin de lado servidor. Si las salidas (echos) PHP estn estructuradas como cdigo
HTML el web server es capaz de interpretarlos e imprimir la estructura de los elementos, de tal manera
que cuando el navegador est cargando la interfaz grfica los contenedores de los widgets ya estn
generados.
4.5.3.5 Diseo para celulares
Para enero del 2014 [17] se identific que la distribucin de los tamaos de pantalla de los dispositivos
con acceso a internet y que hacen uso de los principales navegadores fue la siguiente:
Ancho de Cantidad de
Pantalla Dispositivos 768 px y menor
menor a 768 px 37%
800 px
800 px 8%
900 px
900 px 13%
1024 px
1024 px 8%
1050 px 1050 px
5%
1080 px 1080 px
13%
1200 px 3% 1200 px
mayor a 1440 px 10%
Ilustracin 27 Tendencia de los tamaos de pantalla en enero del 2014
A partir de esto datos se crearon 3 intervalos de tamao de pantalla en los cuales la interfaz grfica
presenta una diagramacin especfica para cada uno. Los intervalos son los siguientes: menor a 768px,
entre 768px y 1022px, y mayor a 1022px.Para esto fue necesario especificar en CSS la apariencia de la
diagramacin para cada intervalo usando la siguiente sintaxis:
@media ( min-width: <'tamao en pixeles'> ) {
//Ac se modifican las propiedades CSS para cada intervalo de tamao de pantalla
}
El desarrollo se apoy en el framework JavaScript JQuery Mobile, el cual provee clases de elementos
HTML5 que se adaptan automticamente a los distintos tipos de pantalla.
Diagramacin para menos de 768px (48em)
Esta es la versin para celulares, que de acuerdo a la Ilustracin 27, corresponde al tamao de pantalla
ms usado. Ac los widget se despliegan como componentes de una lista no ordenada. El men de
navegacin se reduce a un cono de triple barra () que despliega las posibles pginas cuando es activado
por el usuario. El aspecto visual logrado para este tamao de pantalla es el siguiente.
- 48 -
Diagramacin entre 768px (48em) y1022px (63.75em)
Este tamao de pantalla corresponde a la mayora de las tabletas en modo landscape. Ac existe un poco
ms de espacio y es posible desplegar el men completamente. A los widget se les asigna un aspecto
cuadrado y se organizan en una cuadrcula a 2 columnas.
- 49 -
5. ANLISIS DE RESULTADOS
El sistema de domtica fue evaluado con respecto a cmo sera percibido por el usuario. Como la interfaz
grfica es la herramienta que le permite al usuario interactuar con el sistema, sta ser la principal
referencia de desempeo. Otras partes del sistema como el Gateway y la red Z-Wave tambin pueden
afectar la experiencia del usuario pero nicamente en casos de fallas crticas.
- 50 -
Las 3 primeras indicaciones estn relacionadas con el servidor y recomiendan tcnicas para conservar
recursos cargados y proporcionar ms ancho de banda. Estos temas se salen de los alcances de este
proyecto, por lo que estas indicaciones se tendrn en cuenta pero no se aplicarn.
Las siguientes reglas Optimize the order of styles and script y Defer parsing of JavaScript, comentan
sobre cmo el documento es cargado por el cliente y recomiendan reorganizar la posicin del JavaScript
en el cdigo para poder realizar varias solicitudes simultneamente. Una vez observado esto se procedi a
analizar el cdigo en el cual fue detectado que efectivamente muchos de los scripts en el head HTML
estaban incluidos antes de otros recursos como stylesheets y elementos HTML.
Fue suficiente con reorganizar el cdigo de manera que los archivos ms pesados se cargaran al final del
documento, incluidos el framework JQuery Mobile y los scripts de las estadsticas. Un resultado colateral
de esta reorganizacin fue que en los dispositivos de ms de 768px, qu tienen una diagramacin de la
interfaz grfica con los widgets ubicados en una cuadricula a 2 o 3 columnas, se percibi que durante un
pequeo instante en la carga de la pgina, los widgets estn aparentemente desorganizados y no tienen el
ancho correcto. Sin embargo este efecto es extremadamente corto por lo que no se consider como un
problema. Con los que respecta a las imgenes, se procedi a comprimir todos los conos y las imgenes
de background, usando la herramienta recomendada por gtmetrix, smush.it la cual es desarrollada por
Yahoo. Una vez completados estos cambios se volvi a evaluar la interfaz grfica en la gtmetrix y se
obtuvo el siguiente resultado, ampliamente satisfactorio:
- 51 -
Con estos dispositivos se ejecutaron las siguientes pruebas que evalan las funcionalidades bsicas del
sistema:
Visualizacin correcta de la interfaz grfica. conos, nombres y diagramacin de los widgets de
todos los dispositivos.
Actualizacin automtica del estado e cono del sensor PIR del dispositivo AeonLabs Aeotec Z-
Wave Multisensor.
Actualizacin automtica del estado del dispositivo AeonLabs - Z-wave Smart Energy Switch
(DSC06106-ZWUS) cuando se le conectara una lmpara encendida.
Actualizacin automtica del estado e cono del dispositivo Jasco Z-Wave Lighting Control On/Off
Switch, (45609), cuando se operara el interruptor manualmente.
Encendido y apagado del interruptor Jasco Z-Wave Lighting Control On/Off Switch, (45609) a
travs de la interfaz grfica.
Actualizacin automtica del estado e cono del dispositivo Jasco Z-Wave Lighting Control On/Off
Switch, (45609), cuando se operara a travs de la interfaz grfica.
Todas las pruebas anteriores fueron exitosas en todos los dispositivos y navegadores. As mismo se
comprob la adicin exitosa a la interfaz grfica del sensor de luminancia presente en el dispositivo
AeonLabs Aeotec Z-Wave Multisensor.
A continuacin se muestra una captura de pantalla del iPhone 4s que muestra la diagramacin de menos
de 768px en este dispositivo:
Ilustracin 32 Captura de pantalla iPhone 4s. Diagramacin de la interfaz grfica para menos de 768px.
- 52 -
A continuacin una captura de pantalla del LG G PAD 8.3 en modo landscape que muestra la
diagramacin entre 768px y 1022px:
Ilustracin 33 Captura de pantalla modo landscape de LG G PAD 8.3. Diagramacin para pantalla entre 768px y 1022px
El resto de las capturas de pantalla de todos los dispositivos pueden ser encontradas en el CD anexado,
carpeta Compatibilidad.
Con la prueba de visualizacin se puede considerar un xito la implementacin del autogenerado de los
widgets, aadiendo sta como una caracterstica adicional a la propuesta original.
Otra funcionalidad adicional que se implement para este proyecto fue la pgina con estadsticas. sta
muestra la historia de hasta 20 estados para los 4 items: Luz, Movimiento, Consumo y Luminancia. La
ilustracin a continuacin es un mosaico de estas estadsticas con capturas de pantalla del iPhone 4s.
Ilustracin 34 Capturas de pantalla en el iPhone 4s de las estadsticas de Power, ON-OFF Switch, PIR Sensor y Luminance
Para crear estas grficas la biblioteca FLOT lee la informacin y luego renderiza la imagen con un ancho
fijo que se adapta a la pantalla en la que se est visualizando. Ahora, teniendo en cuenta que en un
dispositivo mvil el ancho de pantalla no es fijo ya que en cualquier momento el usuario puede cambiar la
orientacin del dispositivo, si los elementos no responden automticamente a estos cambios, como es el
caso con las estadsticas, pueden darse problemas particulares, como el que se demuestra en la Ilustracin
35, en donde la pgina de estadsticas fue renderizada con la orientacin portrait y momentos ms tarde la
orientacin del dispositivo fue cambiada a landscape.
- 53 -
Ilustracin 35 Capturas de pantalla del iPhone 4s cambiando orientacin de portrait a landscape
Como se puede observar, al cambiar la orientacin la grfica con las estadsticas no se expandi para
ocupar todo el ancho de la pantalla, aun si la grfica se encuentra todava disponible con toda la
informacin desplegada para el usuario. Desafortunadamente esta es una limitacin del mecanismo
utilizado por la biblioteca FLOT para la generacin de las grficas la cual no es posible resolver de un
modo sencillo. Como alternativa propuesta se podra pintar cada cierto tiempo la grfica, sin embargo esto
impactara fuertemente las prestaciones de la interfaz de usuario, consumiendo recursos innecesariamente
y afectando la facilidad de uso, criterio de suma importancia en este proyecto.
- 54 -
Ilustracin 36 Administrador Z-Wave de HABmin con todos los dispositivos vivos
El estado de la red Z-Wave del sistema completo se mantuvo en este estado durante toda la semana de
prueba.
5.3.2 Log de OpenHAB
En 5 ocasiones durante las pruebas peridicas de funcionalidad del sistema se detect que los estados en la
interfaz grfica no correspondan a los estados reales en los dispositivos, es decir no estaba funcionando la
actualizacin automtica de los estados. Durante estos eventos el siguiente mensaje apareci en el log de
OpenHAB:
ERROR o.o.p.m.i.MysqlPersistenceService[:345]- mySQL: Error count exceeded 1.
Disconnecting database.
Este mensaje indica que la cantidad de errores al realizar querys a la base de datos excedi el parmetro
mysql:reconnectCnt, que se encuentra definido en 1 en el archivo openhag.cfg. Este contador define la
cantidad mxima de errores que la persistencia MySQL de OpenHAB puede ignorar antes de intentar una
reconexin.
Sin embargo en cada una se estas 5 eventos el sistema presento un tiempo de recuperacin comprendido
entre 2 y 20 minutos, recuperando las funcionalidades de actualizacin automtica de los estados, es decir
que la conexin a la base de datos fue restablecida.
Estos errores pueden tener varios orgenes, lo ms probable es una interrupcin de la conexin entre el
gateway y la base de datos debido a intermitencia en la conexin a internet, o que el servidor de
HeliconiaTech no se encontrara disponible. Tambin puede ser un error en el addon de persistencia de
OpenHAB, factores externos al sistema e imposibles de controlar.
El sistema de domtica desarrollado tiene una arquitectura dependiente de que los estados reales de los
dispositivos encuentren en la base de datos, si esto falla no es posible controlar ni supervisar los
dispositivos.
5.3.3 Motor de sincronizacin
Para la ejecucin de estas pruebas el motor de sincronizacin fue compilado y generado con la opcin de
debug activada. Ac es posible ver los errores de las bibliotecas usadas o si los POST HTTP fueron
exitosos. Durante la inicializacin de OpenHAB y el motor de sincronizacin, ste ltimo es mucho ms
rpido.
Ahora, en el caso particular de que exista un comando pendiente en la tabla switch_next_state esto quiere
decir que el motor de sincronizacin comienza a intentar transmitirle el estado a la REST API, la cual no
ha iniciado, caso que se encuentra cubierto por el sistema. El motor de sincronizacin reintenta la
transmisin hasta que pueda mandar el dato, durante cada iteracin se ve el siguiente mensaje en la
consola.
curl_easy_perfom() failed: Couldnt connect to server
El problema que se detect es que en la secuencia de inicializacin de OpenHAB, el web server Jetty,
encargado de interpretar los mtodos HTTP en OpenHAB, inicia primero que la REST API. Esta
particularidad en el arranque de los componentes de OpenHAB genera el siguiente mensaje en la consola
del motor de sincronizacin:
- 55 -
<html>
<head>
<meta http-equiv=Content-Type content=text/html;charset=ISO-8859-1/>
<title>Error 404 Not Found</title>
</head>
<h2>HTTP ERROR: 404</h2>
<p>Problem accesing /rest/items/Switch_Luz_Habitacion. Reason:
<pre> Not found</pre></p>
<body>
</body>
</html>
Este mensaje no es interpretado por la biblioteca cURL como un error, sino que simplemente es la
respuesta al mensaje transmitido, lo que se identifica equivocadamente como un xito. Esto implica que
este primer comando que estaba pendiente en la tabla switch_next_state se perdi.
Posibles soluciones a esta problemtica consisten en atrapar este mensaje y detectar el ERROR 404, para
identificar esta transmisin como fallida. Otra posibilidad es que luego de transmitir el comando se
verifique que el estado del item de OpenHAB fue actualizado con este comando, si no fue as se identifica
la transmisin como fallida, sin embargo tales validaciones fueron dejadas para futuras iteraciones de este
proyecto.
5.3.4 Rendimiento de la RaspberryPi
Para evaluar el rendimiento de la RaspberryPi se us el comando Linux top, que supervisa la actividad del
procesador en tiempo real, desplegando una lista de las tareas ms pesadas en cuanto a su carga
computacional en el sistema, ordenndolas por uso de CPU.
Durante la inicializacin simultnea de OpenHAB y del motor de sincronizacin, se detect una intensa
actividad en la CPU como lo indica la siguiente captura de pantalla de la consola. OpenHAB es el proceso
con identificacin 2400.
Ilustracin 37 Uso CPU IZQ: Durante inicializacin de OpenHAB IZQ: Todos los servicio de OpenHAB cargados
Una vez todos los servicios de OpenHAB terminaron de cargar, el uso de la CPU disminua
considerablemente. En ningn momento se detect que el uso de la CPU sobrepasara el 25%.
- 56 -
5.4 Anlisis econmico del sistema
En primera instancia se retomar el costo de los distintos elementos utilizados para el desarrollo del
sistema de domtica:
TOTAL 212,10
Tabla 27 Costo de los elementos del sistema
El costo total de los dispositivos fue de 212,10 dlares Ahora si se quisiera comercializar el sistema habra
que aadir el precio de desarrollo y de las posibilidades del mismo, teniendo en cuenta posibles
competidores. Ahora, el precio del desarrollo depende del modelo de negocio que se implemente, en el
caso de una venta nica, sin suscripciones ni mensualidades, es una prctica comn que el precio del
desarrollo sea la mitad del costo del proyecto final. As que si los nicos gastos son el desarrollo y los
dispositivos obtenemos un valor final de 424,20 dlares.
- 57 -
6. CONCLUSIONES
El objetivo de este proyecto consista en controlar de manera remota una habitacin a travs de internet.
Tal meta se alcanz obteniendo adems conclusiones que van ms all de la posibilidad de controlar
completamente una casa o un edificio, como una visin de lo que puede llegar a ser el futuro y de cules
son las herramientas necesarias para participar en l. Teniendo en cuenta el potencial del IoT para los
prximos aos, la evolucin de las diferentes tecnologas asociadas y la integracin de ms y ms
dispositivos en la vida cotidiana de todas las personas, es interesante contemplar nuevos escenarios en que
un sistema similar al planteado en este documento tenga cabida. Por tal motivo y como se indic en
diferentes oportunidades, cada uno de los componentes del proyecto se dise y se desarroll pensando en
la realizacin de posibles trabajos futuros y ms iteraciones del mismo. OpenHAB es una herramienta
muy til para desarrollar e implementar tales escenarios. Con una comunidad siempre creciente de
desarrolladores es un claro ejemplo de lo que se puede lograr a travs de proyectos de software libre,
adems actualmente cuenta con soporte para una gran variedad de protocolos de comunicacin y
dispositivos, hecho que junto a su sistema de definicin de reglas para automatizar procesos con base en
eventos internos y externos al sistema, permite la creacin de novedosas y flexibles soluciones a distintas
problemticas y aplicables en diferentes contextos. Este proyecto es un ejemplo del potencial de este
framework y si bien no es un producto finalizado, es factible que a travs de la adicin de nuevos
dispositivos, mejoras en su seguridad y estabilidad a travs de procesos redundantes y de autenticacin, un
trabajo de diseo grfico y perfeccionamiento de la interfaz de usuario, as como la mejora continua en la
infraestructura del servidor haran de ste un sistema robusto para el control completo de una vivienda,
una oficinas e incluso grandes establecimientos comerciales, caractersticas que junto a su bajo costo de
implementacin hacen que sea econmicamente viable.
El desarrollar un sistema completo exigi especificar cmo cada elemento tendra que funcionar junto a
otro, incluso si estos no fueron diseados para trabajar juntos. Es esencial contar con las herramientas
adecuadas que tengan la flexibilidad y la potencia para conectar tales elementos as como con una
infraestructura que soporte estas caractersticas. La seleccin de la RaspberryPi como plataforma hardware
fue un factor importante para satisfacer dicha filosofa de desarrollo. Su versatilidad, soporte, y poder de
clculo permitieron que soportara la arquitectura software diseada para el sistema y teniendo en cuenta
que nunca se super un uso de sus prestaciones ms all del 25% de los recursos es posible reutilizarla en
desarrollos futuros en los cuales se necesite mayor potencia de procesamiento. OpenHAB, por su parte, se
identifica plenamente con esta ideologa puesto que su principal caracterstica es ser completamente
independiente de la plataforma en que se usa y de los dispositivos conectados al sistema. Por ltimo, una
interfaz de control web, que garantiza ser compatible con cualquier navegador moderno y por tanto con la
gran mayora de aparatos desde los cuales se quisiera interactuar con el sistema, completa el conjunto de
pilares que soportan el sistema.
Por ltimo, como cualquier avance en el campo de la tecnologa, los mecanismos y componentes
utilizados en el desarrollo de este proyecto no se encuentran exentos de problemas y limitaciones
prcticas. La necesidad de infraestructura dedicada, como es el caso del servidor, genera dificultades al
momento de difundir una solucin de este tipo en entornos sin acceso a este tipo de recursos. Las
interfaces grficas se basan en la experiencia de usuario, un concepto difcil de desarrollar debido a que no
todos sus parmetros son cuantificables y aunque en el proyecto se logr implementar una agradable
interaccin con los dispositivos en un ambiente controlado, si se desearan incluir nuevas funcionalidades,
sta tendra que ser replanteada. De igual manera, aun cuando Z-Wave es un protocolo de comunicacin
validado en el mercado y ya difundido en el campo, presenta algunos problemas, muchas veces invisibles
para el usuario final, pero que impactan en gran medida el funcionamiento del sistema.
- 58 -
7. BIBLIOGRAFA
[1] CISCO, The Internet of Things: How the Next Evolution of the Internet Is Changing Everything,
2011.
[2] Eclipse Foundation, Eclipse Luna, Febrero 2004. [En lnea]. Available:
https://www.eclipse.org/legal/epl-v10.html.
[4] J. Yick, B. Mukherjee y D. Ghosal, Wireless sensor network survey, ELSEVIER: Computer
Networks, 2007.
[5] D. Puccinelli y M. Haenggi, Wireless Sensor Networks: Applications and Challenges of Ubiquitous
Sensing, IEEE CIRCUITS AND SYSTEMS MAGAZINE, pp. 19-29, 2005.
[7] IQJAR, An overview and comparison of todays single-board micro computers, 15 01 2013. [En
lnea]. Available: http://iqjar.com/jar/an-overview-and-comparison-of-todays-single-board-micro-
computers/. [ltimo acceso: 10 10 2013].
[8] AeonLabs, Aeotec - Z-Stick 2E manual, AeonLabs, 2014. [En lnea]. Available:
http://aeotec.com/z-wave-usb-stick/913-z-stick-manual-instructions.html. [ltimo acceso: 2014].
[9] AeonLabs, Aeotec - Multisensor Manual, AeonLabs, 2014. [En lnea]. Available:
http://aeotec.com/z-wave-sensor/47-multisensor-manual.html. [ltimo acceso: 2014].
[10] AeonLabs, Aeotec - Smart Energy Switch Manual, AeonLabs, 2014. [En lnea]. Available:
http://aeotec.com/z-wave-plug-in-switch/942-smart-energy-switch-manual-instructions.html. [ltimo
acceso: 2014].
[11] Jasco, On/Off Relay Switch and 3-Way Switch Kit, 2009.
[12] OpenHAB, Explanation of items - openhab/openhab wiki, 3 10 2014. [En lnea]. Available:
https://github.com/openhab/openhab/wiki/Explanation-of-items. [ltimo acceso: 2014].
[13] C. Jackson, HABmin wiki - Z-Wave Configuration, GitHub, 11 05 2014. [En lnea]. Available:
https://github.com/cdjackson/HABmin/wiki/Z-Wave-Configuration. [ltimo acceso: 2014].
[15] Oracle Corporation, MySQL 5.5 Reference Manual - 23.8 MySQL C API, [En lnea]. Available:
http://dev.mysql.com/doc/refman/5.5/en/c-api.html. [ltimo acceso: 2014].
[16] cURL, Using The libcurl C Interface, [En lnea]. Available: http://curl.haxx.se/libcurl/c/. [ltimo
acceso: 2014].
- 59 -
[17] Website Dimensions, Enero 2014. [En lnea]. Available: http://www.websitedimensions.com/.
[19] YSlow, YSlow FAQ, [En lnea]. Available: http://yslow.org/faq/#faq_work. [ltimo acceso:
2014].
[22] R. J. Caleira, Home Automation - A Step Towards Better Energy Management, 2012.
[23] M. Aiello y S. Dustdar, Are our homes ready for services? A domotic infrastructure based on the
Web service stack, Pervasive and Mobile Computing, vol. 4, n 4, pp. 506-525, 2008.
[24] D. Bonino y F. Corno, Modeling, simulation and emulation of Intelligent Domotic Environments,
Automation in Construction, vol. 20, n 7, pp. 967-981, 2011.
[25] F. Mattern y C. Floerkemeier, From the Internet of Computers to the Internet of Things, 2011.
[26] M. Raffel, openHAB Empowering the Smart Home, Vienna University, 2014.
[27] Telkonet, EcoSmart Wireless Technology Coexists Seamlessly with Common In-Building Wireless
Networks, 2014.
[28] HES, Environmental Energy Technologies Division Lawrence Berkeley National Laboratory,
2014. [En lnea]. Available: http://hes-documentation.lbl.gov/calculation-methodology/calculation-
of-energy-consumption/major-appliances/miscellaneous-equipment-energy-consumption/default-
energy-consumption-of-mels. [ltimo acceso: 2014].
- 60 -
ANEXOS
ANEXO 1: ACRNIMOS
- 61 -
TCP/IP. Transmission Control Protocol / Internet Protocol
URL. Uniform Resource Locator
VM... Virtual Machine
XML eXtensible Markup Language
WSN Wireless Sensor Network
- 62 -
ANEXO 2: PREPARACIN DE LA PLATAFORMA
Con el objetivo de instalar y configurar Raspbian es necesario realizar los comandos indicados en esta
seccin.
Actualizacin del sistema operativo
pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade
Para verificar la instalacin correcta de JAVA se debe visualizar lo siguiente con el argumento version
pi@raspberrypi ~ $ java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode)
- 63 -
ANEXO 3: CONFIGURACIN DE OPENHAB
En el archivo de configuracin openhab.cfg se modificaron las siguientes lneas:
Lo primero es fijar MySQL como la persistencia por defecto.
Configuracin de la persistencia
// persistence strategies have a name and a definition and are referred to in the
"Items" section
Strategies {
// if no strategy is specified for an item entry below, the default list will be
used
default = everyChange
}
/*
* Each line in this section defines for which item(s) which strategy(ies) should be
applied.
* You can list single items, use "*" for all items or "groupitem*" for all members of
a group
* item (excl. the group item itself).
*/
Items {
// persist the rain values at every change and every hour
Energy_Consumo_Habitacion:strategy = everyChange, restoreOnStartup
Movement_Movimiento_Habitacion: strategy = everyChange, restoreOnStartup
Switch_Luz_Habitacion: strategy = everyChange, restoreOnStartup
Luminance_Luminancia_Habitacion: strategy = everyChange, restoreOnStartup
}
- 64 -
ANEXO 4: MOTOR DE SINCRONIZACIN
En el CD adjunto se encuentra el cdigo fuente completo de este paquete software, siguiendo la estructura
planteada en la Seccin 4.5.2.1, Entorno de programacin.
- 65 -
ANEXO 7: IMGENES DE LOS DISPOSITIVOS
Las siguientes son imgenes de los sensores y actuadores usados en este proyecto
Aeon Labs Aeotec Z-Wave Multisensor
- 66 -