Post on 17-Apr-2020
Autorizada la entrega del proyecto del alumno:
Carlos Cifuentes Fernández
EL DIRECTOR DEL PROYECTO
David Contreras Bárcena
Fdo.: ………………………………. Fecha: …… /…… /……
Vº Bº del Coordinador de Proyectos
David Contreras Bárcena
Fdo.: ………………………………. Fecha: …… /…… /……
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN INFORMÁTICA
PROYECTO FIN DE CARRERA
SISTEMA DE CONTROL DOMÓTICO INTEGRAL A TRAVÉS DE UN DISPOSITIVO
MÓVIL (SCDI-DM)
DIRECTOR: DAVID CONTRERAS BÁRCENA AUTOR: CARLOS CIFUENTES FERNÁNDEZ
MADRID, junio de 2007
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
i
AGRADECIMIENTOS
Dedico el proyecto a todas las personas que me ha apoyado, en especial a Susana
y a mi familia, que siempre me han estado motivando.
También, quiero dar las gracias por todo el apoyo recibido, a mi director de
proyecto David Contreras Bárcena, que en todo momento ha estado dispuesto a
ayudarme en el desarrollo del mismo, y del que he aprendido no sólo una gran
formación para mi futuro, sino también, otros valores que me han ayudado a formarme
como persona.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
ii
RESUMEN
El Sistema de Control Domótico Integral a Través de un Dispositivo Móvil, de ahora
en adelante SCDI-DM, nace de la necesidad de integrar el control domótico del hogar y
el control de medios multimedia almacenados en el PC, en un dispositivo móvil, para
poder dotar al mismo de un control bastante amplio del hogar.
Este proyecto, por lo tanto, agiliza y simplifica muchas de las funciones que
podemos desarrollar en el día a día del hogar, e incluso puede ser de gran ayuda a
aquellas personas que, debido a alguna discapacidad, puede resultarle tedioso
actividades como, el manejo de las luces, persianas, etc.
Este nuevo sistema que engloba varios conceptos en uno, resulta de fácil
instalación y manejo, ya que se ha creado un interfaz gráfico amigable, tanto en la
aplicación cliente (dispositivo móvil) cómo en la servidora (PC).
Todo esto ha sido posible, gracias al uso de tecnologías tan actuales y punteras
como es el caso de la tecnología inalámbrica Bluetooth, la cual se va a utilizar para
llevar a cabo la comunicación entre el cliente y el servidor, y el ya conocido protocolo
domótico X10, el cual se va a utilizar para comunicarnos con los distintos dispositivos
del hogar, todas ellas cada día más cercanas y extendidas entre nosotros.
Además, el proyecto tiene un claro carácter innovador, ya que en la actualidad
no existe ninguna aplicación, que sea capaz de aunar conceptos como, el control de los
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
iii
dispositivos del hogar y los medios multimedia almacenados en nuestro PC mediante el
protocolo X-10 y Bluetooth.
El proyecto consta de dos aplicaciones, X10 Media Client, la cual irá instalada
en el dispositivo móvil y formará la aplicación cliente, y X10 Media Server que,
instalada en el PC, formará la aplicación servidor.
Como se ha dicho anteriormente, el proyecto se divide en dos aplicaciones:
• Cliente � X10 Media Client: permite manejar de una forma clara y sencilla
los dispositivos X10 del hogar, tanto de manera independiente como
mediante modos pre-programados en el servidor y transmitidos al cliente que
permite aplicar a varios dispositivos distintas funciones de una vez, por
ejemplo, modo cine. También nos va a permitir manejar las los medios
multimedia almacenados el nuestro PC, con múltiples opciones que nos
facilitarán dicha tarea. A parte de los dos grandes módulos de los que consta
la aplicación cliente, tenemos otras funcionalidades a nivel de control del PC
que nos van a permitir un control total del mismo, como por ejemplo, el
apagado del PC desde el dispositivo móvil, abrir aplicaciones, control total
del ratón y envío de teclas para poder interactuar con otras aplicaciones.
• Servidor � X10 Media Server: es una herramienta capaz de ofrecer
servicios de sincronización para establecer una comunicación con un
dispositivo móvil, a través de la aplicación cliente. Permite, tanto mandar
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
iv
información de los dispositivos X10 almacenados, modos, listas de
reproducción, opciones de configuración, etc. al dispositivo móvil, así como
recibir información de los comandos o peticiones a ejecutar en cada
momento.
Para la implementación del proyecto se ha optado por el uso del lenguaje de
programación Java, ya que es el más portable, y además, actualmente no hay ninguna
aplicación en este lenguaje, en la que se comunique un dispositivo móvil con un PC
dotándoles además de tantas funciones de control, dándole así un carácter innovador:
• X10 Media Client: basado en tecnología JAVA (plataforma J2ME). Éste
módulo presentará un interfaz muy intuitivo y fácil de manejar, adaptado a
las restricciones de los móviles.
• X10 Media Server: basado en tecnología JAVA (plataforma JAVA SE 6.0) y
en menos medida C, para tareas de bajo nivel, como es el caso del control
multimedia. En él recae la mayor parte del peso de la aplicación ya que es el
encargado de ejecutar las peticiones que le hace el cliente, además de
gestionar todos los dispositivos, modos y configuraciones necesarias para el
correcto funcionamiento del conjunto del proyecto.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
v
ABSTRACT
The Domotic Integral Control System through a Mobile Device, from now
SCDI-DM, is born of the necessity to integrate the home domotic control and the
multimedia control stored in the PC, in a mobile device.
This project, therefore, makes agile and simplifies many of the functions that we
can develop in the day to day of the home, and even can be helpful to those people that,
due to some discapacity, can be tedious activities to him like, the handling of the lights,
blinds, etc.
This new system that includes several concepts in one, is from easy installation
and handling, since a friendly graphical interface has been created, as much in the
application client (mobile device) how in the server (PC). All this has been possible,
thanks to the use of so present and sharpshooting technologies as it is the case of the
wireless technology Bluetooth, in which we are going away to support to carry out the
communication between the client and the server, and already known domotic protocol
X10, which we are going to use to communicate with the different devices from the
home, all of them every day nearer and extended between us.
In addition, project knows clearly innovating character, since at the present time
any application does not exist, that is able to combine concepts like, the control of the
home devices and the multimedia files stored in our PC by the protocol X-10 and
Bluetooth.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
vi
The project consists of two applications, X10 Media Client, which will go
installed in the mobile device and will form the client application, and X10 Media
Server that, installed in the PC, will form the server application.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
vii
ÍNDICE
1. INTRODUCCIÓN .................................................................................................. 1
1.1 ESTADO DEL ARTE......................................................................................................... 2
1.2 JUSTIFICACIÓN DEL PROYECTO .............................................................................. 13
1.3 ¿QUÉ ES X10 MEDIA HOME? ...................................................................................... 14
1.3.1 X10 MEDIA CLIENT ............................................................................................................. 15
1.3.2 X10 MEDIA SERVER ........................................................................................................... 15
1.4 ANÁLISIS DE ARQUITECTURAS PARA DISPOSITIVOS MÓVILES ...................... 16
1.5 ANÁLISIS DEL MERCADO ACTUAL DE SOFTWARE X10 .................................... 24
1.6 PLANIFICACIÓN ............................................................................................................ 28
1.7 PRESUPUESTO ............................................................................................................... 29 2. ARQUITECTURA DEL SISTEMA ................................................................... 30 3. ESTUDIO DE TECNOLOGÍAS ......................................................................... 37
3.1BLUETOOTH ................................................................................................................... 38
3.1.1 INTRODUCCIÓN ................................................................................................................... 38
3.1.2 ARQUITECTURA DE PROTOCOLOS ................................................................................. 42
3.1.3 PERFILES Y MODELOS DE USO BLUETOOTH ............................................................... 44
3.2 J2ME ................................................................................................................................. 57
3.2.1 INTRODUCCIÓN A J2ME ..................................................................................................... 57
3.2.2 MÁQUINAS VIRTUALES J2ME ......................................................................................... 59
3.2.3 API JSR-82 ............................................................................................................................. 62
3.3 X10.................................................................................................................................... 63 4. REQUISITOS ....................................................................................................... 76
4.1 OBJETIVOS FUNCIONALES ........................................................................................ 77
4.2 OBJETIVOS TECNOLÓGICOS ...................................................................................... 81
4.3 CASOS DE USO .............................................................................................................. 81
4.3.1 X10 MEDIA CLIENT ............................................................................................................. 85
4.3.2 X10 MEDIA SERVER ............................................................................................................ 86 5. DISEÑO ................................................................................................................. 87
5.1 DIAGRAMA DE LA ARQUITECTURA ........................................................................ 88
5.1.1 X10 MEDIA CLIENT ............................................................................................................. 88
5.1.2 X10 MEDIA SERVER ............................................................................................................ 93
5.2 MODELO DINÁMICO DETALLADO ........................................................................... 97
5.2.1 DIAGRAMAS DE COLABORACIÓN .................................................................................. 97
5.3 MODELO ESTRUCTURAL DETALLADO ................................................................. 100
5.3.1 X10 MEDIA CLIENT ........................................................................................................... 100
5.3.2 X10 MEDIA SERVER .......................................................................................................... 110 6. DISEÑO DE INTERFACES ............................................................................. 119
6.1 X10 MEDIA CLIENT .................................................................................................... 120
6.2 X10 MEDIA SERVER ................................................................................................... 126
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
viii
7. IMPLEMENTACIÓN ........................................................................................ 132
7.1 PLATAFORMAS Y ENTORNOS DE DESARROLLO ............................................... 133
7.2 FUNCIONALIDADES MÁS IMPORTANTES ............................................................ 133
7.2.1 X10 MEDIA CLIENT ........................................................................................................... 133
7.2.2 X10 MEDIA SERVER .......................................................................................................... 136 8. IMPLANTACIÓN .............................................................................................. 151
8.1 ESTUDIO DE LAS TECNOLOGÍAS DE COMUNICACIÓN ..................................... 152
8.1.1 COMM ................................................................................................................................... 152
8.2 INSTALACIÓN DE X10 MEDIA HOME ..................................................................... 154
8.2.1 X10 MEDIA CLIENT ........................................................................................................... 154
8.2.2 X10 MEDIA SERVER .......................................................................................................... 155 9. CONCLUSIONES .............................................................................................. 163
9.1 PROYECTO DE INNOVACIÓN ................................................................................... 164
9.2 ANÁLISIS DE TECNOLOGÍAS, PROBLEMAS Y RESULTADOS ......................... 164
9.3 OTROS CAMPOS DE APLICACIÓN .......................................................................... 165
9.4 PROYECCIÓN DE FUTURO ........................................................................................ 167 10. BIBLIOGRAFÍA .................................................................................................. 169 11. ANEXOS ............................................................................................................... 172
11. MANUAL DE USUARIO .............................................................................................. 173
11.1 X10 MEDIA CLIENT ............................................................................................................ 173
11.2 X10 MEDIA SERVER ........................................................................................................... 178
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
1
1. INTRODUCCIÓN
1.1 ESTADO DEL ARTE 1.2 JUSTIFICACIÓN DEL PROYECTO 1.3 ¿QUÉ ES X10 MEDIA HOME?
1.3.1 X10 MEDIA CLIENT 1.3.2 X10 MEDIA SERVER
1.4 ANÁLISIS DE ARQUITECTURAS PARA DISPOSITIVOS MÓVILES 1.5 ANÁLISIS DEL MERCADO ACTUAL DE TELEFONÍA MÓVIL
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
2
1. INTRODUCCIÓN
1.1 ESTADO DEL ARTE PCRemote:
Funciones:
-Tarjeta de Tv (marca WinDVBlive y marca DScaler), maneja canales, volumen,
pantalla completa...
-WinAMP, play, pause, volumen, tres listas de reproducción...
-DVD (marca WinDVD), play, pause, FF, REV...
-Media Player (no el WMP9, el cutre que salió con windows95 mplayer2.exe), play,
volumen, pantalla completa...
-PowerPoint, puedes elegir tres presentaciones que tengas en el PC
-PC, volumen, muestra la hora y apaga
-También controla la flecha del ratón
Obviamente, el que no tenga este software (winAMP, Mediaplayer2,
winDVD...) este programa no le sirve para nada a excepción de para mover el ratón,
apagar y controlar el volumen del PC con el móvil.
Si no utilizamos algún programa de los que controla el PcRemote (winAMP,
Mediaplayer2, winDVD...), podemos utilizar su comando de on/off para arrancar
cualquier fichero que haya en nuestro PC (avi, mp3, MPEG, *.exe, *.bat...) con solo
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
3
sustituir la línea "execute=C:\xxx\xxx\*.exe" que hay en cada sección del settings.ini
del PcRemote.
PuppetMaster:
Los programas que se muestran a continuación son los que están soportados por
defecto por PuppetMaster. Puedes configurar otros programas mediante el mapeo de
teclas usando Keymaps, VBScript o PuppetScript.
- iTunes
o Muestra el título de la canción, artista y tiempo.
o Explora listas de reproducción, canciones, artista, álbum, genero.
o Busca por canción.
o Play/pause, rewind, fast forward, volumen, anterior/siguiente canción.
- WinAMP
o Muestra título de la canción, artista y tiempo.
o Explora por canción y artista.
o Busca por canción.
o Play/pause, rewind, fast forward, change volume, previous/next track
o Soporte para Winamp Album Library
- Windows Media Player
o Play/pause, rewind, fast forward, change volume, previous/next track
- PowerPoint
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
4
o Control de diapositivas.
o Play/stop presentación.
o Carga de documentos abiertos recientemente.
- Outlook
o Muestra nombre fichero, número de mensajes y número de mensajes sin
leer.
o Enviar/Recibir todo.
o Permite búsqueda por Emails.
o Permite creación de Emails.
o Permite selección de ficheros.
o Responder, mover o borrar Emails.
- Mouse mode
o Permite mover el cursos y hacer clic.
o Permite cambio entre aplicaciones.
- File Browser
o Permite buscar y abrir ficheros.
- System
o Cambiar el volumen del sistema.
o Iniciar salvapantallas.
o Bloquear ordenador.
o Apagar Windows.
o Reiniciar Windows
o Dormir el sistema.
o Hibernar el sistema.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
5
- Keymaps
o Acrobat Reader
o BSplayer
o IrfanView
o Media Player Classic
o Musicmatch Jukebox
o PowerDVD
o VLC Media Player
Capturas de pantalla:
• Modo ratón en Nokia 7610:
• Usando WinAMP en un Sony Ericsson
T68:
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
6
• Menú principal y varias pantallas iTunes en un Nokia 3650:
• Menú principal en un Nokia 6230:
• Menú principal en un Siemens S65:
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
7
• WinAMP y explorador de ficheros en un Siemens S65:
iTunes en un Motorola MPX 220:
Bemused:
Bemused es un control remoto para controlar el WinAmp instalado en tu PC
desde tu teléfono móvil, mediante una conexión Bluetooth.
Con él, podrás visualizar tu colección de música en tu móvil, reproducir
cualquier formato compatible con WinAmp, gobernar las reproducciones (play, pausa,
avanzar, retroceder, volumen, etc.), gestionar listas de reproducción e incluso descargar
canciones desde tu teléfono.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
8
En definitiva, Bemused es un revolucionario sistema de comunicación con el
que podrás, mediante una sencilla instalación, convertir tu teléfono móvil en un práctico
mando a distancia para controlar el WinAmp.
Requisitos mínimos de Bemused:
· S.O.: Symbian OS 7.0
· Nokia 3230
· Nokia 3600/3650
· Nokia 3620/3660
· Nokia 6260
· Nokia 6600/6620
· Nokia 6630
· Nokia 6670
· Nokia 6680/6681/6682
· Nokia 7610
· Nokia 7650
· Nokia N70
· Nokia N90
· Nokia N91
· Nokia N-Gage/QD
· Sendo X
· Siemens SX1
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
9
· Panasonic X700/X800
· Samsung SGH-D730
Capturas de pantalla:
Best Mobile MouseAnyWhere
Best Mobile MouseAnyWhere es programa que te permitirá convertir tu teléfono
móvil en un práctico ratón inalámbrico.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
10
Con él, podrás mover el puntero del ratón a lo largo y ancho de la pantalla,
cambiar de diapositiva (en caso de presentaciones), subir o bajar el volumen de tu
reproductor, entre otras interesantes posibilidades.
Su puesta en marcha es muy sencilla. Instalas un pequeño programa en
Windows, ejecutas el programa y listo.
Requisitos mínimos de Best Mobile MouseAnyWhere:
· S.O.: Symbian OS 7.0
· Nokia 3230
· Nokia 3250
· Nokia 6260
· Nokia 6600
· Nokia 6620
· Nokia 6630
· Nokia 6670
· Nokia 6680/6681/6682
· Nokia 7610
· Nokia N70
· Nokia N80
· Nokia N90
· Nokia N91
· Panasonic X700
· Panasonic X800
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
11
· Samsung SGH-D720
· Samsung SGH-D730
Capturas de pantalla:
PcControl
PcControl es una innovadora herramienta diseñada para controlar, desde tu
móvil Sony Ericsson, diferentes herramientas instaladas en tu PC, las funciones básicas
del reproductor WinAmp y el cursor del ratón.
Soporta conexiones por cable o de carácter inalámbrico mediante Bluetooth.
Desde su módulo para Windows podrás relacionar los botones de tu móvil con la
ejecución de aplicaciones, movimientos del ratón y personalizar los controles del
WinAmp (subir, bajar volumen, pasar canción, retroceder).
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
12
Toda una solución para controlar remotamente diferentes funciones útiles de tu
PC.
Requisitos mínimos:
• Windows 98/ME/NT/2000/XP
• Móviles Sony Ericsson
Captura de pantalla:
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
13
1.2 JUSTIFICACIÓN DEL PROYECTO
El proyecto a desarrollar fue elegido, en parte, por la incipiente intrusión de la
tecnología móvil en nuestra sociedad, y la intención de aportar nuevas funcionalidades
al uso de los mismos.
Se ha optado por la utilización de nuevas tecnologías, como es el caso Bluetooth,
que poco a poco se va asentando en el mercado, abriendo un gran abanico de
posibilidades debido a su flexibilidad de aplicación.
La realización de este proyecto surgió de la idea de querer desarrollar una
aplicación que utilizase una de las nuevas tecnologías inalámbricas, como es el caso de
Bluetooth, y su posterior implantación en un dispositivo móvil y la tecnología domótica
X10. Todo esto se quería implementar en el lenguaje de programación Java, ya que de
este modo podía ser implantado en un amplio número de dispositivos móviles.
El sistema puede incluso servir de ayuda a personas con movilidad reducida, las
cuales a través de un dispositivo móvil, podrían tener un control bastante amplio de los
elementos de su hogar: permiten conectar la caldera de calefacción a distancia; ahorrar
energía dando alimentación al lavavajillas, lavadora o secadora en el período de tarifa
nocturna; tener el café recién hecho al levantarnos por la mañana, tener la comida recién
cocinada al llegar de la oficina, controlar el riego, la depuradora de la piscina, apagar
desde nuestro dormitorio la televisión de los niños, contribuir a seguridad disuasoria
encendiendo equipos de radio o focos situados en el jardín....
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
14
La idea de X10 Media Client y de X10 Media Server, surge de la intención
práctica del proyecto, es decir, un proyecto que aparte de realizar un estudio sobre estas
nuevas tecnologías, culminara con una aplicación útil.
El desarrollo de dos aplicaciones, una cliente y otra servidor, viene dado por la
intención de realizar un proyecto que abarcara todo el proceso de comunicación, tanto
en una aplicación cliente como en una servidor, ya que la implementación de esta última
en Java, suponía un reto debido a que no existe ningún API de Bluetooth para JAVA
SE.
1.3 ¿QUÉ ES X10 MEDIA HOME?
X10 Media Home es un sistema que engloba funcionalidades aplicadas al uso
doméstico como es el control de los dispositivos del hogar o el control de medios
almacenados en un PC.
Se descompone en dos aplicaciones, una cliente y una servidor: X10 Media Client y
X10 Media Server respectivamente.
Dentro de este sistema, por lo tanto, se engloban dos módulos:
• X10 Media Client: basado en tecnología JAVA (plataforma J2ME). Éste
módulo presentará un interfaz muy intuitivo y fácil de manejar, adaptado a
las restricciones de los móviles.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
15
• X10 Media Server: basado en tecnología JAVA (plataforma JAVA SE 6.0) y
en menos medida C, para tareas de bajo nivel. En él recae la mayor parte del
peso de la aplicación ya que es el encargado de ejecutar las peticiones que le
hace el cliente, además de gestionar todos los dispositivos, modos y
configuraciones necesarias para el correcto funcionamiento del conjunto del
proyecto.
1.3.1 X10 MEDIA CLIENT
Cliente � X10 Media Client: permite manejar de una forma clara y sencilla los
dispositivos X10 del hogar, tanto de manera independiente como mediante modos pre-
programados en el servidor y transmitidos al cliente que permite aplicar a varios
dispositivos distintas funciones de una vez, por ejemplo, modo cine. También nos va a
permitir manejar las los medios multimedia almacenados el nuestro PC, con múltiples
opciones que nos facilitarán dicha tarea. A parte de los dos grandes módulos de los que
consta la aplicación cliente, tenemos otras funcionalidades a nivel de control del PC que
nos van a permitir un control total del mismo, como por ejemplo, el apagado del PC
desde el dispositivo móvil, abrir aplicaciones, control total del ratón y envío de teclas
para poder interactuar con otras aplicaciones.
1.3.2 X10 MEDIA SERVER
Servidor � X10 Media Server: es una herramienta capaz de ofrecer servicios de
sincronización para establecer una comunicación con un dispositivo móvil, a través de
la aplicación cliente. Permite, tanto mandar información de los dispositivos X10
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
16
almacenados, modos, listas de reproducción, opciones de configuración, etc. al
dispositivo móvil, así como recibir información de los comandos o peticiones a ejecutar
en cada momento.
1.4 ANÁLISIS DE ARQUITECTURAS PARA DISPOSITIVOS MÓVILES
El sistema operativo es el software principal que se instala sobre el hardware o
dispositivo; contiene instrucciones programadas que indican al micro-controlador que
hacer y sobre el que se instalan los programas que pueden ser aplicaciones finales o
sistemas que permiten desarrollar otros programas.
o La familia Windows
• Windows CE es el Sistema Operativo que Microsoft ha
desarrollado a partir de Windows 95, para dispositivos móviles, y
sirve de base para el desarrollo de los sistemas específicos de
cada dispositivo. Lo que los usuarios finales disfrutan, no es
Windows CE tal y como ha sido desarrollado. En cada tipo de
dispositivo se implementa, desde las posibilidades que permite la
versión de Windows CE disponible, una interfaz y las
funcionalidades requeridas. Así, el Pocket PC 2000, 2002 y 2003
se han desarrollado específicamente para los PDAs. Windows CE
nació como un sistema operativo de fácil programación, sólido,
transparente y que podía implantarse desde un ordenador a una
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
17
lavadora, nevera, microondas incluso videoconsolas (DreamCast).
De hecho, se pensó en integrarlo en todo lo que no fuera un PC.
• Windows CE .NET, es la evolución de Windows CE 3.0 bajo la
filosofía distribuida de .NET. Es pues, un escenario de trabajo que
deberá ser adaptado a cada dispositivo. Esta nueva versión tiene
muchas ventajas, que pueden ser aplicadas a cada uno de los
sistemas operativos derivados. Según Microsoft, Windows CE
.NET, incorporará la posibilidad de manejar las conexiones
Bluetooth, Microsoft Internet Explorer 5.5, Windows Media 8 y
DirectX y será compatible con una amplio rango de procesadores
como Xscale, ARM, MIPS, SH o x86. Cada sistema operativo
derivado, tomará las propiedades que le competan. Para obtener
más información sobre esta familia de sistemas, véase el sitio de
Microsoft.
Los dispositivos PDA que disponen de Pocket PC son dispositivos con
una magnífica pantalla de 240 x 320 píxeles a todo color. Son muy potentes, con
procesadores de entre 133 y 206 MHz y 16 ó 32 Mb de RAM, por lo que son
capaces de reproducir vídeo o música y ejecutar aplicaciones multimedia con
gran rapidez. También disponen de altavoz y salida de audio para auriculares.
Además incluyen diversos tipos de ranuras o slots de expansión, que permiten
insertar tarjetas de diversos formatos (Multimedia, Compact Flash o PCMCIA)
para aumentar memoria o incorporar módems, discos duros, tarjetas de red, etc.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
18
o Palm OS
La primera versión fue desarrollada por el fabricante de los DCM Palm
para el modelo Pilot en 1996. Actualmente son muchos los fabricantes como
Oracle, Nokia, Handspring, Symbol y Sony que utilizan diversas variantes y
versiones de este Sistema Operativo que en conjunto representan el 66 % de
todos los sistemas instalados en computadores de mano. Según la filosofía de
Palm, se intenta tratar a la computación móvil no como versiones en miniatura
de los sistemas de sobremesa, sino como dispositivos y aplicaciones dedicados a
tareas y usos que tienen su propia identidad y reclaman sus propios recursos y
soluciones.
En los últimos años, la versión más extendida ha sido la 4.1 que entre sus
principales características, presenta el soporte "teórico" de 65.000 de colores así
como la gestión de tarjetas de memoria externa. Recientemente Palm Computing
se dividió en dos empresas distintas, una de hardware y otra de software, Palm
Source – la cual ha presentado Palm OS 5 que es realmente un sistema diferente
a los anteriores aunque esto se refiera más al funcionamiento interno que a lo
relativo a su utilización externa.
Para mantener la compatibilidad con la generación anterior del sistema
operativo, la nueva versión incluye un emulador llamado PACE que permite
ejecutar las más de 50.000 aplicaciones existentes. Además, cualquiera que sea
la norma considerada, WiFi LAN, Bluetooth, GSM/GPRS, o CDMA, el sistema
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
19
Palm OS 5 integra las Apis necesarias. O sea, que los dispositivos equipados con
Palm OS 5 pueden comunicarse fácilmente con todos los dispositivos existentes
que estén basados en esas normas tales como teléfonos móviles, impresoras,
módems, etc. Las normas de seguridad incorporadas en el sistema, permiten que
las transacciones sean hechas de forma segura, considerando también, el uso de
firmas digitales homologadas. También ofrece servicios de encriptación para las
conexiones.
El sistema incluye asimismo un navegador para Internet, el Net Font que
suporta entre otras normas, HTML 4.01, XHTML, los GIFs animados, el modo
seguro de acceso a la red VPN (Virtual Private Network) y la interpretación de
código Java Script. Estas normas ya utilizadas en los sistemas de los
computadores de sobremesa se introducen por vez primera en los equipos de
mano.
En cuanto a los dispositivos que contiene Palm OS, la característica más
llamativa es su reducido tamaño y ligereza: pesan entre 120 y 170 gr., y son en
general más pequeños que los Pocket PC. Todos tienen una pantalla de 160x160
píxeles, normalmente monocroma. Usan procesadores de 16-33 MHz que son
suficientes para que el dispositivo funcione con rapidez, y disponen de 2 u 8 Mb
de memoria RAM.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
20
o Linux
LINUX es un sistema operativo compatible UNIX. Dos características
muy peculiares lo diferencian del resto de los sistemas más extendidos en el
mercado, la primera, es que es libre, esto significa que no hay costos por sus
licencias, la segunda, es que el sistema viene acompañado del código fuente.
LINUX se distribuye bajo la licencia pública del proyecto GNU que fue lanzado
en 1984 para desarrollar el Linux de libre distribución. El sistema ha sido
diseñado y programado por multitud de programadores alrededor del mundo. El
núcleo del sistema sigue en continuo desarrollo. En los últimos tiempos, ciertas
casas de software comercial han empezado a distribuir sus productos para Linux
y la presencia del mismo en empresas aumenta rápidamente por la excelente
relación calidad-precio que se consigue.
En los últimos años, algunos fabricantes de dispositivos móviles han
incorporado Linux a sus productos. Se están desarrollando versiones de
Embedded Linux que constituyen la tercera alternativa a Palm OS y Windows
CE para los computadores de mano. Así, LinuxDevices.com, ha creado una guía
de referencia para computadores de mano basados en Linux, con la que pretende
mantener actualizados de manera permanente los productos Linux para pequeños
dispositivos. Si bien el modelo Sharp Zaurus SL-5x00 fue el primer computador
de mano con Linux pre-instalado, hay actualmente versiones de Embbeded
Linux para casi todas las marcas.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
21
o Symbian OS (EPOC)
El sistema operativo de Psion se llama EPOC, nombre del núcleo del
antiguo sistema operativo de la Psion serie 3. Hasta 1997 Psion no comenzó a
licenciar el EPOC32, la versión de 32 bytes para la serie 5. Permite realizar
multitarea y pretende competir con Windows CE. El recibimiento fue frío y sólo
Philips mostró algo de interés. Pero Psion reaccionó y a mediados de 1998 creó
la alianza Symbian -junto con Ericsson, Nokia, Motorola y Matsushita- con el
propósito de hacer de EPOC un sistema operativo único. El premio de esta
apuesta es elevado: los 600 millones de usuarios de dispositivos móviles en año
2002.
Symbian es un sistema operativo abierto, está diseñado para los
requerimientos específicos de los teléfonos móviles de 2G, 2.5 y 3G. En las
versiones 6.X de este sistema se tiene soporte para desarrollo en C++, Java,
WAP, HTML.
El SO de Symbian es el sistema operativo estándar de la industria global
para los Smartphone, dirigido a los fabricantes del micro teléfono, que generan
entorno al 85% de las ventas totales mundiales de teléfonos móviles.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
22
Versiones actuales:
• OS v7.0s de Symbian: El OS v7.0s de Symbian es una
plataforma para el mercado 3G, ofreciendo nueva funcionalidad
para permitir la conformidad 3GPP y la entrega de los servicios
3G.
Las nuevas características de OS v7.0s de Symbian son:
- marco multi-roscado ligero de los multimedia
- ayuda para W-cdma
- Java MIDP 2.0
- ayuda para los contextos múltiples primario/secundario
PDP
- ayuda para el texto bidireccional (tailandés, árabe y
hebreo).
• OS v8.0 de Symbian: El OS v8.0 de Symbian es diseñado para
resolver las necesidades de los comerciantes del OS de Symbian,
de los operadores de red y de las empresas bajando el coste de la
estructura del teléfono del OS de Symbian, aumentando las
capacidades de Java y multimedia, así como funcionalidad
avanzada del dispositivo.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
23
• UIQ v3.0: UIQ es una plataforma para el interfaz de los
Smartphone basados en el OS de Symbian.
UIQ ofrece a usuarios que partidarios de la interacción y se
diseña para ofrecer el acceso fácil a la amplia variedad de
servicios de los datos en 2,5 y las redes 3G.
Los teléfonos basados UIQ son de gran alcance y dan el acceso a
los usos de la empresa, al e-mail, a los clips multimedia, así como
la gerencia de información personal. La excelente interacción y
las capacidades gráficas también proporcionan la ayuda para las
posibilidades avanzadas del juego.
UIQ ofrece a los fabricantes del teléfono móvil, una fundación
sólida, construyendo los dispositivos eficientes, atractivos y de
bajo coste. Se dan los derechos de modificar el UI para requisitos
particulares al ajuste del producto.
UIQ incluye la ayuda para los últimos estándares inalámbricos,
con un sistema de usos esenciales y bien integrados, permitiendo
la integración rápida del dispositivo. A través de la plataforma
abierta de UIQ, existe una multiplicidad de usos y los servicios
son ofrecidos por varias compañías de software.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
24
UIQ 3.0 UIQ 2.1
1.5 ANÁLISIS DEL MERCADO ACTUAL DE SOFTWARE X10 A continuación se va a mostrar el estudio llevado a cabo sobre el mercado actual
del software relacionado con los dispositivos X10:
Software ActiveHome
El software de domótica ActiveHome viene incluido con el interfaz. S110210 y
su utilización es sencilla e intuitiva, no requiere de conocimientos de programación, ni
tener un equipo hardware de última generación, con un 386 y 4 Mb de RAM puede
utilizarlo. Viene provisto de una pantalla gráfica donde rápidamente comprenderá el
manejo, ya que dispone de ejemplos pre-programados.
Para la programación de módulos al amanecer o al crepúsculo, puede elegir de la
lista, la zona geográfica. Programando de esta forma el apagado de la luz del porche al
amanecer, el cierre de persianas eléctricas al anochecer, para simulación de presencia,
etc. También puede programarse activar un determinado módulo (luz/aparato) en una
fecha concreta.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
25
La programación de Macros se realiza de la siguiente forma; Por ejemplo la
macro B1 (que podemos denominarla "Ambiente salón") hará que el módulo A1 se
apague (luz del techo del salón), el módulo A2 se encienda al 50 % (Halógenos del
mueble de mampostería), y que medio minuto más tarde comiencen a encenderse el
módulo A3 hasta alcanzar el 40 % (luces indirectas de los cuadros de la entrada). Y así
podemos programar en una sola macro las órdenes que nuestra imaginación llegue a
concebir para crear los ambientes deseados.
El software está en español, y todas las etiquetas y nombres de los módulos y
sistemas domóticos se pueden personalizar en cualquier idioma sin ningún problema.
Además su interfaz es totalmente gráfico por lo que su utilización resulta muy intuitiva.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
26
Power Home
El Power Home es un paquete de software para la automatización de la casa que
permite que controles la iluminación y aplicaciones caseras así como los dispositivos
infrarrojos. La iluminación y las aplicaciones son controladas vía el Insteon y los
reguladores siguientes X-10: PowerLinc V2 (USB y cuento por entregas), CM11A,
CM17A, MR26A, PowerLinc (cuento por entregas y USB), W800RF32, y CPU-
XA/Ocelot. El control infrarrojo se alcanza a través de los reguladores IR siguientes: El
círculo (telecontrol infrarrojo automatizado), Multi-CÍRCULO, RedRat2, RedRat3,
CPU-XA/Ocelot, USB-UIRT, y slink-e. Con el CPU-XA/Ocelot y los módulos
adicionales o el regulador de Velleman K8000 también tienes acceso a las entradas
digitales/a las salidas, las entradas análogas y las salidas análogas (K8000 solamente).
Con este interfaz programable, el control se alcanza vía teclado, ratón, email, X-10, el
reconocimiento IR, de voz, la mensajería de Windows.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
27
Características:
• Interfaz completamente programable con opción de idiomas. Puedes utilizar
scripting interno o cualquier lengua apoyada por el anfitrión de Windows
Script (por ejemplo: VBScript, JScript, etc.)
• Web server interno para el mando a distancia y supervisar. Apoya el
contenido dinámico definido por el usuario vía PSP (las páginas caseras del
servidor de la energía)
• Reconocimiento de voz.
• El servidor incorporado del WAP para el mando a distancia vía Internet.
Como conclusión, podemos afirmar que no se dispone de una amplia gama de
software de control de dispositivos X10, y los que existen, son en su mayoría para
control de los dispositivos desde el PC. Sin embargo, X10 Media Home, proporciona un
control total de los dispositivos tanto de forma local como remota a través de un
dispositivo móvil y para cualquier sistema operativo.
SCDI-DM - Carlos Cifuentes Fernández IINF – ICAI – COMILLAS – PFC 06/07
28
1.6 PLANIFICACIÓN
OCTUBRE NOVIEMBRE DICIEMBRE ENERO FEBRERO MARZO ABRIL MAYO
INTRODUCCIÓN
ANÁLISIS DE
REQUERIMIENTOS
ANÁLISIS TECNOLÓGICO
DISEÑO DEL SISTEMA
DISEÑO DETALLADO
IMPLEMENTACIÓN Y PRUEBAS
DOCUMENTACIÓN
Planificación del proyecto.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
29
1.7 PRESUPUESTO
El desglose del presupuesto sería el siguiente:
Horas de análisis: 70 * 70 €/h = 4900 €
Horas de diseño: 60 * 60 €/h = 3600 €
Horas de programación: 230 * 55 €/h = 12650 €
Total = 21150 €
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
30
2. ARQUITECTURA DEL SISTEMA
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
31
2. ARQUITECTURA DEL SISTEMA
A continuación se van a identificar y definir las distintas alternativas que pueden
servir como soluciones viables para satisfacer los requisitos definidos y las necesidades
del usuario.
Las distintas alternativas, parten de una base común. Todas siguen una
arquitectura cliente-servidor, y esta nos va a proporcionar las ventajas de la arquitectura
basada en componentes, destacando:
• Función distribuida entre cliente y servidor.
• Interfaz de presentación gráfica.
• Reutilización de componentes, como los establecidos en este tipo de
arquitecturas orientadas a componentes.
Los componentes del nivel de presentación en el cliente podrán desarrollarse
diferentes lenguajes, aunque en este caso se desarrollara, tanto la aplicación cliente
como el servidor, en Java, utilizando para la parte cliente un desarrollo en la plataforma
J2ME y para la parte servidor un desarrollo en la plataforma de desarrollo JAVA SE.
Los elementos hardware y software comunes a las alternativas, son los
siguientes:
• Para la implantación de la aplicación cliente:
o Dispositivo móvil con Java: MIDP 2.0.
• Para la implantación de la aplicación servidora:
o Un PC con Java: JRE 6.0.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
32
• Hardware común: Bluetooth, dispositivos X10
Vamos a proponer dos alternativas que darían solución a los requisitos.
Únicamente difieren en la elección de la forma de comunicación: los protocolos a
seguir, el hardware adecuado…
Como queremos que la sincronización de los datos se realice a través de un
medio inalámbrico y libre, es decir, sin coste añadido por usar el medio, podemos elegir
entre una de estas dos alternativas:
1. Bluetooth.
2. Infrarrojos.
Atendiendo a los factores técnicos de cada alternativa, la elección del uso de
Bluetooth como medio de comunicación es mejor ya que proporciona mayor
independencia del sistema servidor, nos proporciona una mejor comunicación ya que el
dispositivo móvil puede estar en cualquier espacio físico siempre y cuando este dentro
del radio de alcance del PC que es bastante amplio para el fin que buscamos, mientras
que si se utiliza infrarrojos, deben estar en línea los dispositivos de infrarrojos de ambas
aplicaciones.
Desde el punto de vista de la implementación la elección de Bluetooth puede
resultar más tediosa.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
33
La viabilidad económica considera la inversión o gasto del proyecto:
• Coste de implantación:
o Los costes de desarrollo van a resultar prácticamente iguales ya
que se va a ser desarrollado por una única persona, y llevaría más
o menos las mismas horas de desarrollo de la aplicación.
o Los costes de puesta en marcha son similares.
o Costes de formación serian los mismos ya que se tratarían de
unas tecnologías nuevas para el desarrollo.
• Costes de adquisición de tecnología:
o En cuanto al coste hardware, podemos afirmar que sería un coste
parecido o incluso más barato el uso de la tecnología de
infrarrojos en el dispositivo móvil pero habría una gran diferencia
en el coste de adquisición del periférico de infrarrojos para el PC,
ya que en el mercado actual, el rápido crecimiento de la
tecnología inalámbrica Bluetooth, implica una gran competencia
y una caída de precios. Por lo que en conjunto la alternativa más
económica sería la adquisición de dispositivos Bluetooth.
Con los datos recogidos en la especificación de cada alternativa, y estudiadas las
diferentes soluciones, podemos afirmar que la alternativa de realizar la comunicación
mediante la tecnología Bluetooth, es más viable ya que la independencia entre
dispositivos aporta una facilidad de uso para el usuario final mucho mayor que la que
aportan los infrarrojos, aparte del punto de vista económico.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
34
A continuación vamos a comparar las distintas tecnologías para utilizarlo en el
sistema domótico.
Vamos a tratar dos criterios para valorar un sistema domótico: el de usuario y el
técnico:
• Criterios de usuario:
• Posibilidad de realizar preinstalación del sistema en la fase de
construcción de la vivienda.
• Facilidad de ampliación e incorporación de nuevas funciones.
• Simplicidad de uso.
• Grado de estandarización e implantación del sistema.
• Variedad de elementos de control y funcionalidades disponibles.
• Tipo de servicio posventa.
• Criterios técnicos:
• Tipo de arquitectura (topología si es distribuido o centralizado).
• Topología.
• Velocidad de transmisión.
• Medios de transmisión.
• Tipo de protocolo.
• Fabricación de elementos por terceras partes.
Existe una gran variedad de sistemas domóticos con diversas aplicaciones y en
constante evolución. Orientados a pequeñas construcciones o a grandes edificios,
sencillos y limitados, como así también expandibles y complicados. La forma clásica e
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
35
intuitiva de clasificar los sistemas disponibles es la basada en el tipo de soporte (cable)
que utilizan para transmitir los datos de comunicación entre los dispositivos. De acuerdo
a este criterio, los sistemas más importantes hasta el momento se dividen en:
• Sistemas por bus de datos (utilizan una red de cableado especial).
• Sistemas por onda portadora (utilizan el cableado de electricidad de la
edificación).
Entre estos dos tipos de sistemas, hemos elegido un sistema por onda portadora
ya que no necesitamos una instalación aparte para su utilización sino que utilizamos el
propio cableado del edificio.
Conocida ya la alternativa a desarrollar, con los elementos hardware, software y
de comunicaciones a utilizar, se puede definir la arquitectura de los dos módulos
principales en los que se divide la aplicación, el cliente que será instalado en un
dispositivo móvil y el servidor que será instalado en un PC, sigue el siguiente gráfico de
alto nivel, el cual representa las características hardware y operativas que definen a la
arquitectura elegida:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
36
Arquitectura del sistema
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
37
3.1 BLUETOOTH
3.1.1 INTODUCCIÓN 3.1.2 ARQUITECTURA DE PROTOCOLOS
3.1.2.1 PILA DE PROTOCOLOS 3.1.3 PERFILES Y MODELOS DE USO BLUETOOTH
3.2 J2ME
3.2.1 INTRODUCCIÓN A J2ME 3.2.2 MAQUINAS VIRTUALES J2ME 3.2.3 API JSR-82
3.3 X10
3. ESTUDIO DE TECNOLOGÍAS
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
38
3. ESTUDIO DE TECNOLOGÍAS
3.1BLUETOOTH
Bluetooth es un estándar que identifica un conjunto de protocolos que facilitan la
comunicación inalámbrica entre diferentes tipos de dispositivos remotos. Su nombre se
debe al rey vikingo Harold Bluetooth (940 A.D. – 981 A.D.) reconocido por su facilidad
de comunicación.
3.1.1 INTRODUCCIÓN
Bluetooth surge de la necesidad de las grandes empresas de telecomunicaciones
e informática de crear un estándar de comunicación inalámbrica para suprimir los cables
de conexión.
Bluetooth es una transmisión de corto alcance por radiofrecuencia, capaz de
transmitir a través de objetos sólidos no metálicos. Transmiten con una potencia
nominal de salida de 0 dBm permitiendo un alcance de 10 metros en un ambiente libre
de obstáculos, pero haciendo uso de amplificadores de la transmisión de energía puede
alcanzar los 100 metros.
Opera en la banda libre de radio ISM1 a 2.4 GHz Soporta transmisiones de tres
canales de voz, video y datos a una velocidad máxima de 1 Mbps, aunque la velocidad
1 Industrial Scientific Medicine. Banda internacional médico-científica.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
39
real estará comprendida alrededor de los 721 Kbps, incluyendo un canal de retorno de
56 Kbps.
La banda ISM al no necesitar licencia, está abierta a cualquiera, por lo que debe
adaptarse a las pequeñas interferencias de otros aparatos. Este problema lo soluciona,
utilizando un sistema que busque la parte no utilizada del espectro o un sistema de salto
de frecuencia.
La técnica de salto de frecuencia es aplicada a una alta velocidad y una corta
longitud de los paquetes (1600 saltos/s). Divide la banda de frecuencia en varios canales
de salto, donde, los transceptores, durante la conexión van cambiando de uno a otro
canal de salto de manera seudo-aleatoria. Los paquetes de datos están protegidos por un
esquema ARQ2, en el que los paquetes perdidos son automáticamente retransmitidos.
Bluetooth utiliza un sistema FH/TDD3, en el que el canal queda dividido en
intervalos slots de 625 µs, donde cada salto de frecuencia es ocupado por un slot. Dos o
más unidades Bluetooth pueden compartir el mismo canal dentro de una piconet4.
Datagrama Bluetooth:
La información que se intercambia entre dos unidades Bluetooth se realiza
mediante un conjunto de slots que forman un paquete de datos.
2 Repetición automática de consulta. 3 Salto de frecuencia/división de tiempo duplex 4 Pequeña red que establecen automáticamente los terminales Bluetooth para comunicarse entre si
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
40
Cada paquete comienza con un código de acceso de 72 bits, de la identidad
maestra, seguido de un paquete de datos de cabecera de 54 bits. Éste contiene
información de control, 3 bits de acceso de dirección, tipo de paquete, bits de control de
flujo, bits para la retransmisión automática de la pregunta, y chequeo de errores de
campos de cabecera. La dirección del dispositivo es en forma hexadecimal. Finalmente,
el paquete que contiene la información, que puede seguir al de la cabecera, tiene una
longitud de 0 a 2745 bits.
Cabecera de un datagrama Bluetooth.
Los receptores de la piconet comparan las señales que reciben con el código de
acceso, si éstas no coinciden, el paquete recibido no es considerado como válido en el
canal y el resto de su contenido es ignorado.
Además de los canales de datos, están habilitados tres canales de voz de 64
kbit/s por piconet. Las conexiones son uno a uno con un rango máximo de diez metros,
aunque utilizando amplificadores se puede llegar hasta los 100 metros, pero en este caso
se introduce alguna distorsión.
En la siguiente tabla se muestran de forma genérica las especificaciones de la
tecnología Bluetooth:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
41
Especificaciones
Banda de frecuencia 2.4 GHz
Potencia del transmisor 1 mW (0 dBm)
Tecnología RF Espectro Ensanchado por Secuencia Directa Híbrida y
Saltos en Frecuencia (FH-SS)
Velocidad de datos 721 Kbps por piconet
Rango esperado del sistema 10 metros. Extensión a 100 metros.
Nº máximo de dispositivos 8 por piconet. 10 piconets en un área de cobertura1
(scatternet)
Nº máximo canales de voz 3 por piconet
Nº máximo canales de datos 7 por piconet
Seguridad Sí, en la capa de enlace
Alimentación 2.7 Voltios
Consumo de potencia:
Sleep 30 µA
Hold 60 µA
Standby 300 µA
Transmitiendo 8 – 30 mA
Tamaño del módulo 0.5 pulgadas cuadradas (327.68 mm2)
Interferencias
Bluetooth minimiza la interferencia potencial al
emplear saltos rápidos en frecuencia de 1600 veces por
segundo
Especificaciones generales Bluetooth.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
42
3.1.2 ARQUITECTURA DE PROTOCOLOS
3.1.2.1 PILA DE PROTOCOLOS
Para conseguir esta interoperabilidad, las aplicaciones en dispositivos remotos
deben ejecutarse sobre una pila de protocolos idénticos.
En el siguiente esquema se muestra la pila de protocolos de la especificación:
Pila de protocolos Bluetooth.
Las aplicaciones no hacen uso de todos los protocolos que conforman la pila, y
algunas aplicaciones se ejecutan sobre una o más columnas de la pila.
Como se puede observar la pila completa se compone tanto de protocolos
específicos de Bluetooth (LMP y L2CAP) como de protocolos no específicos como son
OBEX (Objects Exchange Protocol), UDP (User Datagram Protocol), TCP, IP, etc. Esto
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
43
es así porque el objetivo principal ha sido la maximizar el número de protocolos
existentes que se puedan reutilizar en las capas más altas para diferentes propósitos.
Esto hace que las diferentes aplicaciones comerciales que utilicen estos protocolos,
puedan interoperar con Bluetooth además de desarrollar con esta tecnología.
La pila de protocolos se puede dividir en cuatro capas lógicas. La división es la
siguiente:
Capa de protocolo Protocolos de la pila
Núcleo de Bluetooth BaseBand, LMP, L2CAP, SDP
Sustitución del cable RFCOMM
Control de Telefonía TCS Binary, AT-Commands
Protocolos adoptados PPP, UDP/TCP/IP, OBEX, WAP, vCard,
VCal, IRMC, WAE
Clasificación protocolos Bluetooth.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
44
3.1.3 PERFILES Y MODELOS DE USO BLUETOOTH
PERFILES
Hay cuatro perfiles generales que son ampliamente utilizados por todo tipo de
aplicaciones y que describiremos brevemente a continuación:
GAP: Generic Application Profile
Pila de protocolos GAP
El propósito de este perfil es describir el uso de las capas más bajas de la pila de
protocolos Bluetooth (LC y LMP), aunque también incluye la descripción de los
aspectos de seguridad necesarios y las capas de protocolos más altas (L2CAP,
RFCOMM, OBEX, etc.). Se trata del perfil más importante de todos los definidos por el
SIG ya que ha de ser implementado prácticamente por la totalidad de los dispositivos
Bluetooth, sea cual sea su aplicación.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
45
Se definen los siguientes papeles en el perfil:
• “A-Party”: se trata del dispositivo que inicia la búsqueda, en el caso del
establecimiento de enlace, o el iniciador en aquellos casos en los que ya está
establecido el enlace y hay que iniciar algún procedimiento.
• “B-Party”: se trata del dispositivo buscado en el establecimiento de enlace, o
el que acepta en el resto de procedimientos.
Este perfil maneja diferentes procedimientos entre dos dispositivos referentes al
descubrimiento y conexión tanto para el caso en que ninguno de los dos dispositivos
tenga establecido un enlace, como para aquellos casos en que uno de los dos tiene ya
establecido un enlace (posiblemente con un tercero: “C-Party”).
Procedimientos iniciados por un dispositivo (A) hacia otro (B)
que puede tener o no un enlace Bluetooth activo.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
46
En principio, un usuario Bluetooth debe ser capaz de conectar un dispositivo
Bluetooth a otro. Incluso si los dos dispositivos no comparten ninguna aplicación
común, esta conexión debe ser posible usando las capacidades básicas Bluetooth.
Cuando los dos dispositivos sí comparten la misma aplicación pero son de
diferentes fabricantes, la conexión entre ambos ha de ser posible aunque los nombres
dados a las capacidades básicas Bluetooth por cada fabricante sean diferentes, ya que
habrá que ejecutar una serie de procedimientos básicos que serán conocidos por ambos.
Este perfil define modos de operación genéricos que pueden ser usados por
diferentes perfiles que hagan referencia al GAP, y por dispositivos que implementen
múltiples perfiles. Así, el GAP define procedimientos generales para descubrir
identidades, nombres, capacidades básicas de otros dispositivos Bluetooth que estén en
un modo operativo y cómo intercambiar las claves de enlace entre dispositivos.
SPP: Serial Port Profile
La siguiente figura muestra los protocolos y entidades usados en este perfil.
Modelo de protocolos SPP
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
47
La capa de emulación de puerto es la entidad encargada de simular el puerto
serie y de proporcionar un API a las aplicaciones que corren por encima. Dichas
aplicaciones A y B en ambos extremos son las típicas aplicaciones que se comunican
sobre un cable serie (y que en este caso se va a emular). A continuación mostramos una
posible configuración de dispositivos para este perfil:
Ejemplo SPP con dos notebooks.
Se definen los siguientes papeles en el perfil:
• Dispositivo A (DevA): se trata del dispositivo que toma la iniciativa para
conectarse a otro dispositivo. El nombre técnico que se le da es iniciador.
• Dispositivo B (DevB): dispositivo que espera que otro tome la iniciativa de
la conexión. Su nombre técnico es aceptante.
Si quisiéramos establecer una correspondencia entre SPP y una arquitectura de
puerto serie convencional, tanto el dispositivo A como el B pueden ser un DCE5 o un
DTE6, ya que el protocolo RFCOMM ha sido diseñado para ser independiente de las
relaciones DTE-DCE o DTE-DTE.
5 Data Circuit Endpoint
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
48
El escenario que cubre este perfil es el siguiente: establecimiento de puertos
serie virtuales (o equivalentes) sobre dos dispositivos (por ejemplo, dos PCs) y
conectarlos mediante Bluetooth realizando por tanto una emulación del cable serie entre
ambos dispositivos.
El perfil sólo soporta paquetes de slot único, lo que limita el régimen de datos a
128 Kbps, y permite únicamente configuraciones punto a punto. Sin embargo, es
posible tener múltiples ejecuciones de este perfil en el mismo dispositivo. Aspectos de
seguridad, como la autorización y autenticación son obligatorios, mientras que los
procedimientos de cifrado son opcionales. En cuanto a los papeles de maestro y esclavo
no son fijos, es decir, permite el intercambio de papeles en un dispositivo. El protocolo
RFCOMM es usado para el transporte de los datos, señales módem de control y
comandos de configuración.
SDAP: Service Discovery Application Profile
La siguiente figura muestra los protocolos y entidades usados en este perfil:
Pila de protocolos SDAP.
6 Data Terminal Endpoint
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
49
Se definen los siguientes papeles en el perfil:
• Dispositivo local (LocDev): dispositivo que inicializa el procedimiento de
descubrimiento de servicio. Debe contener al menos la entidad cliente de la
arquitectura Bluetooth SDP. Además, posee una aplicación de
descubrimiento de servicios (SrvDscApp) usada por el usuario para iniciar
los descubrimientos y visualizar los resultados obtenidos y una entidad
BT_module_Cntrl que tiene como misión comunicarse con el protocolo
BaseBand y dar diferentes órdenes de búsqueda cuando el dispositivo entra
en diferentes modos de operación.
• Dispositivo(s) remoto(s) (RemDev(s)): cualquier dispositivo que participa en
el proceso de descubrimiento de servicios respondiendo a las preguntas de
servicio generadas por un dispositivo local. Debe contener al menos la
entidad servidor de la arquitectura Bluetooth SDP. Posee una base de datos
de información relacionada con los servicios, la cual es consultada para crear
las respuestas a las peticiones de descubrimiento de servicio.
El papel de dispositivo local o remoto no es permanente ni exclusivo. Un
dispositivo remoto puede tener instalada una aplicación SrvDscApp, al igual que puede
poseer una entidad cliente, y viceversa. Así, un dispositivo puede ser un dispositivo
local para una transacción SDP concreta a la vez que es un dispositivo remoto para otra
transacción SDP.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
50
La siguiente figura muestra un ejemplo SDAP: un dispositivo local (notebook)
realizando petición de servicios entre un conjunto de dispositivos remotos.
Ejemplo de aplicación SDAP.
Los escenarios que cubre este perfil son:
• Búsqueda de servicios por clase de servicio.
• Búsqueda de servicios por atributos de servicio.
• Navegación de servicios.
Los dos primeros casos representan la búsqueda de servicios específicos,
mientras que en el último, trata de una búsqueda genérica de servicios, es decir, ver qué
servicios están disponibles.
Antes de que dos dispositivos equipados con Bluetooth se puedan comunicar en
este perfil es necesario que se realicen las siguientes acciones:
• Los dispositivos necesitan ser inicializados. La inicialización puede requerir
la introducción de un PIN para crear una clave de enlace, para la
autorización y el cifrado de los datos.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
51
• Se tiene que crear un enlace Bluetooth, lo cual puede requerir el
descubrimiento de la dirección BD_ADDR de otro dispositivo a través de los
procedimientos de búsqueda y pregunta.
El descubrimiento de servicios puede ser iniciado tanto por un maestro como por
un esclavo de la piconet. Además, un esclavo en una piconet puede iniciar el
descubrimiento de servicios en una nueva piconet, en el caso de que el maestro de la
piconet original indique que no está disponible.
GOEP: Generic Object Exchange Profile
La siguiente figura muestra los protocolos y entidades usados en este perfil.
Pila de protocolos GOEP
La capa de aplicación cliente es la entidad encargada de enviar y recuperar los
objetos de datos del servidor mediante operaciones OBEX. La aplicación servidora
realiza el almacenamiento de datos y responde a las peticiones del cliente.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
52
Se definen los siguientes papeles en el perfil:
• Servidor: se trata del dispositivo que proporciona intercambio de objetos
con el dispositivo cliente.
• Cliente: dispositivo que introduce objetos (pushing) en el servidor o los saca
(pulling).
Los escenarios cubiertos por este perfil son:
• El cliente pide al servidor la introducción de objetos.
• El cliente pide al servidor la recuperación de objetos.
Los requisitos del perfil son:
a) Antes de que un servidor sea usado con un cliente por primera vez, se debe
realizar un procedimiento de intercambio de claves. El uso concreto de este
procedimiento depende de los perfiles de aplicación. Generalmente se trata
de introducir un código PIN Bluetooth en los teclados de los dispositivos
cliente y servidor.
b) También se debe realizar un procedimiento de inicialización OBEX antes de
usar el servidor por primera vez.
c) La seguridad se puede conseguir mediante la autenticación de a la otra parte
durante el establecimiento de la conexión y mediante el cifrado de todos los
datos de usuario en el nivel de enlace, para lo cual la autenticación y el
cifrado deberán ser soportados por todos los dispositivos.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
53
d) El establecimiento de enlace y canal debe realizarse de acuerdo a los
procedimientos definidos en el GAP.
e) No hay papeles fijos para el maestro y esclavos.
f) Este perfil no requiere el uso de los modos de bajo consumo.
Hay que tener en cuenta las restricciones:
a) Para el dispositivo que contenga al servidor, puede que el usuario tenga que
ponerlo en modo de conexión o descubrimiento cuando los procedimientos
de establecimiento de enlace y pregunta se están procesando en el cliente.
b) El perfil soporta únicamente configuraciones punto a punto, por lo que el
servidor sólo puede ofrecer sus servicios a un cliente a la vez.
MODELOS DE USO BLUETOOTH
A continuación se realiza una breve descripción de algunos ejemplos de modelos
de uso Bluetooth.
Transferencia de ficheros
Este modelo de uso nos ofrece la capacidad de poder transferir objetos de datos
de un dispositivo a otro (PCs, PDAs, smart-phones, etc.). Los tipos de los objetos
incluyen ficheros .xls, .ppt, .wav, .jpg, .doc, directorios completos, tarjetas de negocios
(cuyo formato está especificado con vCard), aunque en el futuro se espera poder
aumentar el número de formatos de fichero que se puedan transferir. Además, se ofrece
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
54
la posibilidad de navegar por los contenidos de diferentes carpetas en un dispositivo
remoto. Para la implementación de este modelo de uso se emplean los siguientes
perfiles:
• Perfil de transferencia de ficheros (file transfer & browsing)
• Perfil de introducción de objetos (object push)
En la siguiente figura se presenta la pila de protocolos necesaria para este
modelo de uso, destacando el uso del protocolo OBEX de intercambio de objetos,
básico para esta aplicación.
Pila de protocolos para aplicaciones de transferencia de ficheros.
Internet bridge
Gracias a este modelo de uso, los teléfonos móviles o módems inalámbricos
pueden actuar como el módem de un PC, proporcionando capacidades de fax y
establecimiento de llamadas en red sin necesidad de conexiones físicas al PC. En la
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
55
siguiente figura se muestra la pila de protocolos necesaria para el establecimiento de
llamada. Por un lado, los comandos AT son necesarios para controlar el teléfono móvil
o el módem, y por otro, es necesaria otra pila, PPP sobre RFCOMM por ejemplo, para
transferir los datos de pago.
Pila protocolos para Internet Bridge.
En el caso del fax, la pila de protocolos es muy similar pero PPP y los protocolos
de red sobre PPP no se usan y el software de aplicación envía un facsímile directamente
sobre RFCOMM.
Acceso a una LAN
En este modelo de uso, los DTs7 usan un punto de acceso LAN (LAP)
inalámbrico como conexión a la red de área local. Una vez conectados, los DTs operan
como si ellos estuvieran conectados a la LAN con una conexión telefónica de red. Así,
los DTs pueden acceder a todos los servicios proporcionados por la LAN. La pila de
7 terminales de múltiples datos
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
56
protocolos es muy similar a la del modelo de uso de Internet Bridge exceptuando que no
se emplean los comandos AT.
Pila de protocolos para acceso a LAN.
Sincronización
Este modelo de uso proporciona una sincronización dispositivo-dispositivo de la
información PIM8, típicamente agendas de teléfonos, calendarios, mensajes, pequeñas
anotaciones. La sincronización requiere que la información de tarjetas, calendarios y
tareas sea transferida y procesada por ordenadores, teléfonos celulares y PDAs usando
protocolos comunes e igual formato. A continuación se muestra la pila de protocolos:
8 Personal Information Management
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
57
Pila de protocolos para sincronización.
3.2 J2ME
3.2.1 INTRODUCCIÓN A J2ME
Es una versión de Java orientada a dispositivos electrónicos con capacidades
computacionales y graficas muy reducidas, como teléfonos móviles, PDAs o
electrodomésticos. La maquina virtual es la KVM9, que solo necesita unos Kilobytes de
memoria para funcionar, en vez de la JVM10.
9 Kilo Virtual Machine. 10 Java Virtual Machine.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
58
Arquitectura de la plataforma Java Sun
Java no es un simple lenguaje de programación, sino un conjunto de tecnologías que
abarca a todos los ámbitos de la computación, con dos elementos comunes:
• El código intermedio es interpretado por la Virtual Machina
• Todas las tecnologías comparten una serie de APIs básicas como la java.lang y
java.io.
J2ME contiene una parte reducida de las APIs que contiene JAVA SE, debido a que
estas ocupan alrededor de 20 Mb. Utiliza 37 clases de los paquetes java.lang, java.io y
java.util, de la plataforma JAVA SE, que forman parte de la llamada configuración.
Relación entre las APIs de las plataformas Java
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
59
3.2.2 MÁQUINAS VIRTUALES J2ME
La máquina virtual es la encargada de interpretar código intermedio (bytecode) de las
aplicaciones Java precompiladas a código máquina ejecutable por la plataforma, efectuando
llamadas al SO. Proporciona independencia de la plataforma con respecto al hardware y al
SO.
J2ME define varias VMs, adecuándose a los distintos dispositivos según sus exigencias.
Existen dos configuraciones CLDC y CDC, cada una de ellas con características propias
por lo que cada una requiere su propia maquina virtual. La configuración CLDC se denomina
KVM y la de la configuración CDC se denomina CVM. Entraremos a ver en profundidad la
KVM que es la que se va a utilizar.
Entorno de ejecución.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
60
KVM
Arquitectura MIDP/CLDC/KVM
Es maquina virtual más pequeña desarrollada por Sun. Ocupa entre 40Kb y 80Kb. Está
orientada a dispositivos con bajas capacidades computacionales y de memoria. Esta escrita en
lenguaje C en unas 24000 líneas de código.
Limitaciones respecto a la JVM, no existen:
• Tipos en coma flotante, es decir no existe double ni float. Es debido al
que el hardware de los dispositivos no lo soportan.
• Soporte JNI11 debido a los recursos limitados de memoria.
• class loaders12 definidos por el usuario, sólo predefinidos.
• Hilos deamon13.
• Finalización de instancias de clases. Método Object.finalize().
11 Java Native Interface. 12 cargadores de clase. 13 grupos de hilos.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
61
• Referencias débiles14.
• Limitación de excepciones debido a las APIs.
• Reflexión15.
A parte de los citados, la verificación de clases tampoco está incluida ya que es
demasiado grande para la KVM, incluso más grande que esta y un consumo de memoria
excesivo (100Kb para aplicaciones típicas). Tiene como función de rechazar las clases no
válidas en tiempo de ejecución.
Los dispositivos con CLDC y KVM tienen un algoritmo de verificación de clases en
dos pasos:
Pre verificación de clases en CDLC/KVM.
14 Un objeto que está siendo apuntado mediante una referencia débil es un candidato para la recolección de basura. Estas referencias están permitidas en JAVA SE, pero no en J2ME. 15 La reflexión es el mecanismo por el cual los objetos pueden obtener información de otros objetos en tiempo de ejecución como, por ejemplo, los archivos de clases cargados o sus campos y métodos.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
62
3.2.3 API JSR-82
Este API está dividida en dos partes: el paquete javax.bluetooth y el paquete
javax.obex.
Los dos paquetes son totalmente independientes. El primero de ellos define
clases e interfaces básicas para el descubrimiento de dispositivos, descubrimiento de
servicios, conexión y comunicación. La comunicación a través de javax.bluetooth es a
bajo nivel: mediante flujos de datos o mediante la transmisión de arrays de bytes.
Por el contrario el paquete javax.obex permite manejar el protocolo de alto nivel OBEX
(OBject EXchange). Este protocolo es muy similar a HTTP y es utilizado sobre todo
para el intercambio de archivos. El protocolo OBEX es un estándar desarrollado por
IrDA y es utilizado también sobre otras tecnologías inalámbricas distintas de Bluetooth.
La plataforma principal de desarrollo del API JSR-82 es J2ME. El API ha sido
diseñado para depender de la configuración CLDC. Sin embargo existen
implementaciones para poder hacer uso de este API en JAVA SE.
El paquete javax.bluetooth
En una comunicación Bluetooth existe un dispositivo que ofrece un servicio
(servidor) y otros dispositivos acceden a él (clientes). Dependiendo de qué parte de la
comunicación debamos programar deberemos realizar una serie de acciones diferentes.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
63
Un cliente Bluetooth deberá realizar las siguientes:
• Búsqueda de dispositivos. La aplicación realizará una búsqueda de los
dispositivos Bluetooth a su alcance que estén en modo conectable.
• Búsqueda de servicios. La aplicación realizará una búsqueda de servicios
por cada dispositivo.
• Establecimiento de la conexión. Una vez encontrado un dispositivo que
ofrece el servicio deseado nos conectaremos a él.
• Comunicación. Ya establecida la conexión podremos leer y escribir en
ella.
Por otro lado, un servidor Bluetooth deberá hacer las siguientes operaciones:
• Crear una conexión servidora
• Especificar los atributos de servicio
• Abrir las conexiones clientes
3.3 X10
Entre 1.976 y 1.978 se desarrolló la tecnología X-10 en Glenrothes, Escocia,
por ingenieros de la empresa Pico Electronics Ltd.; en la actualidad se distribuye X-10
en los cinco continentes, siendo su principal mercado USA. Durante los últimos 15 años
se han vendido más de 150 millones de equipos X-10,
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
64
Desde que empezó su comercialización en 1.978, millones de instalaciones en
todo el mundo avalan este sistema técnicamente conocido por "Power Line Carrier", su
funcionamiento se basa en la utilización de la red eléctrica existente en cualquier tipo de
edificio, ya sea casa u oficina, como medio físico para la comunicación interna de los
distintos componentes del sistema domótico.
Sus más de 25 años de experiencia, con millares de instalaciones realizadas en
España, la multitud de fabricantes que asegura una amplia gama de productos,
continuidad de la tecnología y el importante hecho de no tener que realizar obras de
infraestructura para cableados especiales, son suficientes motivos para que se
recomiende este hermano menor de la domótica para apartamentos, oficinas y locales,
tanto de nueva como de antigua construcción.
Pero además, combinando múltiples productos de dilatada y probada
experiencia, se puede lograr un sistema domótico de altas prestaciones y baja inversión.
Su instalación y configuración es tan sencilla que el propio usuario puede configurar las
aplicaciones que desee en cada momento entre una amplio abanico de funciones.
Gracias a la flexibilidad que supone el ser un sistema escalable, resulta todo un
interesante y nuevo mundo de bricolaje tanto en seguridad doméstica como en confort,
ahorro energético, comunicación e incluso ocio, pudiendo manejar a distancia el DVD,
las fotos, vídeos y canciones mp3 almacenadas en nuestro PC para visionarlas en el
home cinema de nuestro salón.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
65
Conceptos de un sistema domótico básico
Un sistema domótico, en su versión puramente electrónica, es cualquier solución
que permita el control de sistemas instalados en el hogar. En su concepto más básico y
elemental permite la gestión integrada de persianas, toldos, cortinas, electroválvulas
motorizadas en dos sentidos de actuación, luces, equipos electrónicos (aparatos de radio,
electroválvulas, calderas de calefacción, cafeteras, ...) cuya actuación sea
encendido/apagado....
En un sentido más amplio de domótica, el sistema se integra con Seguridad
Técnica: protección contra fugas de agua, gas, concentraciones dañinas de emisiones
naturales de gases (como es el caso del granito), o artificiales como es el caso de CO por
ejemplo en garajes; detección de humo y fuego. Seguridad contra intrusión.
Teleasistencia. Control de calefacción. Sistemas de Ocio como la televisión, el vídeo,
los canales parabólicos e incluso el control del PC con su DVD y sus fotos, vídeos y
música digitales.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
66
De esta forma el sistema domótico puede crecer indefinidamente integrando
sistemas especialmente diseñados para su función específica pero que tras un correcto
análisis, se pueden integrar en el conjunto formando un sistema amigable y no
sofisticado que facilita el día a día y evita la dispersión tecnológica, en continuo
aumento, que sufren nuestros hogares.
Prestaciones de un sistema domótico
o Seguridad: mediante el sistema usted podrá realizar simulaciones de presencia
en su vivienda, así como si provee de detectores de intrusión, movimiento, fuga
de agua entre otros, el sistema mediante una centralita pueda dar aviso a una
central de alarmas o bien a teléfonos particulares programados en caso de que
haya una intrusión o alguna avería técnica en su vivienda, además de poder
conocer el estado de la vivienda desde cualquier lugar del mundo.
o Confort: mediante la administración de estos dispositivos usted podrá actuar
sobre ellos desde sus propios pulsadores o si lo prefiere para mayor comodidad
mediante mandos a distancia podrá controlar todos los dispositivos ya sea luces,
persianas o bien electrodomésticos, desde una mismo sitio, además según el
mando de su elección puede configurarlo de tal forma que con un solo mando
usted pueda, por ejemplo, controlar el sistema de luces de encendido, apagado o
manejar la intensidad de dicha luz y que este mismo mando le sirva para actuar
sobre el televisor para cambiar los canales o actuar sobre el DVD , sin
necesidad de cambiar de mando.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
67
o Ahorro Energético: puede adecuar el sistema para que a determinadas horas
ponga en funcionamiento algún tipo de elemento o que encienda o apague las
luces según usted lo crea necesario, de esta forma habrá un aumento de ahorro
eléctrico; por ejemplo: si usted sale de su vivienda y desea que al regreso su
vivienda esté con una temperatura agradable, ya no es necesario que al salir deje
la calefacción funcionando, sólo necesitaría realizar una llamada telefónica antes
de su regreso para poner en marcha la calefacción.
Elementos que componen un sistema domótico
Cualquier sistema domótico está compuesto de los siguientes elementos:
o Controladores: Son los que permiten actuar sobre el sistema, bien de una forma
automática por decisión tomada por centrales domóticas previamente
programadas (que incluso puede ser un PC), pulsadores, teclados, pantallas
táctiles o no, mandos a distancia por infrarrojos IR (locales), por radiofrecuencia
RF (hasta 50 metros), por teléfono, SMS o por PC (de forma local e incluso a
través de Internet). Estos elementos emiten órdenes que necesitan un medio de
transmisión
o Medio de transmisión: Según la tecnología aplicada existen distintos medios,
fibra óptica, bus dedicado, red eléctrica, línea telefónica, TCP/IP, por el aire.
o Actuadores reciben las órdenes y las transforman en señales de aviso, regulación
o conmutación. Los actuadores ejercen acciones sobre los elementos a controlar
en el hogar.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
68
o Sensores: Son los "ojos del sistema", o "la adquisición de datos" del sistema,
pueden ser todo lo sofisticados que queramos, lo necesario es que lo pueda
entender el sistema. Estos datos pueden ser órdenes directas a los Actuadores o
pueden ir previamente a una central domótica, en función de la programación en
ella introducida saldrá la orden final al Actuador correspondiente. Ejemplos de
sensores son los detectores de fuga de agua, de gas, de humo y/o fuego, de
concentración de CO, de movimiento o intrusión, los termostatos.
o Elementos externos. Los elementos y/o sistemas instalados en el hogar que son
controlados por el sistema domótico.
El medio de transmisión en el sistema X-10 es la red eléctrica de 230 V de la
vivienda; en una instalación monofásica, las órdenes se propagan en todas direcciones
pasando incluso por los magneto térmicos. La red eléctrica para X-10 sería el
equivalente al Bus de otros sistemas como EIB o LonWorks, claro está, salvando las
distancias.
A continuación le presentaremos un esquema básico de una instalación X-10, la cual
le puede aclarar dudas sobre los beneficios y comodidades que le puede brindar este
sistema, además podrá observar algunas de las aplicaciones que se pueden realizar en su
hogar.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
69
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
70
Cómo se transmiten las órdenes X-10 por la red eléctrica
El sistema X-10 es un estándar de Transmisión a través de corriente portadora, el
cual permite conectar dispositivos a su red eléctrica, persianas, luces, toldos y demás
equipos que utilicen una alimentación de 220 V, para ser administrados mediante
equipos compatibles con esta tecnología.
El protocolo está formado de tal forma que la señal portadora es captada por
cualquier modulo receptor conectado a la línea de alimentación eléctrica, traduciéndose
en un evento ON, Off, DIM.
El sistema X-10 utiliza la señal senoidal de 50 HZ de la vivienda para que
transporte las señales X-10. La técnica se denomina de "corrientes portadoras" (Power
Line Carrier).
No es el único sistema domótico que utiliza esta técnica, EHS de Fagor o X2D
de Delta Dore utilizan la misma técnica con parámetros y protocolos distintos, incluso
EIB (Power Line EIB) hizo un intento que no debió tener éxito dada la escasa
comercialización de los productos. Otro dato de interés es que ya existe un hotel en
España que utiliza la técnica de corrientes portadoras para ofrecer Internet a sus clientes.
El protocolo de modulación X-10 exige unas normas, que siguen todos los
fabricantes de productos X-10 para lograr una correcta estandarización, de este modo
todos los productos de los distintos fabricantes son compatibles e intercambiables. Entre
los fabricantes más conocidos podemos citar: Leviton Manufacturing Co., General
Electric, C&K Systems, Honeywell, Busch Jaeger, Ademco, DSC, IBM y un largo etc.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
71
Para modular la señal de 50 Hz europea (en USA es de 60 HZ) el transmisor
utiliza un oscilador opto acoplado que vigila el paso por cero de la señal senoidal.
Se puede insertar la señal X-10 en el semiciclo positivo o en el negativo de la
onda senoidal. La codificación de un bit 1 o de un bit 0, depende de cómo se inyecte
esta señal en los dos semiciclos. Un 1 binario se representa por un pulso de 120 KHz
durante 1 milisegundo y el 0 binario se representa por la ausencia de ese pulso de 120
KHz. En un sistema trifásico el pulso de 1 milisegundo se transmite con el paso cero
para cada una de las tres fases.
Por lo tanto, el Tiempo de Bit coincide con los 20 msg que dura el ciclo de la
señal, de forma que la velocidad binaria de 50 bps viene impuesta por la frecuencia de
la red eléctrica que tenemos en Europa. En Estados Unidos la velocidad binaria son 60
bps.
La transmisión completa de una orden X-10 necesita once ciclos de corriente
alterna. Esta trama se divide en tres campos de información: los dos primeros
representan el código de inicio, los cuatro siguiente el código de casa (Letras A - P), y
los cinco últimos código numérico (1 - 16) o bien el código función (encendido,
apagado, aumento o disminución de intensidad).
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
72
Para aumentar la fiabilidad del sistema, esta trama (Código de Inicio, Código de
Casa y Código de Función o Numérico) se transmite siempre dos veces, separándolas
por tres ciclos completos de corriente. Hay una excepción, en funciones de regulación
de intensidad, se transmiten de forma continuada (por lo menos dos veces) sin
separación entre tramas.
En definitiva este protocolo básico X-10, decimos básico puesto que existe uno
extendido que hasta solicita petición de estado a los módulos actuadores, alerta al
sistema con los bits de inicio, con los códigos de Casa y Numérico dice a quien va
dirigida la orden y, con los bits de función, la acción que debe ejecutar.
Cómo se configuran los módulos X-10
o Actuadores:
• Módulos de Aparato o de Potencia. Para el encendido/apagado de
equipos.
• Módulos de Iluminación. Para el control de luces con variación de su
intensidad de iluminación (dimmer).
• Módulos de Persiana. Para regular el movimiento de persianas, cortinas,
toldos, válvulas motorizadas con movimiento en dos direcciones...
o Sensores:
• Sensores no X-10 adaptados mediante transmisor universal X-10.
Detectores de humo y fuego, detectores de rotura de cristal, de apertura
de puertas y ventana, de fuga de gas y agua, termostatos
convencionales...
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
73
• Sensor de presencia X-10 por RF con sensibilidad de luz.
• Termostato X-10.
o Controladores:
• Miniprogramador. Programación horaria, simulación de presencia,
teclado
• Mandos a distancia multimedia por RF. Domótica + Mando universal.
• Mandos RF de X-10.
• Programador PC + Software ActiveHome. Macros, programación
horaria, simulación de presencia....
También hablaremos de los filtros X-10 y de cómo acoplar una instalación
trifásica.
Cualquier módulo X-10 se configura asignándole un Código de Casa y un
Código Numérico.
Los equipos X-10 poseen dos ruedas las cuales son utilizadas para la
configuración en la red eléctrica, la primera es de color rojo esta representa el código de
la casa y está identificada con las letras desde la A hasta la P y la segunda marcada de
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
74
color negro representa el numero del modulo o numérico que corresponde a dicho
dispositivo, usted puede realizar todas las combinaciones posibles entre las dos ruedas
para identificar sus equipos de esta forma podrá obtener hasta 256 direcciones distintas.
Este es el máximo número de dispositivos diferenciados que compone un sistema
domótico X-10.
Si dos actuadores tienen los mismos códigos de casa y numérico, ejecutarán
simultáneamente las órdenes procedentes por la red eléctrica. Si a dos detectores de
presencia X-10 se les asigna los mismos códigos, cosa que puede resultar útil para
encender las luces de escalera desde dos plantas distintas por ejemplo, mandarán la
misma orden.
Tipos de Dispositivos X-10
Como hemos visto los sensores de un sistema domótico transmiten órdenes
mientras que los actuadores las reciben; por este motivo X-10 hace una clasificación y
asigna a sus dispositivos unos logos para identificar su función, son los siguientes:
Transmisores: Estos transmisores envían una señal especialmente codificada de bajo
voltaje que es superpuesta sobre el voltaje del cableado. Un
transmisor es capaz de enviar información hasta 256
dispositivos sobre el cableado eléctrico. Múltiples
transmisores pueden enviar señales al mismo módulo.
Receptores: Como los receptores y transmisores, pueden comunicarse con 256
direcciones distintas. Cuando se usan con algunos controladores de computadoras, estos
dispositivos pueden reportar su estado.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
75
Bidireccionales: Estos dispositivos toman la seña enviada por los dispositivos
transmisores. Una vez que la señal es recibida el dispositivo responde encendiéndose
(ON) o apagándose (OFF). Los receptores generalmente tienen un código establecido
por el usuario para indicar la dirección del dispositivo. Múltiples dispositivos con el
mismo código pueden co-existir y responder al mismo tiempo dentro de una misma
casa.
Los dispositivos bidireccionales, tienen la capacidad de responder y confirmar la
correcta realización de una orden, lo cual puede ser muy útil cuando el sistema X-10
está conectado a un programa de ordenador que muestre los estados en que se encuentra
la instalación domótica de la vivienda. Este es el caso del Programador para PC
Inalámbricos: Una unidad que permite conectarse a través de una antena y enviar
señales de radio desde una unidad inalámbrica e inyectar la seña X10 en el cableado
eléctrico (como los controles remotos para abrir los portones de los garajes). Estas
unidades no están habilitadas para controlar directamente a un receptor X10, debe
utilizarse un módulo transceptor.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
76
4.1 OBJETIVOS FUNCIONALES 4.2 OBJETIVOS TECNOLÓGICOS 4.3 CASOS DE USO
4.3.1 X10 MEDIA CLIENT 4.3.2 X10 MEDIA SERVER
4. REQUISITOS
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
77
4. REQUISITOS
4.1 OBJETIVOS FUNCIONALES
Se pretende implementar una aplicación cliente/servidor donde, un dispositivo
móvil formará la parte cliente, y un PC hará de servidor. Entre ambas partes, se
establece una conexión remota, a partir de la tecnología inalámbrica Bluetooth.
La parte cliente será implementada en Java J2ME y será la encargada de manejar
los servicios ofrecidos por el servidor como son el manejo de los dispositivos X10,
control de medios multimedia y control del PC, mediante un interfaz sencillo y rápido
de manejar.
Los datos y funcionalidades que se van a introducir a la aplicación permanecerán
abiertas a posibles cambios y mejoras en función de los resultados obtenidos y partiendo
de una base que será el control de asistencia de los alumnos.
La parte servidor, será implementada en Java JAVA SE 6.0 y C. Será la
encargada de la recepción de las peticiones y la ejecución de las mismas. Algunas de
estas funciones también las podrá ejecutar él de manera independiente al cliente, a
través de un interfaz el cual permite a su vez toda la gestión necesaria de la aplicación.
También tendrá que implementar la transmisión de datos, para el paso de información
del PC al dispositivo móvil.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
78
En la siguiente tabla se especifican los diferentes módulos a utilizar en la
aplicación:
MÓDULOS CLIENTE
MÓDULOS SERVIDOR
GUI sencilla. Crear una conexión servidora.
Gestión BBDD Móvil. Especificar los atributos de servicio.
Búsqueda de dispositivos. Abrir las conexiones clientes.
Búsqueda de servicios. Enviar comandos a los dispositivos X10.
Establecimiento de la conexión. Enviar comandos de control de medios.
Comunicación (recepción y envío de
mensajes)
Interacción con librería dll con JNI.
Control de dispositivos X10 Gestión de dispositivos X10.
Control de Música/Video Gestión de Modos.
Pasarela JNI
Módulos del proyecto.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
79
A continuación se va a mostrar otra tabla que recoge los posibles módulos de
expansión de la aplicación, tanto en la parte cliente como en el servidor:
EXPANSIÓN CLIENTE
EXPANSIÓN SERVIDOR
GUI avanzado. GUI avanzado.
Control del PC. Control del PC.
Control de modos. Control de modos.
Módulos de expansión del proyecto.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
80
La siguiente figura va a dar una visión gráfica de los módulos, para una mejor comprensión del funcionamiento de la aplicación:
Módulos del proyecto.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
81
4.2 OBJETIVOS TECNOLÓGICOS
Se pretende utilizar dispositivos móviles, que tengan implantado la tecnología
necesaria para poder soportar la aplicación cliente, como es KVM, MIDP 2.0, CLDC
1.1 y Bluetooth. Al igual sucede con la parte servidor ya que el ordenador necesitara
soportar JAVA SE, tener un dispositivo Bluetooth y un controlador X-10 para poder
enviar señales a los distintos dispositivos X-10 configurados.
Con este proyecto se pretende afianzar los conocimientos adquiridos en el
campo de la programación en Java, además de la ampliación de los mismos,
contribuyendo a esto la implementación de la aplicación cliente en J2ME.
También es interesante el aprendizaje en la implementación y utilización de
nuevas tecnologías, como sucede con la utilización de la tecnología inalámbrica
Bluetooth, el manejo de dispositivos X-10 y el control remoto de aplicaciones
multimedia.
4.3 CASOS DE USO
Existen dos actores por aplicación, es decir, en el caso del cliente: X-10 Media
Client, tenemos al usuario y al servidor, y en el caso del servidor: X-10 Media Server,
nos encontramos con el usuario y la aplicación cliente
El usuario va a manejar tanto la aplicación cliente como la servidora, ya que
ambas son necesarias para poder configurar correctamente la aplicación, además el
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
82
servidor puede interactuar con parte del sistema de forma independiente, pero el cliente
es realmente el que está pensado para interactuar con el sistema una vez configurado el
servidor.
Las principales operaciones que se van a desarrollar en el sistema cliente son:
• Ver dispositivos X-10.
• Encender dispositivo X-10.
• Apagar dispositivo X-10.
• Regular dispositivo X-10.
• Ver modos.
• Enviar modo.
• Obtener estado del reproductor.
• Ver listas de reproducción.
• Ver el contenido de una lista de reproducción.
• Silenciar el audio del PC.
• Regular el volumen del reproductor.
• Repetir una pista.
• Orden aleatorio.
• Reproducir una lista de reproducción.
• Apagar PC.
• Mover el ratón.
• Hacer clic con el ratón.
• Enviar texto.
• Ejecutar una aplicación.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
83
• Enviar pulsación de tecla.
• Establecer conexión con el PC.
• Enviar peticiones.
• Recibir datos.
Las principales operaciones que se van a desarrollar en el sistema servidor son:
• Configurar sistema.
• Encender dispositivo X-10.
• Apagar dispositivo X-10.
• Regular dispositivo X-10.
• Enviar teclado multimedia.
• Guardar teclado multimedia.
• Enviar ruta de la carpeta con las listas.
• Dar de alta una aplicación.
• Borrar una aplicación.
• Enviar teclado control PC.
• Guardar teclado control PC.
• Guardar modo.
• Actualizar lista de dispositivos X10.
• Borrar modo.
• Encender todas las luces.
• Apagar todas las luces.
• Apagar todas las unidades.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
84
• Añadir dispositivo X10.
• Borrar dispositivo X10.
• Enviar lista de dispositivos X10.
• Enviar lista de modos.
• Recibir datos.
• Ejecutar petición.
• Abrir conexión Bluetooth.
• Abrir conexión X10.
A continuación vamos a ver los diagramas de casos de uso de cada aplicación.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
85
4.3.1 X10 MEDIA CLIENT
Ver dispositivos X-10
Encender dispositivo X-10
Apagar dispositivo X-10
Regular dispositivo X-10
Ver modos
Enviar modo
Obtener estado del reproductor
Ver listas de reproducción
Ver el contenido de una lista de reproducción
Silenciar el audio del PC
Regular el volumen del reproductor
Repetir una pista
Orden aleatorio
Reproducir una lista de reproducción
Apagar PC
Mover el ratón
Hacer clic con el ratón.
Enviar texto
Ejecutar una aplicación
Enviar pulsación de tecla
Establecer conexión con el PC
Enviar peticiones
Recibir datos
UsuarioX-10 Media Server
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
86
4.3.2 X10 MEDIA SERVER
Configurar sistema
Encender dispositivo X-10
Apagar dispositivo X-10
Regular dispositivo X-10
Enviar teclado multimedia
Guardar teclado multimedia
Enviar ruta de la carpeta con las listas
Dar de alta una aplicación
Borrar una aplicación
Enviar teclado control PC
Guardar teclado control PC
Guardar modo
Actualizar lista de dispositivos X10
Borrar modo
Encender todas las luces
Apagar todas las luces
Apagar todas las unidades
Añadir dispositivo X10
Ejecutar una aplicación
Borrar dispositivo X10
Enviar lista de dispositivos X10
Enviar lista de modos
Recibir datos
Usuario X-10 Media Client
Ejecutar peticion
Abrir conexión Bluetooth
Abrir conexión X10
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
87
5. DISEÑO
5.1 DIAGRAMA DE LA ARQUITECTURA
5.1.1 X10 MEDIA CLIENT
5.1.1.1 DIAGRAMA DE PAQUETES
5.1.1.2 DESCRIPCIÓN DE LOS PAQUETES
5.1.2 X10 MEDIA SERVER
5.1.2.1 DIAGRAMA DE PAQUETES
5.1.2.2 DESCRIPCIÓN DE LOS PAQUETES
5.2 MODELO DINÁMICO DETALLADO
5.2.1 DIAGRAMAS DE COLABORACIÓN
5.2.2 X10 MEDIA CLIENT
5.2.3 X10 MEDIA SERVER
5.3 MODELO ESTRUCTURAL DETALLADO
5.3.1 X10 MEDIA CLIENT
5.3.1.1 DIAGRAMA DE CLASE DEL PAQUETE APP
5.3.1.2 DIAGRAMA DE CLASE DEL PAQUETE COMUNICACIÓN
5.3.1.3 DIAGRAMA DE CLASE DEL PAQUETE OBJ
5.3.1.4 DIAGRAMA DE CLASE DEL PAQUETE UI
5.3.1.5 DIAGRAMA DE CLASE DEL PAQUETE UTIL
5.3.2 X10 MEDIA SERVER
5.3.2.1 DIAGRAMA DE CLASE DEL PAQUETE APP
5.3.2.2 DIAGRAMA DE CLASE DEL PAQUETE COMUNICACIÓN
5.3.2.3 DIAGRAMA DE CLASE DEL PAQUETE OBJ
5.3.2.4 DIAGRAMA DE CLASE DEL PAQUETE UI
5.3.2.5 DIAGRAMA DE CLASE DEL PAQUETE UTIL
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
88
5. DISEÑO
5.1 DIAGRAMA DE LA ARQUITECTURA
5.1.1 X10 MEDIA CLIENT
5.1.1.1 DIAGRAMA DE PAQUETES
5.1.1.2 DESCRIPCIÓN DE LOS PAQUETES
App
Contiene la clase principal de la aplicación, en ella se maneja el ciclo de vida de
la aplicación. Es quien inicia la aplicación. Está compuesto por:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
89
− Main: se encarga del ciclo de vida de la aplicación.
Comunicación
Contiene todo el control de la comunicación Bluetooth. Está compuesto por:
− ConexionBT: contiene todas las operaciones necesarias para
realizar la conexión, leer y escribir a través de Bluetooth.
Ui
Contiene todo la interfaz gráfica. Está compuesto por:
− BT: Interfaz encargado de mostrar la información de
conexiones anteriores o si no las ha habido, muestra todo el
proceso de búsqueda de dispositivos y establecimiento de la
conexión.
− CanvasIni: Pantalla de presentación de la aplicación donde se
muestra su nombre, autor, etc.
− CanvasMedia: Pantalla del menú principal correspondiente al
control multimedia.
− CanvasPC: Pantalla del menú principal correspondiente al
control del PC.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
90
− CanvasX10: Pantalla del menú principal correspondiente al
control de todo lo relacionado con los dispositivos X-10.
− ControlMedia: Interfaz encargado de mostrar el reproductor,
con sus opciones de control: play, pause, volumen, etc.
− ControlPC: Interfaz encargado de mostrar todo lo referente al
control del PC, como es el control de ratón, ejecución de
aplicaciones, etc.
− Enviar Texto: Caja de texto que sirve para componer el
mensaje de texto que se quiere enviar al PC.
− Lista de aplicaciones: Lista con todas las aplicaciones,
previamente configuradas en el PC, que se quieren abrir.
− ListaComandos: Lista de opciones a realizar sobre un
dispositivo X-10 como son encender, apagar y regular.
− ListaDispX10: Lista con todos los dispositivos X-10
configurados.
− ListaMenuX10: Lista de opciones principal del menú de
control X-10. En ella se muestran las opciones: Dispositivos
X-10 y Modos.
− ListaModos: Lista de todos los modos configurados.
− ListaPistas: Lista con el contenido correspondiente a una lista
de reproducción seleccionada anteriormente.
− ListasR: Lista con todas las listas de reproducción
configuradas.
− Regulador: Interfaz para regular de forma gráfica las luces.
− Volumen: Interfaz para regular de forma gráfica el volumen.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
91
Obj
Contiene todos los objetos del modelo de dominio. Está compuesto por:
− CControlPC: Sirve para encapsular información referente a
mensajes de control multimedia y del PC, como son el
volumen, siguiente canción, play, pause, apagar, etc.
Posteriormente será des encapsulada y utilizada para enviar
dichas peticiones al servidor.
− CX10: Sirve para encapsular información referente a mensajes
de control X-10 como son encender, apagar, regular y los
modos. Posteriormente será des encapsulada y utilizada para
enviar dichas peticiones al servidor.
− Comando: Define el tipo de comando a enviar.
− Conexión: Sirve para almacenar información referente a la
conexión Bluetooth establecida con el servidor, para ser
mostrada posteriormente cuando se vuelva a utilizar la
aplicación y así no tener que pasar por el proceso de búsqueda
y conexión de dispositivos, siempre que este sea el mismo.
Contiene el nombre y la URL de conexión.
− DispX10: Contiene la información referente a un dispositivo
X-10 como es el nombre, dirección y tipo.
− Mensaje: Es utilizada parar guardar información relacionada
con el manejo de las listas de reproducción y el control del
PC. Tiene tipo de mensaje, mensaje y valor.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
92
− Modo: Contiene el nombre un modo.
− Tecla: Contiene el nombre de la tecla y la acción.
− Teclado: Contiene toda la configuración del teclado
configurada para los distintos interfaces.
− TipoX10: Tipo de dispositivo X-10.
Util
Contiene la clase encargada de gestionar el almacenamiento. Está compuesto
por:
− Rms: En ella se implementan todos los métodos necesarios
para el manejo del almacenamiento persistente, como son
abrir, cerrar, leer, escribir, etc.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
93
5.1.2 X10 MEDIA SERVER
5.1.2.1 DIAGRAMA DE PAQUETES
5.1.2.2 DESCRIPCIÓN DE LOS PAQUETES
App
Contiene la clase principal de la aplicación. Es quien inicia la aplicación. Está
compuesto por:
− Main: se encarga de crear parte del interfaz de la aplicación, la
que lo gestiona, y controla los eventos.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
94
Comunicación
Contiene todo el control de la comunicación Bluetooth y X-10. Está compuesto
por:
− BT: es la encargada de cargar los puertos Bluetooth.
− Conexión: es la encargada de abrir y cerrar la conexión
Bluetooth.
− Escritura: proporciona diferentes métodos para poder enviar
datos a través de la conexión Bluetooth.
− Lectura: proporciona una serie de métodos para permanecer a
la escucha de recibir mensajes a través de la conexión
Bluetooth.
− X10com: es la encargada de realizar toda la comunicación con
los dispositivos X-10, como es abrir la conexión, cerrarla y
enviar todos los comandos a los dispositivos.
Ui
Contiene todo la interfaz gráfica. Está compuesto por:
− UIApp: Panel de las aplicaciones.
− UIModo: Panel de modos.
− UIX10Btn: Panel de dispositivos X-10.
− UIX10Reg: Panel de dispositivos X-10 con regulador.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
95
− Ventana: Aporta el estilo, apariencia y colores de la
aplicación.
− VentanaAcercaDe: Ventana informativa.
− VentanaAñadirDisp: Ventana para añadir dispositivos.
− VentanaBorrarDisp: Ventana para borrar dispositivos.
− VentanaConfiguracion: Ventana para la configuración de
puertos.
− PestañaControlPC: Pestaña de configuración de control del
PC.
− PestañaModo: Pestaña de gestión de modos.
− PestañaMedios: Pestaña de configuración del control de
medios.
Obj
Contiene todos los objetos del modelo de dominio. Está compuesto por:
− App: Contiene la información relacionada con las aplicaciones
configuradas, como es el nombre y la ruta de la misma.
− CControlPC: Sirve para encapsular información referente a
mensajes de control.
− Comando: Comando X-10 a ejecutar, con los valores
dirección, acción y nivel.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
96
− Configuración: Utilizada para almacenar la información
referente a la configuración de los puertos Bluetooth y X-10.
− Control: Utilizada como pasarela con los métodos nativos.
− DispositivoX10: Contiene la información referente a un
dispositivo X-10 como es el nombre, dirección, tipo, estado,
etc.
− Estado: Utilizado para controlar el estado de los dispositivos.
− LineaModo: Representa gráficamente un modo.
− Modo: Utilizada para almacenar el nombre de los modos y sus
vectores de dispositivos X-10 asociados.
− Pista: Información referente a una pista, como es el nombre,
grupo, ruta y duración.
− Tecla: Contiene el nombre de la tecla y la acción.
− TipoX10: Tipo de dispositivo X-10.
Util
Contiene la clase encargada de gestionar el almacenamiento. Está compuesto
por:
− Fichero: En ella se implementan todos los métodos necesarios
para el manejo de fichero como son el leer, borrar, escribir, y
de lecturas especiales como son el caso de las listas de
reproducción.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
97
5.2 MODELO DINÁMICO DETALLADO
5.2.1 DIAGRAMAS DE COLABORACIÓN
A continuación se mostrarán los diagramas de colaboración más representativos,
los cuales nos darán una idea del modo de funcionamiento de la aplicación.
5.2.1.1 X10 MEDIA CLIENT
• Encender dispositivo X-10.
CanvasX10
ListaMenuX10
1: keyPressed(keyCode) 2: action = getGameAction(keyCode)
[action == DOWN] 3 : new ListaMenuX10(app, pantalla, conBT)
4: commandAction(c, d) [c==this.SELECT_COMMAND &&
this.getString(this.getSelectedIndex()).equals(“Dispositivos X10”))] 5: new ListaDispX10(app, pantalla, conBT)
1
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
98
ListaDispX10 6: this.mostrarRS() 7: commandAction(c, d) [c==this.SELECT_COMMAND] 8: this.leerRS()
9: new ListaComandos()
ListaComandos 10: commandAction(c, d) [c==this.SELECT_COMMAND] 11: switch(this.getSelectedIndex())
[case 0] 12: conBT.escribir(new CX10(“X10”,x10a.getDir(),0,0),null,null)
conBT : escribir [cx10!=null] 13: dos.writeUTF(cx10.getTipo()); dos.writeUTF(cx10.getDir());dos.writeInt(cx10.getAccion());dos. writeInt (cx10.getTipo())
1
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
99
5.2.1.2 X10 MEDIA SERVER • Enviar lista de modos.
• Recibir datos.
• Recibir datos.
App 1: actionPerformed (e) [e.getSource() == jmiEnviarModo] 2: conexion.getOk()
Escritura
3: esc = new Escritura (this, conexion) 4: esc.enviar(2)
[opc == 2] 5: vModos = Fichero.leer(“modos.obj”) 6: dos.writeInt(vModos.size()) [i=0;i<vModos.size();i++] 7: dos.writeUTF(((Modo)vModos.get(i)).getNombre())
App 1: hilo = new Thread(Lectura.this) 2: hilo.start 3: leer() 4: inputStream = conexión.getInputStream() 5: dis = new DataInputStream (inputStream) 6: tipoObj = dis.readUTF(); [tipoObj.equals(“Tipo de objeto”)] 7: “Acción según tipo de objeto” 8: dis.close() 9: hilo = new Thread(Lectura.this) 10: hilo.start
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
100
5.3 MODELO ESTRUCTURAL DETALLADO
5.3.1 X10 MEDIA CLIENT
5.3.1.1 DIAGRAMA DE CLASE DEL PAQUETE APP
Main
-pantalla: Display
<<create>>+Main()+startApp()+pauseApp()+destroyApp(unconditional: boolean)+getPantalla(): Display+getApp(): Main+salirApp()
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
101
5.3.1.2 DIAGRAMA DE CLASE DEL PAQUETE COMUNICACIÓN
ConexionBT
-bt: BT-con: StreamConnection-dos: DataOutputStream-dis: DataInputStream~fin: boolean = false-dispositivoLocal: LocalDevice-da: DiscoveryAgent-devList: RemoteDevice[*]-dispositivos_encontrados: Vector = new Vector()-servicios_encontrados: Vector = new Vector()-serviceRecord: ServiceRecord-disRemoto: RemoteDevice-vDispX10Rec: Vector = new Vector()-rsConexionBT: RecordStore-rsDispX10: RecordStore-rsModos: RecordStore-rsTeclado: RecordStore-rsListaR: RecordStore-rsPistas: RecordStore-rsApps: RecordStore-nombreDisp: String-hilo: Thread-conx: Conexion = null~conexionAnteriorEncontrada: boolean = false-conBT: ConexionBT-listasR: ListasR-controlMedia: ControlMedia
<<create>>+ConexionBT(bt: BT)<<create>>+ConexionBT()+run()+iniciarHilo()+iniciarHilo(conx: Conexion)+buscarDispositivoBT()+buscarServiciosBT(dispSel: int)+leer()+escribir(cx10: CX10, controlPC: CControlPC, mensaje: Mensaje)+mostrarDispositivos()+abrir()+abrirConexion()+cerrarConexion(l: List)+cerrarConexion()+setListasR(listR: ListasR)+setControlMedia(cm: ControlMedia)+flush()
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
102
5.3.1.3 DIAGRAMA DE CLASE DEL PAQUETE OBJ
Teclado
~num0: Tecla~num1: Tecla~num2: Tecla~num3: Tecla~num4: Tecla~num5: Tecla~num6: Tecla~num7: Tecla~num8: Tecla~num9: Tecla~Ast: Tecla~Alm: Tecla~Arriba: Tecla~Abajo: Tecla~Izq: Tecla~Der: Tecla~OK: Tecla
<<create>>+Teclado(num0: Tecla, num1: Tecla, num2: Tecla, num3: Tecla, num4: Tecla, num5: Tecla, num6: Tecla, num7: Tecla, num8: Tecla, num9: Tecla, Ast: Tecla, Alm: Tecla, OK: Tecla, Arriba: Tecla, Abajo: Tecla, Izq: Tecla, Der: Tecla)+getNum0(): Tecla+getNum1(): Tecla+getNum2(): Tecla+getNum3(): Tecla+getNum4(): Tecla+getNum5(): Tecla+getNum6(): Tecla+getNum7(): Tecla+getNum8(): Tecla+getNum9(): Tecla+getAst(): Tecla+getAlm(): Tecla+getArriba(): Tecla+getAbajo(): Tecla+getIzq(): Tecla+getDer(): Tecla+getOK(): Tecla
Mensaje
-tipo: String-mensaje: String-valor: int
<<create>>+Mensaje(tipo: String, mensaje: String)<<create>>+Mensaje(tipo: String, valor: int)+getAccion(): String+getMensaje(): String+getValor(): int
TipoX10
~nombre: String~representacion: String~modelo: String
<<create>>+TipoX10(nombre: String, representacion: String, modelo: String)+getRepresentacion(): String+getModelo(): String
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
103
Tecla
-tecla: int-accion: String
<<create>>+Tecla(_tecla: int, _accion: String)+getAccion(): String+getTecla(): int
Modo
~nombre: String
<<create>>+Modo(nombre: String)+getNombre(): String
Comando
~tipo: String = null
+getTipo(): String
DispX10
~nombre: String~dir: String~tipo: TipoX10
<<create>>+DispX10(nombre: String, dir: String, tipo: TipoX10)+getNombre(): String+getDir(): String+getTipo(): TipoX10
CX10
~dir: String~accion: int~nivel: int
<<create>>+CX10(tipo: String, dir: String, accion: int, nivel: int)+getDir(): String+getAccion(): int+getNivel(): int
CControlPC
~funcion: String~valor: int
<<create>>+CControlPC(_tipo: String, _funcion: String, _val: int)+getFuncion(): String+getValor(): int
Conexion
-nombre: String-url: String
<<create>>+Conexion(nombre: String, url: String)+getNombre(): String+getUrl(): String
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
104
5.3.1.4 DIAGRAMA DE CLASE DEL PAQUETE UI
ControlMedia
-pantalla: Display-cmdSalir: Command-cmdPL: Command-cmdRepetir: Command-cmdAleatorio: Command-cmdVolumen: Command-cmdMute: Command-app: Main-conBT: ConexionBT-estado: String-numPista: int-teclado: Teclado = null-img: Image = null-opc: int = 0-vPistas: Vector = new Vector()-repetir: boolean = false-aleatorio: boolean = false-volumen: int = 0-duracion: String = "0:00"
<<create>>+ControlMedia(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+paint(g: Graphics)+keyReleased(keyCode: int)+keyPressed(keyCode: int)+accion(accion: String)+getTitulo()+getEstado()+setEstado(estado: int, repetir: boolean, aleatorio: boolean, volumen: int, tiempo: String)+setVolumen(valor: int)+setDuracion(tiempo: String)
BT
-app: Main+lisP: List+lisR: List-con: StreamConnection~display: Display = null-hilo: Thread-dis: DataInputStream~fin: boolean = false~encontradaConxionAnterior: boolean = false-opcion: int~cmdSalir: Command = new Command("Salir", Command.EXIT, 0)-dispositivos_encontrados: Vector = new Vector()-servicios_encontrados: Vector = new Vector()-dispositivo_seleccionado: int = -1-pantalla: Display-vDispX10Rec: Vector = new Vector()-rs: RecordStore-conBT: ConexionBT-conx: Conexion
<<create>>+BT(app: Main, pantalla: Display)-pantallaPrincipal()+commandAction(c: Command, d: Displayable)+mostrarAlarma(s: String, disp: Displayable)+iniciar()+getLisR(): List+mostrarAlarma(titulo: String, texto: String)+setLisP(txt: String)+borrarLisP()+setOpcion(opc: int)+pasaraCanvasX10()
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
105
EnviarTexto
-CMD_OK: Command = new Command("Enviar",Command.OK,1)-CMD_VOLVER: Command = new Command("Volver",Command.BACK,1)-CMD_ENTER: Command = new Command("Enter",Command.BACK,1)-pantalla: Display-app: Main-conBT: ConexionBT-tbMensaje: TextBox
<<create>>+EnviarTexto(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)
Regulador
-app: Main-pantalla: Display-btnVolver: Command-btnRegular: Command-gRegulador: Gauge-conBT: ConexionBT-dir: String
<<create>>+Regulador(app: Main, pantalla: Display, conBT: ConexionBT, dir: String)+commandAction(c: Command, d: Displayable)+itemStateChanged(i: Item)
ListaAplicaciones
-app: Main-btnVolver: Command-rs: RecordStore-pantalla: Display-v: Vector = new Vector()-conBT: ConexionBT
<<create>>+ListaAplicaciones(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+mostrarRS()+leerRS()
CanvasPC
-pantalla: Display-cmdSalir: Command-app: Main-conBT: ConexionBT
<<create>>+CanvasPC(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+paint(g: Graphics)+keyPressed(keyCode: int)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
106
ListaPistas
-app: Main-btnVolver: Command-rs: RecordStore-pantalla: Display-conBT: ConexionBT
<<create>>+ListaPistas(app: Main, pantalla: Display, conBT: ConexionBT, lista: String)+commandAction(c: Command, d: Displayable)+mostrarRS(nombre: String)
Volumen
-app: Main-pantalla: Display-btnVolver: Command-gRegulador: Gauge-conBT: ConexionBT-volumenPintar: int
<<create>>+Volumen(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+itemStateChanged(i: Item)
ListaModos
-app: Main-btnVolver: Command-rs: RecordStore-pantalla: Display-v: Vector = new Vector()-conBT: ConexionBT
<<create>>+ListaModos(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+mostrarRS()+leerRS()
ListasR
-app: Main-btnVolver: Command-btnVer: Command-rs: RecordStore-pantalla: Display-v: Vector = new Vector()-conBT: ConexionBT-elegida: boolean = false
<<create>>+ListasR(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+mostrarRS(nombre: String)+mostrarListaPistas()
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
107
ListaMenuX10
-app: Main-btnVolver: Command-pantalla: Display-conBT: ConexionBT
<<create>>+ListaMenuX10(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)
ListaDispX10
-app: Main-btnVolver: Command-rs: RecordStore-pantalla: Display-v: Vector = new Vector()-conBT: ConexionBT
<<create>>+ListaDispX10(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+mostrarRS()+leerRS()
ListaComandos
-app: Main-pantalla: Display-btnVolver: Command-conBT: ConexionBT-x10a: DispX10
<<create>>+ListaComandos(app: Main, pantalla: Display, x10a: DispX10, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)
ControlPC
-pantalla: Display-cmdVolver: Command-cmdApagar: Command-cmdEjecutar: Command-cmdEnviarTexto: Command-app: Main-conBT: ConexionBT-sw: boolean = true-tecla: String-miThread: Thread-miHilo: Hilo-para: boolean = false
<<create>>+ControlPC(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+paint(g: Graphics)+keyReleased(keyCode: int)+keyPressed(keyCode: int)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
108
CanvasX10
-pantalla: Display-cmdSalir: Command-app: Main-conBT: ConexionBT
<<create>>+CanvasX10(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+paint(g: Graphics)+keyPressed(keyCode: int)
CanvasMedia
-pantalla: Display-cmdSalir: Command-app: Main-conBT: ConexionBT
<<create>>+CanvasMedia(app: Main, pantalla: Display, conBT: ConexionBT)+commandAction(c: Command, d: Displayable)+paint(g: Graphics)+keyPressed(keyCode: int)
CanvasIni
-pantalla: Display-screen: SSCanvas-exitCommand: Command-t: Timer = new Timer()-app: Main
<<create>>+CanvasIni(app: Main, pantalla: Display)-concluir()#showNotify()
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
109
5.3.1.5 DIAGRAMA DE CLASE DEL PAQUETE UTIL
Rms
+rs: RecordStore+fecha_: String-disRemoto: RemoteDevice
<<create>>+Rms()+abrirRs(nombre: String): RecordStore+escribirConexionRs(conx: Conexion, rs: RecordStore)+leerConexionRs(id: int, rs: RecordStore): Conexion+escribirX10Rs(x10: DispX10, rs: RecordStore)+leerModo(id: int, rs: RecordStore): Modo+leerString(id: int, rs: RecordStore): String+escribirModo(modo: Modo, rs: RecordStore)+escribirString(s: String, rs: RecordStore)+leerTeclado(nombre: String): Teclado+leerTecla(id: int, rs: RecordStore): Tecla+escribirTeclado(tecla: Tecla, rs: RecordStore)+sustituirDatoRs(dato: String, id: int, rs: RecordStore)+leerX10Rs(id: int, rs: RecordStore): DispX10+cerrarRs(rs: RecordStore)+destruirRs(nombre: String)+compare(reg1: byte, reg2: byte): int+existeRS(nombre: String, l: List): boolean+vaciarRS(nombre: String, l: List, conBT: ConexionBT)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
110
5.3.2 X10 MEDIA SERVER
5.3.2.1 DIAGRAMA DE CLASE DEL PAQUETE APP
Main
-jpDispositivos: JPanel-jpModos: JPanel-jlConexion: JLabel-jmnBar: JMenuBar-jmnArchivo: JMenu-jmnCommand: JMenu-jmnConf: JMenu-jmnVentana: JMenu-jmiSalir: JMenuItem-jmiAñadirDisp: JMenuItem-jmiBorrarDisp: JMenuItem-jmiEnviarDisp: JMenuItem-jmiEnviarModo: JMenuItem-jmiAcercaDe: JMenuItem-jmiLucesOn: JMenuItem-jmiLucesOff: JMenuItem-jmiTodoOff: JMenuItem-jmiOpciones: JMenuItem-jpVentana: JPanel-icon: ImageIcon-img: Image-miSalir: MenuItem-trayIcon: TrayIcon-vDisp: Vector = new Vector()-x10com: X10com-conexion: Conexion-hilo: Thread
<<create>>+Main(titulo: String)+main(args: String)+actionPerformed(e: ActionEvent)+run()-conexionX10()+cerrarConexionX10()+mostrarAlarma(s: String)+añadirDisp()+añadirDispMod(dir: String, estado: String, estado2: String)+abrirConexion()+abrirApp(path: String)+escribir(opcion: int)+tecla(tecla: String)+clickIzquierdo()
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
111
5.3.2.2 DIAGRAMA DE CLASE DEL PAQUETE COMUNICACIÓN
X10com
+PUERTO_DEFECTO: String = "COM2"-puerto: String-contServer: ControllerServer-controller: CM11ASerialController = null-cmd: Command
<<create>>+X10com()+abrirConexion(puerto: String)+cerrarConexion()+ejecutarComando(comando: Comando)-encender(comando: Comando)-apagar(comando: Comando)-regular(comando: Comando)-regularBRIGHT(res: int, dir: String)-regularDIM(res: int, dir: String)
Lectura
-x10com: X10com-conexion: Conexion-main: Main
<<create>>+Lectura(_main: Main, _conexion: Conexion, x10: X10com)+run()+leer()+listarPistas(pathPL: String)
Escritura
-outputStream: OutputStream-dos: DataOutputStream-main: Main-vDisp: Vector = new Vector()
<<create>>+Escritura(_main: Main, conexion: Conexion)+enviar(opc: int)+enviarPistas(vPistas: Vector)+enviarTitulo(titulo: String)+enviarDuracion(tiempo: String)+enviarEstado(estado: int, repetir: boolean, aleatorio: boolean, volumen: int, tiempo: String)
Conexion
-nombrePuerto: String-outputStream: OutputStream-inputStream: InputStream-serialPort: SerialPort~ok: int
<<create>>+Conexion(puerto: String)+open(): int+getOutputStream(): OutputStream+getInputStream(): InputStream+getOk(): int+cerrarConexion()
BT
~portId: CommPortIdentifier~portList: Enumeration-main: Main
<<create>>+BT(main_: Main)<<create>>+BT()+cargarPuertos(v: Vector)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
112
5.3.2.3 DIAGRAMA DE CLASE DEL PAQUETE OBJ
App
~nombre: String~ruta: String
<<create>>+App(nombre: String, ruta: String)+getNombre(): String+getRuta(): String
TipoX10
~nombre: String~representacion: String~modelo: String
<<create>>+TipoX10(nombre: String, representacion: String, modelo: String)+getRepresentacion(): String+getModelo(): String
Pista
~nombre: String~grupo: String~ruta: String~duracion: int
<<create>>+Pista(_nombre: String, _grupo: String, _ruta: String, _duracion: int)+getNombre(): String+getGrupo(): String+getRuta(): String+getDuracion(): int+toString(): String
Modo
~nombre: String~dispX10: Vector
<<create>>+Modo(nombre: String, dispX10: Vector)+getNombre(): String+getDispositivos(): Vector
Tecla
-tecla: int-accion: String
<<create>>+Tecla(_tecla: int, _accion: String)+getAccion(): String+getTecla(): int
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
113
LineaModo
-jlNombre: JLabel-jcbEstado: JComboBox-jcbRegular: JComboBox-pestModo: PestañaModo-dim: boolean-dispx10: DispositivoX10
<<create>>+LineaModo(pestModo: PestañaModo, dispx10: DispositivoX10, regulador: boolean)+getRegulara(): int+getEstado(): String+getDim(): boolean+getDispositivoX10(): DispositivoX10
Estado
~direccion: String~valorAnterior: int
<<create>>+Estado(direccion: String, valorAnterior: int)+getDir(): String+getValor(): int
DispositivoX10
-nombre: String-direccion: String-tipo: TipoX10-estado: String-urlIcon: String~regulara: int
<<create>>+DispositivoX10(nombre: String, direccion: String, tipo: TipoX10, estado: String, urlIcon: String)+getDir(): String+getNombre(): String+getTipoX10(): TipoX10+getUrlIcon(): String+getEstado(): String+getRegulara(): int+setEstado(est: String)+setRegulara(reg: int)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
114
Control
-titulo: String
<<create>>+Control(cControlPC: CControlPC)<<create>>+Control()+play()+pause()+stop()+nextTrack()+prevTrack()+volumenUp()+volumenDown()+forward5Sec()+rewind5Sec()+deleteCurrentPlaylist()+savePlaylist()+getPlaylistPosition(): int+getTrackPosition(): int+getLongitudCancion(): int+moverDerechaCursor()+moverIzquierdaCursor()+moverArribaCursor()+moverAbajoCursor()+listaCompleta()+setVolume(position: int)+getVolume(): int+getCurrentSongTitle(): String+subir()+menuInicio()+setPlaylistPosition(pos: int)+getStatus(): int+isShuffleStatusOn(): boolean+isRepeatStatusOn(): boolean+setRepeatStatusOn(status: boolean)+setShuffleStatusOn(status: boolean)+getTitulo(): String
Configuracion
-comX10: String-comBT: String
<<create>>+Configuracion(comX10: String, comBT: String)+getPuertoBT(): String+getPuertoX10(): String
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
115
Comando
~dir: String~accion: int~nivel: int
<<create>>+Comando(dir: String, accion: int, nivel: int)+getDir(): String+getAccion(): int+getNivel(): int
CControlPC
~funcion: String~valor: int
<<create>>+CControlPC(_funcion: String, _val: int)+getFuncion(): String+getValor(): int
5.3.2.4 DIAGRAMA DE CLASE DEL PAQUETE UI
UIApp
<<create>>+UIApp(app: App)
Ventana
+titulo: String
<<create>>+Ventana(titulo: String)+setFondo(c: Component)
VentanaConfiguracion
-jbCancelar: JButton-jbGuardar: JButton-jlCOMX10: JLabel-jlCOMBT: JLabel-jcbX10: JComboBox-jcbBT: JComboBox-jtfNombre: JTextField-main: Main
<<create>>+VentanaConfiguracion(main: Main)+actionPerformed(e: ActionEvent)
VentanaBorrarDisp
-jbCancelarBorrarDisp: JButton-jbBorrarDisp: JButton-jlSelec: JLabel-jcbBorrar: JComboBox-jtfNombre: JTextField-main: Main
<<create>>+VentanaBorrarDisp(main: Main)+actionPerformed(e: ActionEvent)
1
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
116
VentanaAñadirDisp
-jbCancelarAñadirDisp: JButton-jbAñadirDisp: JButton-jlNombre: JLabel-jlCodigo: JLabel-jcbDir: JComboBox-jcbDir2: JComboBox-jcbTipo: JComboBox-jtfNombre: JTextField-main: Main-jpDisp: JPanel
<<create>>+VentanaAñadirDisp(main: Main, jpDisp: JPanel)+actionPerformed(e: ActionEvent)
VentanaAcercaDe
-jbCerrarAcercaDe: JButton
<<create>>+VentanaAcercaDe()+actionPerformed(e: ActionEvent)
UIX10Btn
-jlDisp: JLabel-jlEstado: JLabel-jlModelo: JLabel-jlImagenEst: JLabel-jbEA: JButton-jpBoton: JPanel-jpInfo: JPanel-x10com: X10com-icon: ImageIcon#dispx10: DispositivoX10
<<create>>+UIX10Btn(dispx10: DispositivoX10, urlIcon: String, x10: X10com)+actionPerformed(e: ActionEvent)+encender()+apagar()+añadirComponente(c1: Component, c2: Component)
UIX10Reg
-js: JSlider-x10com: X10com
<<create>>+UIX10Reg(dispx10: DispositivoX10, urlIcon: String, x10com: X10com)+stateChanged(e: ChangeEvent)
UIModo
<<create>>+UIModo(nombre: String, modo: Modo)
1
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
117
PestañaControlPC
-jbGuardar: JButton-jbBorrar: JButton-jbGuardarTeclado: JButton-jbEnviarTeclado: JButton-jbEnviarLista: JButton-jbBuscar: JButton-jpNombre: JPanel-jpBotones: JPanel-jpApps: JPanel-jpGestion: JPanel-jpDispX10: JPanel-jpTeclado: JPanel-jtfNombre: JTextField-jtfPath: JTextField-jlNombre: JLabel-jspApps: JScrollPane-jspDispX10: JScrollPane-jcbOpc0: JComboBox-jcbOpc1: JComboBox-jcbOpc2: JComboBox-jcbOpc3: JComboBox-jcbOpc4: JComboBox-jcbOpc5: JComboBox-jcbOpc6: JComboBox-jcbOpc7: JComboBox-jcbOpc8: JComboBox-jcbOpc9: JComboBox-jcbOpcAst: JComboBox-jcbOpcAlm: JComboBox-jcbOpcOK: JComboBox-jcbOpcArriba: JComboBox-jcbOpcAbajo: JComboBox-jcbOpcIzquierda: JComboBox-jcbOpcDerecha: JComboBox-jcbBorrar: JComboBox-jfcApp: JFileChooser-main: Main
<<create>>+PestañaControlPC(_main: Main)+actionPerformed(e: ActionEvent)+listarApps(): int+guardarApp()+rellenarCombo(): Vector+borrarApp()+repintar()+crearPanelGestion()+crearPanelApps()+crearPanelTeclado()
PestañaMedios
-jbGuardar: JButton-jbEnviar: JButton-jbBuscar: JButton-jbBuscarR: JButton-jbEnvPL: JButton-jl0: JLabel-jl1: JLabel-jl2: JLabel-jl3: JLabel-jl4: JLabel-jl5: JLabel-jl6: JLabel-jl7: JLabel-jl8: JLabel-jl9: JLabel-jlAst: JLabel-jlAlm: JLabel-jlOK: JLabel-jlArriba: JLabel-jlAbajo: JLabel-jlIzquierda: JLabel-jlDerecha: JLabel-jlImagen: JLabel-jlPlayList: JLabel-jlReproductor: JLabel-jcbOpc0: JComboBox-jcbOpc1: JComboBox-jcbOpc2: JComboBox-jcbOpc3: JComboBox-jcbOpc4: JComboBox-jcbOpc5: JComboBox-jcbOpc6: JComboBox-jcbOpc7: JComboBox-jcbOpc8: JComboBox-jcbOpc9: JComboBox-jcbOpcAst: JComboBox-jcbOpcAlm: JComboBox-jcbOpcOK: JComboBox-jcbOpcArriba: JComboBox-jcbOpcAbajo: JComboBox-jcbOpcIzquierda: JComboBox-jcbOpcDerecha: JComboBox-jfcPlayList: JFileChooser-jtfPath: JTextField-jtfPathR: JTextField-main: Main
<<create>>+PestañaMedios(_main: Main)+actionPerformed(e: ActionEvent)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
118
PestañaModo
-jbGuardar: JButton-jbActualizar: JButton-jbBorrar: JButton-vLM: Vector-jpNuevo: JPanel-jpNombre: JPanel-jpBotones: JPanel-jpModos: JPanel-jpBorrar: JPanel-jpDispX10: JPanel-jtfNombre: JTextField-jlNombre: JLabel-jcbBorrar: JComboBox-jspModos: JScrollPane-jspDispX10: JScrollPane
<<create>>+PestañaModo()+actionPerformed(e: ActionEvent)+añadirDisp()+listarModos(): int+guardarModo()+rellenarCombo(): Vector+borrarModo()+repintar()+crearPanelBorrar()+crearPanelNuevoModo()+crearPanelModos()
5.3.2.5 DIAGRAMA DE CLASE DEL PAQUETE UTIL
Fichero
<<create>>+Fichero()+leer(fichero: String): Vector+escribir(fichero: String, v: Vector)+borrar(fichero: String)+leerM3U(fichero: String): Vector+leerInfoPistas(vFichero: Vector): Vector
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
119
6. DISEÑO DE INTERFACES
6.1 X10 MEDIA CLIENT 6.2 X10 MEDIA SERVER
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
120
6. DISEÑO DE INTERFACES
Para realizar el diseño de los interfaces, se va a proceder a realizar una
navegación por las ventanas de cada aplicación:
6.1 X10 MEDIA CLIENT
Al iniciar la aplicación cliente, se va a mostrar una imagen con el nombre de la
aplicación:
A continuación se muestra la pantalla de conexión:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
121
DERECHA
DERECHA
DERECHA
IZQ
IZQ IZQ
“Menú principal de la aplicación.”
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
122
“Ejecutar aplicación”
“Primero, desarrollamos la navegación por el menú Control Dispositivos.”
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
123
“Enviar texto”
“Navegación por el menú Control Multimedia.”
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
124
“Navegación por el menú Control de Dispositivos.”
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
125
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
126
6.2 X10 MEDIA SERVER
Al arrancar la aplicación se muestra la siguiente pantalla de inicio, mientras se
carga la aplicación en su totalidad:
Una vez iniciada la aplicación aparece minimizada en la barra del sistema, con el
siguiente icono:
Podemos salir de la aplicación haciendo clic con el botón derecho del ratón sobre
el icono :
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
127
También podemos abrir la aplicación, haciendo doble clic con el botón izquierdo
sobre el icono , mostrándose la pantalla de Control de Dispositivos X10:
Pestaña de Control Multimedia:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
128
Pestaña de Control del PC:
Pestaña de modos:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
129
Menú superior:
Ventana Añadir dispositivo:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
130
Ventana Borrar dispositivo:
Ventana Configuración:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
131
Ventana Acerca de:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
132
7. IMPLEMENTACIÓN
7.1 PLATAFORMAS Y ENTORNOS DE DESARROLLO 7.2 FUNCIONALIDADES MÁS IMPORTANTES
7.2.1 X10 MEDIA CLIENT 7.2.2 X10 MEDIA SERVER
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
133
7. IMPLEMENTACIÓN
7.1 PLATAFORMAS Y ENTORNOS DE DESARROLLO
La JRE que se ha utilizado ha sido la JRE 6.0, ya que proporciona nuevas
funcionalidades interesantes, aparte de J2ME Wireless Toolkit 2.2, para el desarrollo de
la aplicación cliente.
Para la ejecución y compilación de ambas aplicaciones, se ha utilizado el IDE
NetBeans 5.5, junto con el NetBeans Mobility 5.5 que habilita la posibilidad de trabajar
con dispositivos móviles, tanto compilando como emulando la ejecución.
La elección de este IDE se debe a que en él, se pueden desarrollar cualquier tipo
de aplicaciones Java en cualquiera de sus plataformas como, por ejemplo, JAVA SE y
J2ME. Otra razón es que el software es libre.
7.2 FUNCIONALIDADES MÁS IMPORTANTES
7.2.1 X10 MEDIA CLIENT
A continuación se va a mostrar partes del código que se ha considerado más
importante para entender el funcionamiento de la aplicación. Éste código es el siguiente:
Implementación de los métodos más relevantes de la clase ConexionBT:
Método encargado de la búsqueda de dispositivos:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
134
buscarDispositivoBT()
.........
//inicializamos...
dispositivoLocal = LocalDevice.getLocalDevice();
da = dispositivoLocal.getDiscoveryAgent();
devList = da.retrieveDevices(DiscoveryAgent.CACHED);
if(devList != null){
this.mostrarDispositivos();
if(serviceRecord == null){
//pre-know
devList = da.retrieveDevices(DiscoveryAgent.PREKNOWN);
if(devList != null){
this.mostrarDispositivos();
}
}
}
if(serviceRecord == null){
bt.borrarLisP();
bt.setLisP("Buscando...");
//sin límite de tiempo
dispositivoLocal.setDiscoverable(DiscoveryAgent.GIAC);
da.startInquiry(DiscoveryAgent.GIAC,new Listener());
.........
Método encargado de la búsqueda de servicios dado un dispositivo: buscarServiciosBT(int dispSel)
.........
RemoteDevice dispositivo_remoto; if(devList != null){ disRemoto = devList[dispSel]; } else{ disRemoto =(RemoteDevice)dispositivos_encontrados.elementAt (dispSel);
.........
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
135
//Buscamos en el puerto serie 0x1101 da.searchServices(null,new UUID[]{new UUID(0x1101)},disRemoto,new Listener()); System.out.println("Dispositovo remoto: " + disRemoto.getBluetoothAddress().toString());
.........
Método que permite leer los diferentes mensajes que recibe del servidor: leer()
.........
int comp = dis.readInt(); bt.setOpcion(comp); if(comp==1){ //lista x10
//borramos el contenido del recorStore util.Rms.destruirRs("DispX10");
//abrimos la RecordStore rsDispX10 = util.Rms.abrirRs("DispX10"); int tam = dis.readInt(); for(int i=0;i<tam;i++){ String nombre = dis.readUTF (); String direc = dis.readUTF (); String representacion = dis.readUTF (); String modelo = dis.readUTF ();
util.Rms.escribirX10Rs(new DispX10(nombre,direc,new TipoX10(nombre,representacion,modelo)),rsDispX10);
} //cerramos el RecordStore util.Rms.cerrarRs(rsDispX10); }
.........
else if(comp==7){ //estado this.controlMedia.setEstado(dis.readInt(),dis.readBoolean(),dis.readBoolean(),dis.readInt(),dis.readUTF()); }
.........
Método para enviar mensajes al servidor: escribir (CX10 cx10, CControlPC controlPC, Mensaje mensaje)
.........
if(mensaje!=null){ dos.writeUTF(mensaje.getAccion()); if(mensaje.getAccion().equals("Reproducir")){ dos.writeInt(mensaje.getValor()); } else{
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
136
dos.writeUTF(mensaje.getMensaje()); } } else if(cx10!=null){ dos.writeUTF(cx10.getTipo()); dos.writeUTF(cx10.getDir()); dos.writeInt(cx10.getAccion()); dos.writeInt(cx10.getNivel()); } else{ dos.writeUTF(controlPC.getTipo()); dos.writeUTF(controlPC.getFuncion()); dos.writeInt(controlPC.getValor()); } dos.flush();
.........
7.2.2 X10 MEDIA SERVER
A continuación se va a mostrar fragmentos del código que se ha considerado
más importante para entender el funcionamiento de la aplicación. Éste código es el
siguiente:
Primero vamos a ver todas la clases que se encargan del proceso de
comunicación, como son: BT, Conexión, Escritura, Lectura y X10com.
Implementación de los métodos más relevantes de la clase BT:
Método encargado de la carga de puertos:
cargarPuertos(Vector v)
.........
//obtenemos la lista de puertos COM:
portList = CommPortIdentifier.getPortIdentifiers();
//recorremos la lista y obtenemos el identificador del puerto COM:
while(portList.hasMoreElements()){
portId = (CommPortIdentifier) portList.nextElement();
//comprobamos si el puerto encontrado es un puerto serie, si es
así añadimos el nombre de este al vector:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
137
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
puertoEncontrado = true;
v.add(portId.getName());
.........
Implementación de los métodos más relevantes de la clase Conexion:
Método encargado de la abrir la conexión:
open ()
.........
//obtenemos las listas de puertos
portList = CommPortIdentifier.getPortIdentifiers ();
//recorremos la enumeration buscando el puerto deseado
while (portList.hasMoreElements ())
{
//obtenemos el identificador del puerto
portId = (CommPortIdentifier) portList.nextElement ();
if (portId.getPortType () == CommPortIdentifier.PORT_SERIAL)
{
//comprobamos si el puerto obtenido es el que buscamos
if (portId.getName ().equals (nombrePuerto))
{
try
{
//abrimos la conexión del puerto serie buscado
serialPort = (SerialPort) portId.open ("X10 Media S
erver ", 2000);
ok = 1;
//establecemos las caracteristicas del puerto
serialPort.setSerialPortParams (9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
//abrimos dos flujos de datos, uno de salida y uno de
entrada.
//flujo de salida
outputStream = serialPort.getOutputStream ();
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
138
//flujo de entrada
inputStream = serialPort.getInputStream ();
}
.........
Implementación de los métodos más relevantes de la clase Escritura:
Método encargado de la enviar distintos mensajes en función de la opción
deseada:
enviar(int opc)
.........
dos.writeInt(opc); if(opc==1){ //escribimos la lista x10 DispositivoX10 dispX10; int valor = 0; vDisp = Fichero.leer("dispositivos.obj"); //establecemos el valor máximo de la barra de progreso main.setMaximoPB(vDisp.size()); dos.writeInt(vDisp.size()); for(int i=0; i<vDisp.size(); i++) { dispX10 = (DispositivoX10)vDisp.get(i); dos.writeUTF (dispX10.getNombre()); System.out.println(dispX10.getNombre()); dos.writeUTF (dispX10.getDir()); System.out.println(dispX10.getDir()); dos.writeUTF (dispX10.getTipoX10().getRepresentacion()); System.out.println(dispX10.getTipoX10().getRepresentacion()); dos.writeUTF (dispX10.getTipoX10().getModelo()); System.out.println(dispX10.getTipoX10().getModelo()); valor++; //actualizamos la barra de progreso main.actualizarPB(valor); } //actualizamos la barra de prograso hasta el máximo main.actualizarPB(vDisp.size()); }
.........
else if(opc==4){ //enviar playlist Vector vPL = Fichero.leer("rutaPlayList.obj");
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
139
File f = new File((String)vPL.get(0)); File[] cont=f.listFiles(); int max=cont.length; dos.writeInt(max); for (int i = 0; i<max; i++) { String tmp=cont[i].getName(); if (tmp.endsWith(".m3u")) { // es un archivo .m3u System.out.println("Enviando "+tmp); dos.writeUTF (tmp); } } }
.........
Método encargado de la enviar la lista de pistas:
enviarPistas(Vector vPistas)
.........
dos.writeInt(5); int max = vPistas.size(); dos.writeInt(max); for (int i = 0; i<max; i++) { Pista p = (Pista)vPistas.elementAt(i); String tmp = p.getNombre(); dos.writeUTF (tmp); }
.........
Método encargado de la enviar el título de la pista:
enviarTitulo(String titulo
.........
dos.writeInt(6); dos.writeUTF (titulo); //cerramos el flujo de datos abierto: dos.close();
.........
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
140
Método encargado de la enviar el estado del reproductor:
enviarEstado(int estado, boolean repetir, boolean aleatorio,int volumen, String tiempo)
.........
dos.writeInt(7); dos.writeInt(estado); dos.writeBoolean(repetir); dos.writeBoolean(aleatorio); dos.writeInt(volumen); dos.writeUTF(tiempo); //cerramos el flujo de datos abierto: dos.close();
.........
Implementación de los métodos más relevantes de la clase Lectura:
Método encargado de leer los distintos mensajes del cliente:
leer()
.........
//se crea un flujo de entrada de datos asociado al flujo de
entrada
//abierto al iniciar la conexión.
InputStream inputStream = conexion.getInputStream();
DataInputStream dis = new DataInputStream (inputStream);
//se lee el comando procedentes del movil
String tipoObj = dis.readUTF();
if(tipoObj.equals("Abrir")){
String path = dis.readUTF();
main.abrirApp(path);
.........
else if(tipoObj.equals("click")){
String aux = dis.readUTF();
System.out.println("click");
main.clickIzquierdo();
.........
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
141
else if(tipoObj.equals("Tecla")){
String tecla = dis.readUTF();
System.out.println("Tecla: " + tecla);
main.tecla(tecla);
.........
else if(tipoObj.equals("Ejecutar")){
String nombre = dis.readUTF();
String ruta = null;
//buscamos la ruta de la aplicación
Vector vApps = new Vector();
vApps = Fichero.leer("apps.obj");
boolean sw = true;
for(int i=0; i<vApps.size() && sw; i++)
{
App app = (App)vApps.get(i);
if(app.getNombre().equals(nombre))
{
sw = false;
ruta = app.getRuta();
}
}
main.abrirApp(ruta);
System.out.println("Abriendo: " + ruta);
.........
else if(tipoObj.equals("AbrirPL")){
String pl = dis.readUTF();
Vector vPL = Fichero.leer("rutaPlayList.obj");
String plPath = (String)vPL.get(0) + "\\" + pl;
Vector vR = Fichero.leer("rutaReproductor.obj");
String plR = (String)vR.get(0);
String path = plR + " \"" + plPath + "\"";
System.out.println("Abriendo: " + path);
main.abrirApp(path);
.........
else if(tipoObj.equals("VerPL")){
//obtemos el vector con las pistas
String pl = dis.readUTF();
Vector vPL = Fichero.leer("rutaPlayList.obj");
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
142
String plPath = (String)vPL.get(0) + "\\" + pl;
System.out.print("Ver PL: " + plPath);
Vector vPista = Fichero.leerM3U(plPath);
Vector vPistas = Fichero.leerInfoPistas(vPista);
//eviamos la información de las pistas:
int op = conexion.getOk();
if(op == 1)
{
Escritura esc = new Escritura(main,conexion);
esc.enviarPistas(vPistas);
}
.........
else if(tipoObj.equals("Reproducir")){
int numPista = dis.readInt();
//modificar: recibir path de la listaR y con bucle next llegar
al numPista
//reproduce la pista escogida
System.out.println("Reproducir pista: " + numPista);
}
else if(tipoObj.equals("X10")){
//encapsula la informacion recibida
Comando comando = new Comando(dis.readUTF (),dis.readInt(),
dis.readInt());
//ejecuta el comando recibido
System.out.println("Leido: ");
System.out.println(" Dirección: " + comando.getDir());
System.out.println(" Acción: " + comando.getAccion());
System.out.println(" Nivel: " + comando.getNivel());
if(comando.getAccion()==0){ //encender
main.añadirDispMod(comando.getDir(),"Encender","Apagado");
}
else if(comando.getAccion()==1){ //apagar
main.añadirDispMod(comando.getDir(),"Apagar","Encendido");
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
143
}
x10com.ejecutarComando(comando);
}
.........
else if(tipoObj.equals("estado")){
String aux = dis.readUTF();
System.out.println("Comprobar estado");
Control control = new Control();
int duracion = control.getLongitudCancion();
String tiempo;
if(duracion==-1){
tiempo = "0:00";
}
else{
int minutos = duracion/60;
int segundos = duracion%60;
tiempo = minutos + ":" + segundos;
}
Escritura esc = new Escritura(main,conexion);
esc.enviarEstado(control.getStatus(),control.isRepeatStatusOn(),control.isShuf
fleStatusOn(),control.getVolume(),tiempo);
.........
Implementación de los métodos más relevantes de la clase X10com:
Método encargado de abrir la conexión X10:
abrirConexion(String puerto)
.........
/*Creamos un nuevo controler*/
try{
controller = new CM11ASerialController(puerto);
}
catch(Exception e){
System.out.println("Error al crear Controller: " + e);
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
144
}
/*Creamos el servidor del controller y seleccionamos el puerto*/
contServer = new ControllerServer(controller,2400);
contServer.start();
.........
Método encargado de cerrar la conexión X10:
cerrarConexion()
.........
controller.shutdownNow(); //100
.........
Método encargado de ejecutar los comandos X10:
ejecutarComando(Comando comando)
.........
if(comando.getAccion()==0){ //encender
this.encender(comando);
}
else if(comando.getAccion()==1){ //apagar
this.apagar(comando);
}
.........
else if(comando.getAccion()==3){ //modo
System.out.println("Ejecutar modo: " + comando.getDir());
Vector vModos = new Vector();
vModos = Fichero.leer("modos.obj");
Modo modo = null;
boolean encontrado = false;
for(int i=0; i<vModos.size() && !encontrado; i++)
{
modo = (Modo)vModos.get(i);
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
145
if(modo.getNombre().equals(comando.getDir())){
encontrado = true;
}
}
Vector vDispAsiciados = modo.getDispositivos();
for(int j=0; j<vDispAsiciados.size(); j++)
{
DispositivoX10 dispX10 =
(DispositivoX10)vDispAsiciados.get(j);
System.out.println("Ejecutar comando: " + dispX10.getNombre()
+ ":" + dispX10.getDir()
+ ":" + dispX10.getEstado() + ":" + dispX10.getRegulara());
if(dispX10.getEstado().equals("Regular")){
this.regular(new
Comando(dispX10.getDir(),comando.getAccion(), dispX10.getRegulara()));
}
else if(dispX10.getEstado().equals("Apagado")){
this.apagar(new
Comando(dispX10.getDir(),comando.getAccion(), dispX10.getRegulara()));
}
else if(dispX10.getEstado().equals("Encendido")){
this.encender(new
Comando(dispX10.getDir(),comando.getAccion(), dispX10.getRegulara()));
}
}
}
.........
Método encargado de encender un dispositivo X10:
encender(Comando comando)
.........
if(comando.getDir().equals("luces")){
System.out.println("encender " + comando.getDir());
cmd = new Command(comando.getDir(),Command.ALL_LIGHTS_ON);
}
else{
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
146
System.out.println("encender " + comando.getDir());
cmd = new Command(comando.getDir(),Command.ON);
}
//actualizamos el valor anterior
Vector vAux = new Vector();
vAux.addElement(new Estado(comando.getDir(),100));
Fichero.escribir("estados.obj",vAux);
//ejecutamos el comando
controller.addCommand(cmd);
.........
Método encargado de apagar un dispositivo X10:
apagar(Comando comando)
if(comando.getDir().equals("todos")){
System.out.println("apagar " + comando.getDir());
cmd = new Command(comando.getDir(),Command.ALL_UNITS_OFF);
}
else if(comando.getDir().equals("luces")){
System.out.println("apagar " + comando.getDir());
cmd = new Command(comando.getDir(),Command.ALL_LIGHTS_OFF);
}
else{
System.out.println("apagar " + comando.getDir());
cmd = new Command(comando.getDir(),Command.OFF);
}
.........
//ejecutamos el comando
controller.addCommand(cmd);
.........
Método encargado de regular un módulo de iluminación X10
regular(Comando comando)
.........
Vector vDispAux = Fichero.leer("estados.obj");
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
147
for(int i=0; i<vDispAux.size(); i++)
{
Estado est = (Estado)vDispAux.get(i);
if(est.getDir().equals(comando.getDir())){
valorAnterior = est.getValor();
}
}
if ((valor >= 0) && (valor <= 100)) {
if ((valor > valorAnterior)) {
this.regularBRIGHT(valor-valorAnterior,comando.getDir());
valorAnterior = valor;
}
else{
this.regularDIM(valorAnterior-valor,comando.getDir());
valorAnterior = valor;
}
.........
Método encargado de dar intensidad a un módulo de iluminación X10:
regularBRIGHT(int res, String dir)
.........
cmd = new Command(dir,Command.ALL_UNITS_OFF);
cmd = new Command(dir,Command.BRIGHT,res);
controller.addCommand(cmd);
.........
Método encargado de atenuar a un módulo de iluminación X10:
regularDIM(int res, String dir)
.........
cmd = new Command(dir,Command.ALL_UNITS_OFF);
cmd = new Command(dir,Command.DIM,res);
controller.addCommand(cmd);
.........
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
148
Ahora vamos a ver la implementación en C, MediaControl.C, contenida en la librería dinámica MediaControl.dll: #include "obj_Control.h" #include <stdio.h> #include <windows.h> const int WA_NOTHING = 0; const int WA_PLAY = 40045; // reproduce la pista seleccionada const int WA_PAUSE = 40046; // pausa y reproduce la pista actual const int WA_STOP = 40047; // para la pista actual const int WA_NEXTTRACK = 40048; // reproduce la siguiente pista const int WA_PREVTRACK = 40044; // reproduce la pista anterior const int WA_VOLUMEUP = 40058; // Sube el volumen const int WA_VOLUMEDOWN = 40059; // Baja el volumen const int WINAMP_FFWD5S = 40060; // Avanza 5 segundos const int WINAMP_REW5S = 40061; // Revovina 5 segundo const int WM_WA_IPC = 0x0400; // To tell Winamp that we are sending it a WM_USER (WM_WA_IPC) it needs the hex code 0x0400 const int IPC_DELETE = 101; // Borra lista de reproduccion const int IPC_GETOUTPUTTIME = 105; // Devuelve: // La posicion en milisegundo de la cancion actual (mode=0) // La longitud de la cancion en segundos (mode = 1). // -1 Si no esta reproduciendo o hay un error. const int IPC_JUMPTOTIME = 106; // Establece la posición en milisegundos de la cancion actual. Devuelve -1 si no esta reproduciendo, 1 en eof, o 0 si es satisfactorio. Requiere Winamp v1.60+ const int IPC_WRITEPLAYLIST = 120; Escribe la lista de reproduccion actual a <winampdir>\\Winamp.m3u, y devuelve la posición de la lista actual de reproduccion. Requiere Winamp v1.666+ const int IPC_SETPLAYLISTPOS = 121; // Establece la posición de la lista de reproducción actual. const int IPC_SETVOLUME = 122; // Establece el volumen del Winamp (de 0-255) const int IPC_SETPANNING = 123; // Establece el panning de Winamp (de 0 (izq) to 255 (der)) const int IPC_GETLISTLENGTH = 124; // Devuelve el tamaño de la lista de reproducción actual. const int IPC_GETLISTPOS = 125; // Devuelve la posición en la lista de reproducción. Requiere Winamp v2.05+ const int IPC_GETINFO = 126; // Devuelve información sobre la canción actual ( Kb rate). El valor de retorno depende del valor del 'mode'. Si mode == 0 devuelve Samplerate (p.ej: 44100), Si mode == 1 devuelve el Bitrate (p.ej: 128), si mode == 2 devuelve los canales (p.ej: 2) const int IPC_GETPLAYLISTTITLE = 212; const int WA_GETSTATUS =104; const int WA_REFRESHPLCACHE = 247; const int WA_GETSHUFFLESTATUS = 250; const int WA_GETREPEATSTATUS = 251; const int WA_SETSHUFFLESTATUS = 252; const int WA_SETREPEATSTATUS = 253; const int VK_R = 0x52; const int VK_L = 0x4C; const int VK_J = 0x4A; const int VK_S = 0x53; HWND hTaskBar, hButton; HWND hwnd = NULL; void initWinampHandle() { if (hwnd == NULL) { hwnd = FindWindow("Winamp v1.x", NULL); } if (hwnd == NULL) { hwnd = FindWindow("Winamp v2.x", NULL); } if (hwnd == NULL) { hwnd = FindWindow("Winamp v3.x", NULL); } }
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
149
JNIEXPORT jstring JNICALL Java_obj_Control_getCurrentSongTitle(JNIEnv *env, jobject obj) { char lpText[100]; int intLength = GetWindowText(hwnd, lpText, 100); initWinampHandle(); if ((intLength <= 0) || (intLength > 100)) strcpy(lpText,"N/A"); return (*env)->NewStringUTF(env, lpText); } JNIEXPORT void JNICALL Java_obj_Control_play (JNIEnv *env, jobject obj) { initWinampHandle(); if (hwnd != NULL) { SendMessageA(hwnd, WM_COMMAND, WA_PLAY, WA_NOTHING); } } JNIEXPORT void JNICALL Java_obj_Control_pause(JNIEnv *env, jobject obj) { initWinampHandle(); if (hwnd != NULL) { SendMessageA(hwnd, WM_COMMAND, WA_PAUSE, WA_NOTHING); } }
.........
// Devuelve: // La posicion en milisegundo de la cancion actual (mode=0) // La longitud de la cancion en segundos (mode = 1). // -1 Si no esta reproduciendo o hay un error. JNIEXPORT jint JNICALL Java_obj_Control_getLongitudCancion(JNIEnv *env, jobject obj) { int longitud = 0; initWinampHandle(); if (hwnd != NULL) { longitud = SendMessageA(hwnd, WM_WA_IPC, 1, IPC_GETOUTPUTTIME); } return longitud; } JNIEXPORT void JNICALL Java_obj_Control_setVolume(JNIEnv *env, jobject obj, jint position) { //volume is 0 - 255 initWinampHandle(); if (hwnd != NULL) { SendMessageA(hwnd, WM_WA_IPC, position, IPC_SETVOLUME); } } JNIEXPORT jint JNICALL Java_obj_Control_getVolume(JNIEnv *env, jobject obj) { int volumen = 0; //volumen a -666 devuelve el volumen entre 0-255 actual initWinampHandle(); if (hwnd != NULL) { volumen = SendMessageA(hwnd, WM_WA_IPC, -666, IPC_SETVOLUME); } return volumen; } JNIEXPORT void JNICALL Java_obj_Control_listaCompleta(JNIEnv *env, jobject obj) { int pos=0; int total; initWinampHandle(); total = SendMessageA(hwnd, WM_WA_IPC, WA_NOTHING, IPC_GETLISTLENGTH); printf("Total: %d\n",total); while(pos < total)
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
150
{ char *name = (char *)SendMessage(hwnd,WM_WA_IPC,pos,IPC_GETPLAYLISTTITLE); printf("%d: %s\n",pos, name); pos ++; } }
.........
//raton void moverCursor(int x, int y){ SetCursorPos(x,y); } JNIEXPORT void JNICALL Java_obj_Control_moverDerechaCursor(JNIEnv *env, jobject obj) { POINT coord; GetCursorPos(&coord); moverCursor(coord.x+5, coord.y); } JNIEXPORT void JNICALL Java_obj_Control_moverIzquierdaCursor(JNIEnv *env, jobject obj) { POINT coord; GetCursorPos(&coord); moverCursor(coord.x-5, coord.y); }
.........
JNIEXPORT void JNICALL Java_obj_Control_menuInicio(JNIEnv *env, jobject obj){ hTaskBar= FindWindow("Shell_TrayWnd", NULL); hButton= GetWindow(hTaskBar, GW_CHILD); SetForegroundWindow( hButton ); SendMessageW(hButton, WM_LBUTTONDOWN, 0, 0); SendMessageA(hButton, WM_KEYDOWN, GetAsyncKeyState(VK_R), WA_NOTHING); }
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
151
8. IMPLANTACIÓN
8.1 ESTUDIO DE LAS TECNOLOGÍAS DE COMUNICACIÓN
8.1.1 COMM
8.2 INSTALACIÓN DE X10 MEDIA HOME
8.2.1 X10 MEDIA CLIENT 8.2.2 X10 MEDIA SERVER
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
152
8. IMPLANTACIÓN
8.1 ESTUDIO DE LAS TECNOLOGÍAS DE COMUNICACIÓN
8.1.1 COMM La comunicación por puerto serie, permite al ordenador comunicarse con todo
tipo de dispositivos periféricos: módems, impresoras, escáneres, lectores de código de
barras, etc. El API de Comunicaciones Java, constituido por el paquete javax.comm,
que proporciona JavaSoft, no forma parte del JDK, pero añade soporte a Java para
dispositivos serie y paralelo.
El paquete proporciona soporte para dispositivos serie y paralelo al estilo Java,
es decir, utilizando una semántica semejante a la que se usa con streams y eventos. Para
comunicarse con un dispositivo serie a través de uno de los puertos serie de un
ordenador, desde una aplicación Java o un applet, es necesario un interfaz. El API de
Comunicaciones Java, permite transmitir y recibir datos a través de dispositivos
conectados al puerto serie; proporcionando además un conjunto de opciones que
permiten la configuración de todos los parámetros asociados a los puertos serie y
paralelo. Este API es una proposición para establecer un método estándar de acceso a
los puertos de comunicaciones, que permita escribir programas Java independientes de
la plataforma. Así se pueden escribir programas para emulación de terminales,
programas de fax, lectores de tarjetas, etc.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
153
El desarrollo de buenos programas normalmente pasa por construir unos cuantos
interfaces claramente definidos. El diagrama de alto nivel de las capas que componen el
API de comunicaciones Java es el que se reproduce en la figura:
Capas del API.
El diagrama que muestra la figura siguiente describe los objetos involucrados en
la lectura o escritura de datos en un puerto serie desde Java.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
154
Lectura/escritura.
8.2 INSTALACIÓN DE X10 MEDIA HOME
8.2.1 X10 MEDIA CLIENT
Dependiendo del dispositivo móvil del que dispongamos, varía la forma de
instalación de la aplicación. A continuación vamos a explicar dos casos reales de
instalación, para distintos dispositivos:
Nokia N80:
Se seleccionar el fichero x10MediaClient.jar y se envía vía Bluetooth. El
dispositivo móvil, lo recibe como si fuera un mensaje, por lo que abrimos dicho
mensaje y pulsamos la opción de instalar. Escogemos donde deseamos que sea instalado
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
155
y continuamos con el proceso. Una vez instalado, vamos a la ubicación donde ha sido
instalado y ya está listo para ser ejecutado.
Motorola V3x:
Seleccionamos el fichero x10MediaClient.jar y lo enviamos por Bluetooth, a
continuación seguimos todos los pasos que nos indica el móvil y una vez instalado, ya
está listo para su ejecución.
Si disponemos de cualquier otro dispositivo móvil, consultar el manual de
usuario del mismo para realizar la instalación de cualquier aplicación Java.
8.2.2 X10 MEDIA SERVER
Para facilitar esta tarea, se ha creado un instalador para copiar todos los ficheros
necesarios para el funcionamiento de la aplicación en el lugar adecuado, será necesario
seguir todos y cada uno de los siguientes pasos:
1. Instalar la JRE 6.0 si no la tienes.
2. Ejecutamos el fichero X10MediaHomeSetup.jar y seguimos los
siguientes pasos:
a. Elegimos el idioma de instalación y pulsamos OK:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
156
b. Pantalla de bienvenida, hacemos clic en siguiente:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
157
c. Información de la aplicación, hacemos clic en siguiente:
d. Elegimos el directorio de instalación:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
158
e. Elegimos si queremos guardar el código fuente o no:
f. Progreso de instalación:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
159
g. Accesos directos en el escritorio y en el menú inicio:
h. Pantalla de instalación completada con éxito:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
160
3. Configuración Bluetooth:
Para que nuestra aplicación cliente X10 Media Home, pueda descubrir el
dispositivo Bluetooth de nuestro PC, necesitamos que este visible. Para
ello debemos seguir el siguiente proceso de configuración:
Proceso de configuración para Windows XP:
a. Hacemos doble clic sobre el icono Bluetooth que aparece en la
barra de tareas del escritorio:
b. Una vez abierta la ventana, hacemos clic sobre la pestaña de
Opciones y establecemos las opciones como en la siguiente
pantalla:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
161
c. Pulsamos Aceptar.
d. Para conocer cual es el puerto COM asociado a nuestro
dispositivo Bluetooth, debemos hacer clic sobre la pestaña
Puertos COM y el que necesitamos para nuestra aplicación es el
Entrante, si no tenemos ninguno, pulsamos a agregar:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
162
4. Una vez realizados los paso anteriores, la aplicación ya está lista para
ejecutarse, haciendo doble clic sobre el fichero de la aplicación.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
163
9. CONCLUSIONES
9.1 PROYECTO DE INNOVACIÓN 9.2 ANÁLISIS DE TECNOLOGÍAS, PROBLEMAS Y RESULTADOS 9.3 OTROS CAMPOS DE APLICACIÓN 9.4 PROYECCIÓN DE FUTURO
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
164
9. CONCLUSIONES
9.1 PROYECTO DE INNOVACIÓN
Durante el desarrollo del proyecto, se ha podido observar como se trataba de un
proyecto de innovación, ya que hasta la realización del mismo no existía ninguna
aplicación desarrollada en JAVA SE que dialogara, mediante la tecnología inalámbrica
Bluetooth, con una desarrollada en J2ME, ya que sólo existían desarrollos que permitían
la comunicación entre dispositivos móviles y además que uniese funcionalidades de
control como son el caso de los dispositivos X10, multimedia y del PC.
9.2 ANÁLISIS DE TECNOLOGÍAS, PROBLEMAS Y RESULTADOS
El desarrollo de esta parte del proyecto ha sido costoso en lo que se refiere al
aprendizaje de nuevas tecnologías como es el uso de Bluetooth y X10 con Java.
También el aprendizaje de J2ME para el desarrollo de la aplicación móvil.
El desarrollo de este tipo de aplicaciones, es decir, una aplicación que ha requerido
un estudio sobre las tecnologías a utilizar, una aplicación que trabaja con tecnologías
nuevas como el uso del Bluetooth para la comunicación y el X10 para la parte domótica,
sobre las que hoy en día, hay poca documentación y soporte al desarrollo, supone un
mayor esfuerzo ya que implica el uso de tecnología de última generación para realizar
las pruebas de la misma.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
165
Una vez entendido el funcionamiento de Bluetooth, hay que aprender el manejo del
entorno en el que vamos a desarrollar y una vez familiarizado con el mismo, se lleva a
cabo la parte gráfica de la aplicación cliente.
A lo largo del desarrollo de la aplicación cliente, se ha tenido una serie de
problemas, en los que cabe destacar todo lo que comprende la sincronización con el PC
y el control del mismo.
Esta parte es la más delicada de la aplicación tanto en la parte cliente como en la
servidora, ya que si esta parte no funciona correctamente, no se podrán realizar
simulaciones entre ambos para probar el correcto funcionamiento de la aplicación. La
parte de la sincronización con el PC ha sido, aparte de la más costosa, la que ha
acaparado el mayor tiempo, tanto en desarrollo como en búsqueda de documentación, y
como era de esperar la que más problemas a dado.
9.3 OTROS CAMPOS DE APLICACIÓN
El uso de la tecnología inalámbrica Bluetooth, se está extendiendo cada vez más en
nuestros días, esto da pie, a que cada vez más dispositivos lleven integrada esta
tecnología, y como consecuencia se realicen aplicaciones con el uso de la misma.
Otro tipo de aplicaciones que se pueden llevar a cabo con Bluetooth pueden ser:
• Control de calidad en una planta de fabricación.
• Cuestionarios a pie de calle para sincronizar la información
posteriormente de forma automática.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
166
• Presentación de la carta de un restaurante en el dispositivo móvil, a la
entrada en el mismo.
Para que un sistema pueda ser considerado “inteligente” ha de incorporar
elementos o sistemas basados en las Nuevas Tecnologías de la Información (NTI).
El uso de las NTI en la vivienda genera nuevas aplicaciones y tendencias
basadas en la capacidad de proceso de información y en la integración y comunicación
entre los equipos e instalaciones. Así concebida, una vivienda inteligente puede ofrecer
una amplia gama de aplicaciones en áreas tales como:
• Monitorización de salud.
• Seguridad.
• Gestión de la energía.
• Automatización de tareas domésticas.
• Formación, cultura y entretenimiento.
• Teletrabajo.
• Operación y mantenimiento de las instalaciones, etc.
De una manera general, un sistema domótico dispondrá de una red de
comunicación y diálogo que permite la interconexión de una serie de equipos a fin de
obtener información sobre el entorno doméstico y, basándose en ésta, realizar unas
determinadas acciones sobre dicho entorno.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
167
9.4 PROYECCIÓN DE FUTURO
Para empezar podemos decir que todas las tecnologías empleadas en el proyecto
gozan de una gran aceptación lo que asegura su uso generalizado a corto plazo. Esto se
puede observar perfectamente en el caso del Bluetooth, que está implantado en la
mayoría de los dispositivos móviles y se empieza a extender a otros campos
relacionados con éstos, como es su implantación en los automóviles.
Desde el punto de vista de la utilización de dispositivos X10, se puede decir que la
penetración imparable de la tecnología en los hogares, como consecuencia de la
disminución de precios, la competencia y el ciclo de vida de estos productos, hará
mucho más posible y accesible la Domótica para todos.
Pero si bien existe normativa suficiente para distintos ámbitos del hogar digital y
conectado que pretende la Domótica (REBT, reciente ICT, etc.), no existen normas
específicas que guíen la actuación de este conglomerado de actores que se dan cita en el
sector, lo que, en opinión de algunos expertos, se solucionaría con un reglamento
concreto y ‘ad-hoc’ a partir de la multitud de normas existentes y otras nuevas,
fomentando así el entendimiento dentro de este sector plenamente multidisciplinar.
El concepto de Ambiente Inteligente muestra una visión de la Sociedad de la
Información en el que se enfatiza la facilidad de uso, el soporte eficiente de los servicios
y la posibilidad de mantener interacciones naturales con el ser humano. El objeto central
se materializa a grandes rasgos en un individuo rodeado de interfaces inteligentes e
intuitivas que se encuentran integradas en partes y objetos corrientes, todo esto en un
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
168
entorno que sea capaz de reconocer y responder a la presencia y necesidades de
diferentes individuos, de una forma completamente discreta e imperceptible más que a
través de los resultados. Un entorno por otra parte, que no se limita a ningún lugar físico
determinado, sino que comprende a todos ellos: la casa, el coche, el lugar de trabajo,
etc.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
169
10. BIBLIOGRAFÍA
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
170
10. BIBLIOGRAFÍA
[GALV] Gálvez Rojas, Sergio. Ortega Díaz, Lucas. “Java a Tope. Java 2 Micro
Edition”. Universidad de Málaga
[FROU] Froufe, Agustín. Cárdenas Nennetti, Jorge. “J2ME. Java 2 Micro Edition +
CDROM”. Ra-Ma.
[MUCH] Mochow, John W. “Core J2ME Technology”. Sun Microsystems Press,
Prentice Hall
[ALVA] Alvarez Garcia, Alonso. Morales Grela, Jose Ángel. “J2ME (guías
prácticas)”. Anaya Multimedia-Anaya Interactiva.
[VAND] van der Liden, Meter. “Just Java™ 2: JAVA SE 1.5 Edition”. Prentice Hall
PTR.
http://www.zonabluetooth.com/general.htm : Información sobre aspectos generales,
tecnológicos y la arquitectura.
http://gospel.endorasoft.es/bluetooth/especificacion-bluetooth/bluez/bluezspammer.html
: segudidad Bluetooth.
http://spanish.bluetooth.com/Bluetooth/Default.htm : sitio oficial Bluetooth en español.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
171
http://www.pythoncriticalmass.com : Bruce Eckel´s Free Electronic Books
http://www.javabluetooth.com : Página sobre desarrollo de aplicaciones Bluetooth.
http://bluetooth.com : Sitio web oficial de Bluetooth.
http://java.sun.com : Sitio web de Sun.
http://www.programacion.com : Sitio web de programación.
http://developers.sun.com : Sitio web de Sun para el desarrollo de aplicaciones en Java.
http://www.benhui.net : Sitio web para el desarrollo de aplicaciones con Bluetooth
http://www.corej2me.com : Sitio web para el desarrollo de aplicaciones móviles.
http://www.jguru.com : Sitio web de programación en Java.
http://www.javahispano.org : Sitio web dedicado a Java.
http://www.homesystems.es/indexFSx10.html : Información sobre X10.
http://www.domoticaviva.com/X-10/X-10aparato.htm : Información sobre X10.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
172
11. ANEXOS
11.1 MANUAL DE USUARIO
11.1.1 X10 MEDIA CLIENT 11.1.2 X10 MEDIA SERVER
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
173
11. ANEXOS
11. MANUAL DE USUARIO
11.1 X10 MEDIA CLIENT ÍNDICE
1. Información general
a. Descripción general
2. Conceptos básicos
3. Utilización del menú
a. Dispositivos X10
b. Control Multimedia
c. Control PC
1. INFORMACIÓN GENERAL
a. Descripción general
X10 Media Client es un sistema que funcionando en conjunto con X10 Media
Server, permite manejar de una forma clara y sencilla los dispositivos X10 del
hogar, tanto de manera independiente como mediante modos preprogramados en el
servidor y transmitidos al cliente que permite aplicar a varios dispositivos distintas
funciones de una vez, por ejemplo, modo cine.
También nos va a permitir manejar las los medios multimedia almacenados el
nuestro PC, con múltiples opciones que nos facilitarán dicha tarea.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
174
A parte de los dos grandes módulos de los que consta la aplicación cliente,
tenemos otras funcionalidades a nivel de control del PC que nos van a permitir un
control total del mismo, como por ejemplo, el apagado del PC desde el dispositivo
móvil, abrir aplicaciones, control total del ratón y envío de teclas para poder
interactuar con otras aplicaciones.
2. CONCEPTOS BÁSICOS
Una vez iniciada la misma, saldrá una pantalla de bienvenida, como se muestra a
continuación:
Después de 3 segundos, se muestra la pantalla de conexión Bluetooth, en la que
se muestra el nombre de un dispositivo al que nos hemos conectado en la última
conexión o por el contrario si es la primera vez que nos conectamos, aparece sólo la
opción de buscar dispositivos. La podemos ver a continuación:
Si queremos utilizar la conexión anterior y así poder saltarnos pasos como la
búsqueda de dispositivos y servicios, nos situamos sobre el nombre de la conexión
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
175
anterior y pulsamos la tecla OK del dispositivo móvil. Esto sólo es posible si nos
conectamos al mismo dispositivo Bluetooth que nos muestra.
Si nos conectamos a un dispositivo nuevo, debemos situarnos encima de Buscar
dispositivos y pulsamos OK. Luego elegimos el nombre de nuestro dispositivo y
seguimos los pasos que nos aparezcan en pantalla ya que estos pueden variar de un
dispositivo a otro.
Posibles problemas:
• Si al buscar dispositivos no encontramos el nuestro, debemos asegurarnos
que está en modo visible (ver Configuración Bluetooth del manual del
servidor).
• Si podemos ver el dispositivo pero nos dice que no se encuentran los
servicios buscados, es posible que nuestro dispositivo móvil se encuentre
conectado a un dispositivo móvil, por lo que debemos desconectarnos e
iniciar de nuevo el proceso.
Para que funcione todo correctamente, primero debe configurar los teclados de
Control del PC y Control Multimedia desde el servidor y enviarlos al cliente, así como
la ruta del reproductor y demás configuraciones, para poder así usarlo con todas sus
posibilidades.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
176
3. UTILIZACIÓN DEL MENÚ
La aplicación sigue una estructura de menús, englobados por tres grandes
módulos: Dispositivos X10, Control Multimedia y Control del PC, los vemos en
detalle a continuación:
a. Dispositivos X10
Para entrar en el menú de Dispositivos X10 pulse la tecla ↓.
Una vez dentro del menú, encontramos Dispositivos X10 y Modos.
Si pulsamos Seleccionar, posicionados sobre Dispositivos X10, se nos muestra la lista
de dispositivos X10 que tenemos configurados en el servidor. Sobre cada dispositivo,
podemos encender y apagar, y si además éste es un modulo de iluminación, también
podremos regular.
Si pulsamos Seleccionar, posicionados sobre Modos, se nos muestra la lista de
modos que tenemos configurados en el servidor. Si queremos ejecutar alguno de ellos,
sólo tenemos que posicionarnos sobre él y pulsar la tecla de Seleccionar.
b. Control Multimedia
Para entrar en el menú de Dispositivos Multimedia pulse la tecla ↓.
Una vez dentro podemos pulsar la tecla de Opciones y tendremos la posibilidad
de elegir entre:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
177
• Listas: nos mostrará las listas de reproducción. Podemos reproducir
cualquiera de ellas si nos posicionamos sobre la deseada y pulsamos la tecla
Seleccionar. Si queremos ver el contenido de la misma pulsamos la Ver.
• Volumen: regular el volumen a la intensidad deseada.
• Silenciar: silenciar el volumen del reproductor.
• Aleatorio: orden de reproducción aleatorio.
• Repetir: repetir la pista.
Para manejar el reproductor, debemos estar en la pantalla principal del mismo, y
pulsar las teclas que previamente hemos configurado y enviado desde el servidor.
c. Control PC
Para entrar en el menú de Control del PC pulse la tecla ↓.
Una vez dentro podemos manejar el ratón y hacer clic, mediante las teclas que
hemos configurado y enviado previamente desde el servidor.
Si queremos enviar texto a la aplicación que se encuentre activa en el servidor,
sólo tenemos que ir al menú Enviar Texto, escribir el texto deseado y pulsar Enviar.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
178
11.2 X10 MEDIA SERVER ÍNDICE
1. Información general
a. Descripción general
b. Configuración Bluetooth
c. Instalación
2. Configuración de la aplicación
a. Configuración Bluetooth y X10
3. Módulos de la aplicación
a. Dispositivos X10
b. Control Multimedia
c. Control PC
d. Modos
1. INFORMACIÓN GENERAL
a. Descripción general
X10 Media Server, es una herramienta capaz de ofrecer servicios de
sincronización para establecer una comunicación con un dispositivo móvil, a través
de la aplicación cliente.
Permite, tanto mandar información de los dispositivos X10 almacenados,
modos, listas de reproducción, opciones de configuración, etc. al dispositivo móvil,
así como recibir información de los comandos o peticiones a ejecutar en cada
momento.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
179
Además permite la ejecución de ciertos comando X10 de forma independiente al
sistema cliente.
b. Configuración Bluetooth
Para que nuestra aplicación cliente X10 Media Client, pueda descubrir el
dispositivo Bluetooth de nuestro PC, necesitamos que este visible. Para ello
debemos seguir el siguiente proceso de configuración:
Proceso de configuración para Windows XP:
a. Hacemos doble clic sobre el icono Bluetooth que aparece en la
barra de tareas del escritorio:
b. Una vez abierta la ventana, hacemos clic sobre la pestaña de
Opciones y establecemos las opciones como en la siguiente
pantalla:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
180
c. Pulsamos Aceptar.
d. Para conocer cual es el puerto COM asociado a nuestro
dispositivo Bluetooth, debemos hacer clic sobre la pestaña
Puertos COM y el que necesitamos para nuestra aplicación es el
Entrante.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
181
c. Instalación
Para facilitar esta tarea, se ha creado un instalador para copiar todos los ficheros
necesarios para el funcionamiento de la aplicación en el lugar adecuado, será
necesario seguir todos y cada uno de los siguientes pasos:
1. Instalar la JRE 6.0 si no la tienes.
2. Ejecutamos el fichero X10MediaHomeSetup.jar y seguimos los
siguientes pasos:
a. Elegimos el idioma de instalación y pulsamos OK:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
182
b. Pantalla de bienvenida, hacemos clic en siguiente:
c. Información de la aplicación, hacemos clic en siguiente:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
183
d. Elegimos el directorio de instalación:
e. Elegimos si queremos guardar el código fuente o no:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
184
f. Progreso de instalación:
g. Accesos directos en el escritorio y en el menú inicio:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
185
h. Pantalla de instalación completada con éxito:
2. CONFIGURACIÓN DE LA APLICACIÓN
a. Configuración Bluetooth y X10
Hacemos clic en el menú Configuración Opciones de configuración
y nos muestra la siguiente ventana:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
186
En ella debemos elegir los puertos COM que utiliza el Bluetooth y el X10.
3. MODULOS DE LA APLICACIÓN
Una vez iniciada la aplicación aparece minimizada en la barra del sistema, con el
siguiente icono:
Podemos salir de la aplicación haciendo clic con el botón derecho del ratón sobre
el icono :
También podemos abrir la aplicación, haciendo doble clic con el botón izquierdo
sobre el icono , mostrándose la pantalla de Control de Dispositivos X10.
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
187
A continuación veremos los grandes módulos de que consta la aplicación y su
funcionamiento y configuración:
a. Dispositivos X10
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
188
Ventana Añadir dispositivo:
Ventana Borrar dispositivo:
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
189
b. Control Multimedia
c. Control PC
SCDI-DM - Carlos Cifuentes Fernández - IINF - ICAI - COMILLAS - PFC 06/07
190
d. Modos