DISEÑO E IMPLEMENTACIÓN DEL PROTOTIPO DE UN SISTEMA DE CONTROL POR TCP/IP Y X-10 PARA UN INMUEBLE Lucero Sabogal Hoyos Manuel Felipe Torres Santofimio Oscar Alberto Montaño Piracún UNIVERSIDAD DE SAN BUENAVENTURA FACULTAD DE INGENIERÍA PROGRAMA DE ELECTRÓNICA BOGOTÁ D.C. 2007 DISEÑO E IMPLEMENTACIÓN DEL PROTOTIPO DE UN SISTEMA DE CONTROL POR TCP/IP Y X-10 PARA UN INMUEBLE Lucero Sabogal Hoyos Manuel Felipe Torres Santofimio Oscar Alberto Montaño Piracún Proyecto de grado para optar al título de ingeniero electrónico Asesor LUÍS MIGUEL ROMERO UNIVERSIDAD DE SAN BUENAVENTURA FACULTAD DE INGENIERÍA PROGRAMA DE ELECTRÓNICA BOGOTÁ D.C. 2007 Nota de aceptación: ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ Firma del presidente del Jurado ____________________________________________ Firma del Jurado ____________________________________________ Firma del Jurado Bogota D.C., Noviembre 2007 AGRADECIMIENTOS Agradecemos a Dios, a Camila Torres Sabogal, a nuestros padres, por Incentivarnos y apoyarnos en el desarrollo de este logro tan importante para el comienzo de nuestra vida como profesionales y al Ingeniero Luís Miguel Romero, por aportar su conocimiento en el desarrollo del proyecto, dando un buen uso de todas las herramientas que conoce y que fueron de vital importancia para el desarrollo del mismo. iv CONTENIDO Pág. INTRODUCCIÓN ...................................................................................................19 1. PLANTEAMIENTO DEL PROBLEMA................................................................20 1.1 ANTECEDENTES............................................................................................20 1.1.1 Contexto Internacional: .................................................................................20 1.1.2 Contexto Nacional:........................................................................................23 1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA ....................................25 1.2.1 Descripción ...................................................................................................25 1.2.2 Descripción y formulación del problema .......................................................26 1.3 JUSTIFICACIÓN..............................................................................................26 1.4 OBJETIVOS DE LA INVESTIGACIÓN ............................................................28 1.4.1 Objetivo general............................................................................................28 1.4.2 Objetivos específicos ....................................................................................28 v 1.5 ALCANCES Y LIMITACIONES DEL PROYECTO ...........................................29 1.5.1 Alcances .......................................................................................................29 1.5.2 Limitaciones ..................................................................................................29 2. MARCO DE REFERENCIA................................................................................30 2.1 MARCO CONCEPTUAL ..................................................................................30 2.1.1 Domótica.......................................................................................................30 2.1.2 Protocolo X-10 ..............................................................................................32 2.1.3 Corrientes portadoras ...................................................................................33 2.2 MARCO LEGAL O NORMATIVO.....................................................................34 2.2.1 FCC (Comisión federal de comunicaciones).................................................34 2.2.2 UL (Underwriters laboratories) ......................................................................35 2.3 MARCO TEÓRICO ..........................................................................................36 2.3.1 Módulos X-10................................................................................................36 2.3.2 Protocolo TCP/IP .........................................................................................36 2.3.3 Direccionamiento IP......................................................................................37 vi 2.3.4 Programación Java .......................................................................................40 2.3.4.1 Desarrollo rápido de aplicaciones ..............................................................41 2.3.4.2 Compiladores Java ....................................................................................42 • Java Studio Creador .......................................................................................42 • Java Netbeans................................................................................................43 • Paquetes adicionales de NetBeans ................................................................43 • Java development kit ......................................................................................45 2.3.5 Software RS232 Hex Com tool .....................................................................46 2.3.6 Aplicaciones RMI ..........................................................................................46 2.3.6.1 Ventajas de la carga dinámica de código...................................................49 2.3.6.2 Interfaces, objetos y métodos remotos ......................................................49 2.3.6.3 Compilar las fuentes y generar stubs.........................................................50 2.3.6.4 Hacer accesibles las clases en la red ........................................................51 2.3.6.5 Escribir un servidor RMI.............................................................................51 2.3.6.6 Definir el constructor ..................................................................................51 vii 2.3.6.7 Crear un Programa Cliente ........................................................................52 2.3.7 Puerto serial..................................................................................................54 3. METODOLOGÍA ................................................................................................57 3.1 ENFOQUE DE LA INVESTIGACIÓN...............................................................57 3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO TEMÁTICO DEL PROGRAMA...............................................................................58 3.3 TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN .....................................58 3.4 HIPÓTESIS......................................................................................................59 3.5 VARIABLES .....................................................................................................60 3.5.1 Variables Independientes..............................................................................60 3.5.2 Variables Dependientes ................................................................................60 4. PRESENTACIÓN Y ANÁLISIS DE LOS RESULTADOS...................................61 4.1 COMPARACIÓN DE LOS MÓDULOS.............................................................63 4.1.1 Modulo de lámpara X-10 modelo S110110...................................................63 4.1.2 Modulo de lámpara con cable X-10 modelo S110112 ..................................64 4.1.3 Modulo de lámpara stanley modelo Lightmaker 370-2474 ...........................65 viii 4.1.4 Modulo receptor radio frecuencia X-10 modelo S110128 .............................66 4.1.5 Modulo receptor radiofrecuencia RF X-10 modelo PAT01............................67 4.1.6 Modulo receptor de empotrar modelo PAO11...............................................68 4.1.7 Sensor inalámbrico para puertas/ventanas X-10 modelo PDS01 .................69 4.1.8 Sensor de movimiento PR511 ......................................................................70 4.1.9 Interfaz bidireccional PSC05.........................................................................71 4.2 SELECCIÓN Y DESCRIPCIÓN DE LOS MÓDULOS X-10 .............................72 4.2.1 Interfaz CM11A-C .........................................................................................72 4.2.2 Módulo LM465 ..............................................................................................73 4.2.3 Mini Transceiver TM751-C............................................................................74 4.2.4 Sensor de movimiento MS14A-C..................................................................76 4.3 COSTOS Y MATRIZ COMPARATIVA .............................................................77 5. DISEÑO INGENIERIL........................................................................................78 5.1 CONEXIÓN DE LOS MÓDULOS X-10 ............................................................79 5.2 SONDEO DE LOS CÓDIGOS .........................................................................81 ix 5.3 CÓDIGOS HEXADECIMALES PARA OPERAR LOS MÓDULOS X-10 ..........85 5.4 SOFTWARE RS232 HEX COMM TOOL .........................................................88 5.5 DESARROLLO DEL SOFTWARE ...................................................................89 5.5.1 Diagrama de flujo programa cliente ..............................................................90 5.5.2 Diagrama de flujo programa servidor ............................................................92 5.5.3 Diseño y funcionamiento del programa.........................................................93 5.5.4 Descripción del programa cliente..................................................................94 5.5.5 Descripción del programa servidor ...............................................................96 5.5.6 Requisitos para ejecutar el software ............................................................99 5.5.7 Características del software........................................................................100 5.6 ENCENDIDO DEL PC EN FORMA AUTOMÁTICA .......................................100 6. CONCLUSIONES ............................................................................................102 7. RECOMENDACIONES ....................................................................................103 BIBLIOGRAFÍA BÁSICA......................................................................................104 BIBLIOGRAFÍA COMPLEMENTARIA .................................................................106 x LISTA DE TABLAS Pág. Tabla 1. Clase de direcciones IP. ..........................................................................40 Tabla 2. Pines del puerto serial..............................................................................55 Tabla 3. Descripción de puerto serial.....................................................................55 Tabla 4. Interés de sistemas automáticos por estrato............................................61 Tabla 5. Datos técnicos modulo S110110 .............................................................64 Tabla 6. Datos técnicos modulo S110112 .............................................................65 Tabla 7. Datos técnicos modulo stanley ................................................................66 Tabla 8. Datos técnicos modulo receptor de radiofrecuencia ................................67 Tabla 9. Datos técnicos modulo receptor de radiofrecuencia PAT01 ....................68 Tabla 10. Datos técnicos modulo receptor de empotrar ........................................69 Tabla 11. Datos técnicos sensor inalámbrico PDS01 ............................................70 Tabla 12. Datos técnicos sensor de movimiento PR511........................................71 Tabla 13. Presupuesto y costo final de los módulos implementados.....................77 xi Tabla 14. Comparación de las variables de los módulos y precio. ........................78 Tabla 15. Pines usados en la entrada del cable serial...........................................84 Tabla 16. Pines usados en salida 1 y 2 del cable serial.........................................85 Tabla 17. Funciones por cada Dato hexadecimal. .................................................86 Tabla 18. Dirección y funciones del código para cada módulo. .............................87 Tabla 19. Diferente dirección para cada código de casa .......................................88 xii LISTA DE FIGURAS Pág. Figura 1. Vivienda domótica. .................................................................................31 Figura 2. Portadora de la señal..............................................................................33 Figura 3. La transmisión completa de un código X-10. ..........................................33 Figura 4. Programador Java Studio creator. ..........................................................42 Figura 5. Programador Net beans..........................................................................44 Figura 6. Programa RS232 Hex Comm Tool. ........................................................46 Figura 7. Diagrama RMI.........................................................................................48 Figura 8. Diagrama ejemplo...................................................................................54 Figura 9. Conectores seriales macho y hembra.....................................................54 Figura 10. Modulo de lámpara X-10 modelo S110110...........................................63 Figura 11. Modulo de lámpara X-10 modelo S110112...........................................64 Figura 12. Modulo de lámpara stanley...................................................................65 Figura 13. Modulo receptor de radio frecuencia.....................................................66 Figura 14. Modulo receptor de radio frecuencia PAT01.........................................67 xiii Figura 15. Modulo receptor de empotrar................................................................68 Figura 16. Sensor inalámbrico PDS01...................................................................69 Figura 17. Sensor de movimiento PR511 ..............................................................70 Figura 18. Interfaz bidireccional PSC05.................................................................71 Figura 19. Home Automation Interfaz, CM11A-C...................................................73 Figura 20. Lamp Module, LM465. .........................................................................74 Figura 21. Preparación del Mini-transceiver, TM751-C..........................................75 Figura 22. Mini-transceiver TM751-C....................................................................76 Figura 24. Instalación de la interfaz. ......................................................................80 Figura 25. Módulos funcionando............................................................................81 Figura 26. Cable cruzado PC-PC...........................................................................82 Figura 27. Terminales del cable cruzado PC-PC. ..................................................83 Figura 28. Extensor del conector serial..................................................................84 Figura 29. Transmisión por el software RS232 Hex Comm Tool ...........................89 Figura 30. Vista principal entorno del programa. ...................................................94 xiv Figura 31. Inicio línea de código ............................................................................95 Figura 32. Configuración de los botones y la imagen. ...........................................95 Figura 33. Códigos en Hexadecimal. .....................................................................96 Figura 34. Inicio programa servidor. ......................................................................97 Figura 35. Sistemas operativos soportados. ..........................................................98 Figura 36. Configuración del puerto.......................................................................99 Figura 37. Hibernación en Windows XP. .............................................................101 xv LISTA DE ANEXOS Pág. ANEXO A: FEDERAL COMMUNICATIONS COMMISSION (FCC) .....................107 ANEXO B: UNDERWRITERS LABORATORIES (UL) .........................................116 ANEXO C: MANUALES DE USUARIO MÓDULOS X-10 ACTIVEHOME............118 ANEXO D: LINEA DE CODIGO PROGRAMA CONTROLADOR MÓDULOS .....131 xvi GLOSARIO Api: Application programmers interface, interfaz de programador de aplicaciones. RMI: Remote method invocation, Método de invocación remota. Abstract: Abstracto. Aplicable a clases o métodos. Array: Variable que posee varias posiciones para almacenar un valor en cada Array.Vector. ASCII: Acrónimo en ingles de código estadounidense estándar para el intercambio de información. AWT: Abstract Windowing Toolkit, Kit de Herramientas de Ventana Abstracta, es un kit de herramientas de gráficos, interfaz de usuario, y sistema de ventanas independiente de la plataforma original de Java. Break: Palabra clave que finaliza la ejecución de un bucle o de una instrucción switch. Bucles: Tipo de estructura iterativa, que permite repetir un conjunto de instrucciones un número variable de veces. BDK: Beans Developer Kit, Conjunto de herramientas para desarrollar JavaBeans. Bitio: Unidad mínima de información digital que puede tomar los valores lógicos de 0 o de 1. xvii Bloque: Código localizado entre corchetes. Bolean: Tipo de datos bi-estado, que puede tomar valor de cierto (true) o falso (false). Byte: Secuencia de 8 bitios. Clase: Estructura que define como son los objetos, indicando sus atributos y sus acciones. Cadena: Secuencia de caracteres. Caracter: Símbolo que representa información, o la codificación en una computadora. Normalmente letras de alfabeto, números o signos ASCII. Clase base: Clase de la cuál se hereda para construir otra clase, denominada derivada. Classpath: Variable de entorno que permite a la máquina virtual Java saber dónde localizar sus clases. Constructor: Función especial empleada para inicializar a los objetos, cada clase posee sus propios constructores. Dimmer: Regulador de intensidad luminosa. Domótica: Tecnología que integra todos los aparatos y electrodomésticos de un hogar con funciones de comunicaciones, seguridad, energía, comodidad, etc. xviii Excepcion: Objeto empleado para representar una situación de excepción (error) dentro de una aplicación Java. Hibernación: Cuando el PC pasa a un estado de hibernación se guarda una imagen del escritorio con todos los archivos y documentos abiertos y después, se apaga el equipo. Al encenderlo, los archivos y documentos se abren en el escritorio en el mismo estado en que se encontraban anteriormente. Inmótica: Es la incorporación al equipamiento de edificios de uso terciario o industrial (oficinas, edificios corporativos, hoteleros, empresariales y similares), de sistemas de gestión técnica automatizada de las instalaciones, con el objetivo de reducir el consumo de energía, aumentar el confort y la seguridad de los mismos JRE: Java Runtime Environment, Entorno de Ejecución Java. JVM: Java Virtual Machine. JAVA: Lenguaje orientado a objetos y desarrollado por Sun Microsystem. Comparte similitudes con C y C++. El principal objetivo de Java es hacer un lenguaje capaz de ser ejecutado de una forma segura a través de Internet. En el World Wide Web casi todos los browsers interpretan código Java. Java Virtual Machine (JVM): El intérprete de Java que ejecuta los códigos de byte en una plataforma particular. JavaBeans: Paquete que permite escribir componentes software Java, que se puedan incorporar gráficamente a otros componentes xix Luz: La luz es un fenómeno de naturaleza corpuscular y ondulatoria generado por unos fotones que se mueven de manera ondulatoria según diversas longitudes de onda. La velocidad de la luz es de 300.000 Km/seg. Los objetos sobre los que incide la luz acostumbran a absorber unas determinadas longitudes de onda y reflejar otras. Las ondas que refleja un objeto son las que le dan el color que vemos. Navegador Web: Software que permite al usuario conectarse a un servidor de Web utilizando Hypertext Transfer Protocol (HTTP). Microsoft Internet Explorer, Netscape Navigator, HotJava de Sun, son populares navegadores de Web. Navegador: Navegador Web. Null: Valor de Java que significa vacío. Port: (puerto) Número que identifica servicios de Internet. (i.e. Port 23 Telnet, etc). RF: Radio frecuencia. String: La clase String es utilizada para mostrar texto; se repasan algunos de sus métodos más importantes. Verificador de código de byte: Rutinas en la máquina virtual de Java, que aseguran que las instrucciones en el archivo de clase no violan ciertas restricciones de seguridad. TCP/IP: Transmission Control Protocol/Internet Protocol. Unión de dos protocolos de comunicaciones. TCP protocolo de control de transmisión, se ocupa del envío y xx del orden de los paquetes de información. IP identificación de máquina (transmisora/receptora). Equivale a un sobre con destinatario y remitente. Telnet: Protocolo estándar que permite el acceso remoto desde una máquina a otra, ambas conectadas a Internet. X-10: Protocolo de comunicación que utilizan los productos compatibles X-10 para hablarse entre ellos y que le permiten controlar las luces y los electrodomésticos del hogar, aprovechando para ello la instalación eléctrica existente en casa. xxi INTRODUCCIÓN Los mayores adelantos en tecnología que llegan al mercado están presentando soluciones como soportes lógicos y protocolos de comunicaciones, razón por la cual los sistemas inteligentes logran hacer la vida más fácil a personas que se encuentren con discapacidades y de igual manera a personas que buscan seguridad y control de su inmueble de una forma muy sencilla y eficiente. La domótica bien entendida y realmente útil aporta algo más que un simple encender/apagar, aporta control en el momento y en el tiempo mediante programación y en la distancia, de forma remota; en Colombia sólo se ha empleado para las grandes construcciones y edificios, alejando a las viviendas de los beneficios que solo goza la industria. En este proyecto se implementará un sistema de control de módulos X-10 desde Internet; el desarrollo del prototipo tendrá una importancia de acuerdo al estilo de la persona que lo use. Si el usuario es una persona ocupada y sin tiempo para el hogar, esta es una herramienta muy eficiente que reducirá costos de energía y aumentará el nivel de seguridad gracias a una plataforma que se controla desde cualquier parte del inmueble e incluso desde fuera por Internet. El programa es desarrollado completamente en el entorno Java orientado a objetos, a base comandos y librerías que permiten hacer la comunicación serial e invocación entre el cliente y el servidor vía TCP/IP, facilitando el control del inmueble desde cualquier lugar del mundo dando al usuario plena seguridad y control de sus electrodomésticos u otros elementos como bombillos y lámparas. 1. PLANTEAMIENTO DEL PROBLEMA 1.1 ANTECEDENTES La domótica ya no es solo una idea; existen en la actualidad, y es común verlo implementado desde su construcción en apartamentos y casas de los estratos mas altos de la ciudad. De hecho existen compañías que fabrican sistemas para automatizar hogares y electrodomésticos desde Internet y una variedad de artículos que hacen que la vivienda permanezca siempre atenta a órdenes de mando, pues este es el resultado de una idea con un poco más de 30 años de evolución. Para el control de procesos y seguridad tanto en viviendas como en al lugar de trabajo se ha visto la necesidad de instalar sistemas que proporcionen un manejo a distancia y una completa información del estado en que se encuentran los inmuebles, siendo estos sistemas de muy alto costo y poco comunes en Colombia. 1.1.1 Contexto Internacional: En cuanto a la situación internacional el protocolo X-10 de corrientes portadoras fue desarrollado entre 1976 y 1978 por ingenieros en Pico Electronics Ltd, en Glenrothes, Escocia. Proviene de una familia de chips, que son los resultados de los proyectos X (la serie X). Esta empresa comenzó a desarrollar el proyecto con la idea de obtener un circuito que se pudiera implementar en un dispositivo para ser controlado remotamente. 20 El primer módulo podía controlar cualquier dispositivo a través de la línea de corriente doméstica (120 ó 220 v. y 50 ó 60 Hz), modulando impulsos de 120 KHz (ausencia de este impulso=0, presencia de este impulso=1). Con un protocolo sencillo de direccionamiento se podía identificar cualquier elemento de la red, en total 256 direcciones. El protocolo contemplaba 16 grupos de direcciones llamados housecodes y 16 direcciones individuales llamadas unit codes. A este protocolo se le añadieron tiras de comandos llamados control strings que no son más que ceros y unos agrupados formando comandos; en total eran 6: encendido, apagado, reducir, aumentar, todo encendido, todo apagado. Estas señales las podían recibir todos los módulos, pero sólo actuaba sobre aquel al que iba. La frecuencia de transmisión era la de la corriente eléctrica (50 ó 60 Hz), y la señal completa incluyendo dirección y función ocupaba 48 bitios. Se hicieron muy populares, y hubo un gran distribuidor llamado Radio Shack que los vendió hasta que en 1979 los fabricó por su cuenta y los llamó Plug 'n' Power, y más tarde X10 1 . A partir de 1984, cuando ya era evidente que existían suficientes avances tecnológicos como para integrar y programar aparatos y funciones, sale al mercado el proyecto de la National Association of Home Builders, llamado Smart House. El elemento fundamental del Smart House era un sistema de cableado unificado que reemplazaba a los siete tradicionales de una casa: electricidad, 1 DOMODESK.COM. El sistema estándar X-10. [en línea]. [consultado julio 4 de 2006]. Disponible en: <http://www.domodesk.com/content.aspx?co=47&t=146&c=43> 21 calefacción, antenas, periféricos de audio-video, teléfono, informática y sistemas de protección. Como innovación destacaba su sistema de control de circuito cerrado, que permitía controlar cualquier aparato por medio de una señal apropiada y conocer en todo momento lo que estaba ocurriendo dentro de la casa. Otro proyecto destacado fue el Home Manager, de la sociedad Unity Systems Inc., fundada en 1983. Su sistema estaba orientado en primer lugar hacia el confort y adicionalmente hacia el control de la energía y del medio ambiente. Sus principales aplicaciones en orden a controlar los diferentes aparatos funcionaban por medio del teléfono y se reducen a apagado/encendido. Un ordenador IBM central regulaba todas esas funciones por medio del contacto del dedo sobre una pantalla táctil. Un tercer sistema de importancia fue el Tranxetext. Se trataba de un sistema que buscaba ante todo la facilidad para su uso explotando tanto la televisión como el teléfono. Este sistema estaba inspirado en el modelo telemático francés, aunque sin Minitel, es decir, un módem integrado en la línea telefónica, y la utilización de la pantalla del televisor como receptor. Su defecto era la pobreza de los diálogos telemáticos al estar éstos centralizados en el televisor y no sobre un ordenador. En cuanto a la Comunidad Europea no tenía una política concreta dirigida específicamente al hogar inteligente, de ahí que se desarrollaran diferentes programas como lo fueron el programa ESPRIT (European Scientific Programmer for Research & Development in Information Technology) el cual era un programa de investigación cuyo principal objetivo se basaba en crear estándares ampliamente aceptados a nivel internacional, el programa EUREKA, este fue creado en 1985 y centraba sus objetivos en crear productos comerciables de las tecnologías de la información y de las telecomunicaciones, la robótica, los materiales y las técnicas de montaje entre otros. 22 En Francia, desde 1998, se han venido realizando importantes aportes prácticos como la Casa Lyon Panorama, proyecto HD2000. Desde los inicios del nuevo milenio y con los nuevos descubrimientos, el desarrollo de la domótica, utilizando el protocolo X-10, ha acelerado su crecimiento dejando ver proyectos tan grandes, costosos y de alta tecnología como son: • Vivienda de demostración de Hidroeléctrica de Cataluña, en Premia de Mar. • Proyecto y ejecución de ocho viviendas unifamiliares domóticas / todo eléctrico situadas en Malla 2 . Hoy en día, el protocolo X-10 es un estándar y a la vez un fabricante de estos mismos productos y productos compatibles con X-10 y desde que empezó su comercialización en el año 1978, millones de instalaciones en todo el mundo avalan este sistema técnicamente conocido por Power Line Carrier. 1.1.2 Contexto Nacional: En Colombia desde aproximadamente el año 2001 están trabajando e incursionando muchas empresas comerciales con ofertas muy interesantes en el área de los electrodomésticos, de la climatización, del riego y otras, pero todas ellas provienen de fabricantes extranjeros. En Colombia, no hay suficientes personas entrenadas para satisfacer las demandas de automatización y 2 CUEVAS, Víctor. Edificios Inteligentes y Casas domóticas. En: Título de la publicación. [en línea]. [consultado Febrero de 2007]. Disponible en: <http://casafutura.diatel.upm.es/rrssmd/trabajos/2004/word/05_-Edificios y casas inteligentes V_Cuevas> 23 producción, y es poco el interés e importancia que se le da a un tema de desarrollo con tecnología de punta. Por otra parte es importante resaltar que estas nuevas tecnologías son poco asequibles para el consumidor promedio, por ser desarrollos realizados fuera del país. 24 1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA 1.2.1 Descripción A medida que la tecnología avanza, las comunicaciones y los sistemas informáticos han permitido que la prestación de servicios a través de Internet cubra las diferentes necesidades de telecomunicación, y a su vez las empresas, han podido utilizar este medio para la operación de procesos a larga distancia, generando una modalidad de tele-control. Sin embargo aunque en Colombia los hogares han encontrado soluciones que permiten la administración de sistemas instalados, como aparatos, luces o sensores; ni los equipos ni el soporte de programación son de manufactura propia del país, aunque si se han encontrado estudios y propuestas en cuanto a equipos es muy escaso el desarrollo de software y sistemas de comunicación con los dispositivos eléctricos de las casas. No se encuentra en el mercado un sistema de monitoreo hecho en Colombia que brinde seguridad, respaldo y economía para proteger la vivienda. Por lo tanto, es necesario desarrollar redes privadas para el manejo remoto de los electrodomésticos y un sistema de monitoreo y control, modelado para la estructura eléctrica de una vivienda colombiana, utilizando herramientas y materiales de bajo costo, para suplir la insuficiencia de un sistema domótico económico en el mercado local. 25 1.2.2 Descripción y formulación del problema Hoy en día muchos hogares Colombianos desean tener un sistema de seguridad cuando se van de sus viviendas ya sea de viaje o por el día buscando la forma de disimular que se encuentra alguien dentro del inmueble, además de poder encender o apagar ciertos dispositivos eléctricos desde el lugar en que se encuentren para tener una mayor comodidad y funcionalidad de sus viviendas. Existen muchas formas de controlar un inmueble, teniendo en cuenta la velocidad con que aumenta la tecnología se puede apreciar como se crea la necesidad de mejorar el estilo de vida de las personas, y aprovechando que existen dispositivos que ayudan a automatizar procesos en un hogar, oficina o empresa. Además la domotica en Colombia no es muy comercial y para realizar aplicaciones se necesita importar los módulos y su respectivo software, dependiendo de caracteristicas como el voltaje y frecuencia de las líneas alternas que transportan la energía. 1.3 JUSTIFICACIÓN Este proyecto se plantea con el fin de lograr que hoy en día una vivienda inteligente sea algo que este al alcance de todos los hogares, Colombia es un país en vía de desarrollo y lo que se quiere es traer una tecnología flexible, a un bajo costo que tenga una interfaz de fácil acceso, amigable y muy funcional para los usuarios a los que esta dirigido este proyecto. 26 El control integrado de estos sistemas en una vivienda es algo necesario; las tecnologías actuales, aplicadas a las viviendas, requieren un esmerado control. Hasta el momento, en un edificio todos los sistemas eran independientes, hoy la domótica ofrece soluciones que integran y relacionan entre sí dichos elementos suponiendo una clara ventaja para el usuario. En todos los campos de la tecnología siempre ha tenido como fin mejorar la calidad de vida de todos los seres humanos, para ello se han creado nuevos, mejorados, y diminutos sistemas que permitan realizar este fin. Para satisfacer algunas necesidades del hogar se han desarrollado varios medios que facilitan tareas para ahorrar tiempo, seguridad, control entre otros, estos se han denominado sistemas domóticos que hoy en día avanzan a pasos inmensos y los cuales han tenido gran acogida globalmente. Para lograr un buen funcionamiento y optimización en la creación de estos sistemas se ha elegido la implementación de varias tecnologías actuales como la comunicación de módulos X-10 usando la red eléctrica que ofrece múltiples ventajas, además los adelantos en la informática ofrecen innumerables aplicaciones y facilidades para el control de estos sistemas haciendo menos compleja la implementación y utilización de los mismos. En Colombia los módulos X-10 son controles sectorizados y nos ofrecen una mayor flexibilidad, mas no es un sistema que se pueda controlar desde cualquier punto del hogar como lo es el desarrollo de este proyecto, además ofrece mayores ventajas y servicios los cuales se ven reflejados en la satisfacción del usuario final. Otras soluciones se deben tener en cuenta, como la accesibilidad de estos sistemas hacia otros tipos de sociedades de más bajos recursos y que requieran estos servicios, esto se logra unificando y acoplando toda la tecnología posible. 27 1.4 OBJETIVOS DE LA INVESTIGACIÓN 1.4.1 Objetivo general Diseñar e implementar el prototipo de un sistema de control por software de módulos X-10, utilizando el Internet como medio de transmisión y el lenguaje Java como medio de programación para controlar dispositivos ON/OFF y control de variación de voltaje en un inmueble, teniendo en cuenta aspectos fundamentales como lo son bajo costo y fácil implementación. 1.4.2 Objetivos específicos • Escoger los módulos X-10 que mejor se ajusten a las características del proyecto. • Analizar el tipo de datos que envía y recibe la interfaz de comunicación con el PC. • Desarrollar el software necesario para realizar la comunicación entre PC`s. • Diseñar la plataforma de comunicación por protocolos TCP/IP. • Diseñar la interfaz de comunicación entre el cliente y el servidor. 28 1.5 ALCANCES Y LIMITACIONES DEL PROYECTO 1.5.1 Alcances El propósito de este proyecto es impulsar nuevas tecnologías en la población Colombiana, diseñando un sistema completo de control a larga distancia por medio de protocolos IP y programación en Java. Se implementaron dos módulos X-10, los cuales estarán comunicados por medio de una interfaz al computador por puerto serial, comandados a través de Internet. Los módulos X-10 manejan específicamente control encendido - apagado, estos fueron programados para que controlen la luz de la sala, encendido y apagado del equipo de sonido de la vivienda, esto realizándolo a larga distancia. 1.5.2 Limitaciones El equipo en el cual se instaló el software que controla los equipos tiene unas características mínimas como memoria y velocidad, de esto depende el buen funcionamiento del proyecto. Este proyecto es de investigación y programación, debido a que los datos a enviar por el puerto serie son parte de la investigación, la programación se llevó a cabo utilizando el modelo cliente servidor y RMI (Remote Method Invocation), basándose en el lenguaje java. 29 2. MARCO DE REFERENCIA 2.1 MARCO CONCEPTUAL 2.1.1 Domótica Un sistema domótico está formado por una unidad central que gestiona distintos elementos periféricos destinados a realizar determinados servicios en el ámbito doméstico. Se trata de aplicar la tecnología de la automatización y el control al hogar. Un mercado emergente de infinitas posibilidades enfocado a mejorar la calidad de vida aumentando la comodidad, la seguridad y el confort, consiguiendo al mismo tiempo un considerable ahorro del consumo de energía. Una vivienda será Domótica si incluye una infraestructura de cableado y los equipos necesarios para disponer de servicios avanzados en la misma. La configuración de un sistema domótico está íntimamente ligada a los procedimientos de transmisión de información que posibilitan el diálogo entre dichos periféricos y la unidad central. Los terminales suelen ser equipos convencionales a los que se aporta una inteligencia o capacidad de comunicación a través de una interfaz. Todos los elementos de campo envían y reciben señales a través de una red de comunicaciones (bus domótico), para comunicarse entre ellos y con la unidad central encargada de gestionar los intercambios de información. Estas señales de control están codificadas de una determinada forma (protocolos de comunicación), por lo que se necesitan elementos que pasen las 30 señales bus y a su vez, de señales bus a señales de salida que irán a los actuadores (relés, interruptores, etc.). Estos elementos se suelen denominar de diferentes formas: módulos de entrada/salida, acopladores, interfaces, etc. Figura 1. Vivienda domótica. ¿Qué es domótica? [Sitio en Internet]. Disponible en www.domodesk.com La domótica se centra en cuatro aspectos fundamentales: • La mejora de la comodidad. • Aportar más seguridad. • Nuevas formas de comunicación. • Reducción de los gastos energéticos. 31 2.1.2 Protocolo X-10 El protocolo X-10 es el sistema estándar de tantos sistemas de corrientes portadoras ya que es el que mas extendido. Este sistema se creo hace más de 20 años y sus antiguos componentes siguen funcionando igual que el primer día con nuevos modelos. Ha sido desarrollado para ser flexible, con lo que sus aplicaciones pueden ser muy diversas. Este sistema puede gobernar luces, electrodomésticos, sistemas de seguridad. Su total control se realizó por medio un PC, control por acceso remoto. Sus componentes son de sencilla instalación, ya que no precisan de cableados especiales, va instalado en la propia instalación actual de una vivienda de 120 V a 60 Hz. - Es un sistema descentralizado; configurable, no programable. - De instalación sencilla (conectar y funcionar). - De fácil manejo por el usuario. - Compatibilidad casi absoluta con los productos de la misma gama, obviando fabricante y antigüedad. - Flexible y ampliable. 32 2.1.3 Corrientes portadoras Figura 2. Portadora de la señal. Corrientes portadoras. [Sitio en Internet]. Disponible en www.electronred.iespana.es/corrportadoras.htm Es un código binario (unos y ceros). Un 1 binario del mensaje se representa por un pulso de 120 Khz. durante 1 mseg, en el punto cero, y el O binario del mensaje se representa por la ausencia de ese pulso de 120 Khz. El pulso de 1 mseg se transmite 3 veces para que coincida con el paso por cero de las tres fases para un sistema trifásico. Figura 3. La transmisión completa de un código X-10. Teoría sistema X-10. [Sitio en Internet]. Disponible en www.domodesk.com 33 La transmisión completa de un código X-10 necesita once ciclos de corriente. Los dos primeros ciclos representan el Código de Inicio. Los cuatro ciclos siguientes representan el Código de Casa (letras A-P), los siguientes cinco representan o bien el Código Numérico (1-16), o bien el Código de Función (Encender, Apagar, Aumento de intensidad, etc.). Este bloque completo (Código de Inicio, Código de Casa y Código de Función o Numérico) se transmite siempre dos veces, separando cada dos códigos por tres ciclos de la corriente, excepto para funciones de regulación de intensidad, que se transmiten de forma continua (por lo menos dos veces) sin separación entre códigos. 2.2 MARCO LEGAL O NORMATIVO Para Colombia, los módulos de domótica necesariamente deben tener especificaciones técnicas, como su voltaje que para líneas alternas es 120 V AC y su frecuencia es de 60 Hz. Ya que algunos módulos de X-10 están diseñados para el sistema europeo que son 220 V AC y frecuencia de 50 Hz. 2.2.1 FCC (Comisión federal de comunicaciones) La Comisión Federal de Comunicaciones (FCC, por sus siglas en inglés) fue creada por la Ley de Comunicaciones de 1934 y es una agencia independiente del gobierno de los Estados Unidos. La FCC tiene a su cargo la reglamentación de las comunicaciones interestatales (entre los estados) e internacionales por radio, televisión, teléfono, satélite, y cable en todos los 50 estados, el Distrito de Columbia, y los territorios de los Estados Unidos. Cinco Comisionados dirigen la FCC. Todos ellos son nombrados por el Presidente y ratificados por el Senado. Solo tres de los Comisionados pueden ser del mismo 34 partido político y ninguno puede tener un interés financiero en ninguno de los negocios relacionados con la Comisión. De los Comisionados, el Presidente selecciona a uno para que funja como Presidente de la Comisión. Todos los Comisionados, incluyendo al Presidente, tienen un término de cinco años, excepto cuando entran para cubrir un período inconcluso. Ver Anexo 1. 2.2.2 UL (Underwriters laboratories) Underwriters Laboratories Inc. (UL) es un organismo independiente de pruebas / ensayos de seguridad y certificación, que evalúa productos, materiales y sistemas trabajando por la seguridad de los consumidores y sus bienes desde 1894. UL es líder mundial en el desarrollo de normas de seguridad de productos, las cuales son frecuentemente actualizadas y revisadas para responder a los cambios en la tecnología o responder a nuevos usos de estos productos. Con el avance de la globalización, los fabricantes están encontrando oportunidades de vender sus productos en nuevos mercados. Sin embargo, para poder ingresar en esos mercados, los productos deben cumplir con diversos requisitos técnicos nacionales, regionales e internacionales. UL posee los conocimientos y la experiencia necesarios para apoyar a sus clientes a fin de conseguir su acceso a los mercados internacionales de forma más simple y oportuna. A través de esquemas de certificación internacionales y acuerdos de cooperación con organizaciones de normas internacionales, pruebas / ensayos y, certificación de gestión de calidad, UL está en condiciones de evaluar productos según las 35 normas de otros países, facilitando su aceptación por las diferentes agencias de certificación, mediante un sometimiento único del producto. 2.3 MARCO TEÓRICO 2.3.1 Módulos X-10 Los módulos X-10 son los encargados de ejecutar las órdenes recibidas a través de la red eléctrica de 120V. Hay dos tipos básicos: El módulo de lámpara que permite regular la intensidad de las luces, y el módulo de aparato que funciona como un interruptor encendiendo y apagando el electrodomestico que a él se encuentra conectado. 2.3.2 Protocolo TCP/IP El protocolo de control de transmisión protocolo Internet (TCP/IP) es el conjunto de protocolos de trasporte tradicionales para Internet y sistemas UNIX. Tiene una gran capacidad para redes de área amplia y su desarrollo esta abierto y sostenido por toda la industria de computadoras. Como resultado, TCP/IP se ha convertido en un protocolo aceptado por la industria, que puede conectar casi todas las redes. El Protocolo de Internet (IP) es el soporte lógico básico empleado para controlar este sistema de redes. Este protocolo especifica cómo las computadoras de puerta encaminan la información desde el ordenador emisor hasta el ordenador 36 receptor. Otro protocolo denominado Protocolo de Control de Transmisión (TCP) comprueba si la información ha llegado al ordenador de destino y, en caso contrario, hace que se vuelva a enviar. La utilización de protocolos TCP/IP es un elemento común en las redes Internet e intranet. 2.3.3 Direccionamiento IP Una dirección IP es un número que identifica de manera lógica y jerárquica a una interfaz de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red o nivel 3 del modelo de referencia OSI 3 . Dicho número no se ha de confundir con la dirección MAC que es un número hexadecimal fijo que es asignado a la tarjeta o dispositivo de red por el fabricante, mientras que la dirección IP se puede cambiar. Es habitual que un usuario que se conecta desde su hogar a Internet utilice una dirección IP. Esta dirección puede cambiar al reconectar; y a esta forma de asignación de dirección IP se denomina una dirección IP dinámica (normalmente se abrevia como IP dinámica). Los sitios de Internet que por su naturaleza necesitan estar permanentemente conectados, generalmente tienen una dirección IP fija (se aplica la misma reducción por IP fija o IP estática), es decir, no cambia con el tiempo. Los servidores de correo, DNS, FTP públicos, y servidores de páginas Web 3 Interconexión de Sistemas Abiertos por sus siglas en ingles (OSI) disponible en: http://es.wikipedia.org/wiki/Modelo_OSI [16 Septiembre, 2007 2:43pm] 37 necesariamente deben contar con una dirección IP fija o estática, ya que de esta forma se permite su localización en la red. A través de Internet, los ordenadores se conectan entre sí mediante sus respectivas direcciones IP. Sin embargo, a los seres humanos nos es más cómodo utilizar otra notación más fácil de recordar y utilizar, como los nombres de dominio; la traducción entre unos y otros se resuelve mediante los servidores de nombres de dominio DNS. Existe un protocolo para asignar direcciones IP dinámicas llamado DHCP (Dynamic Host Configuration Protocol); en su versión 4, una dirección IP se representa mediante un número binario de 32 bitios (IPv4). Las direcciones IP se pueden expresar como números de notación decimal: se dividen los 32 bitios de la dirección en cuatro octetos. El valor decimal de cada octeto puede ser entre 0 y 255 (el número binario de 8 bitios más alto es 11111111 y esos bitios, de derecha a izquierda, tienen valores decimales de 1, 2, 4, 8, 16, 32, 64 y 128, lo que suma 255 en total). En la expresión de direcciones IPv4 en decimal se separa cada octeto por un carácter punto (.). Cada uno de estos octetos puede estar comprendido entre 0 y 255, salvo algunas excepciones. Los ceros iniciales, si los hubiera, se pueden obviar. Ejemplo de representación de dirección IPv4: 164.12.123.65 Hay tres clases de direcciones IP que una organización puede recibir de parte de la Internet Corporation for Assigned Names and Numbers (ICANN): clase A, clase B y clase C. En la actualidad, ICANN reserva las direcciones de clase A para los gobiernos de todo el mundo (aunque en el pasado se le hayan otorgado a empresas de gran envergadura como, por ejemplo, Hewlett Packard) y las 38 direcciones de clase B para las medianas empresas. Se otorgan direcciones de clase C para todos los demás solicitantes. Cada clase de red permite una cantidad fija de equipos (hosts). En una red de clase A, se asigna el primer octeto para identificar la red, reservando los tres últimos octetos (24 bitios) para que sean asignados a los hosts, de modo que la cantidad máxima de hosts es 224 (menos dos: las direcciones reservadas de broadcast [tres últimos octetos a 255] y de red [tres últimos octetos a 0]), es decir, 16 777 214 hosts. En una red de clase B, se asignan los dos primeros octetos para identificar la red, reservando los dos octetos finales (16 bitios) para que sean asignados a los hosts, de modo que la cantidad máxima de hosts es 216 (menos dos), o 65 534 hosts. En una red de clase C, se asignan los tres primeros octetos para identificar la red, reservando el octeto final (8 bitios) para que sea asignado a los hosts, de modo que la cantidad máxima de hosts es 28 (menos dos), o 254 hosts. • La dirección 0.0.0.0 es utilizada por las máquinas cuando están arrancando o no se les ha asignado dirección. • La dirección que tiene su parte de host a cero sirve para definir la red en la que se ubica. Se denomina dirección de red. • La dirección que tiene su parte de host a unos sirve para comunicar con todos los hosts de la red en la que se ubica. Se denomina dirección de broadcast. • Las direcciones 127.x.x.x se reservan para pruebas de retroalimentación. Se denomina dirección de bucle local o loopback. 39 Tabla 1. Clase de direcciones IP. Clase Dirección Bitios de red Bitios de host 10.0.0.0 a 10.255.255.255 8 bitios 24 bitios A 172.16.0.0 a 172.31.255.255 16 bitios 16 bitios B 192.168.0.0 a 192.168.255.255 24 bitios 8 bitios C 2.3.4 Programación Java Sun Microsystems, líder en servidores para Internet, uno de cuyos lemas desde hace mucho tiempo es "the network is the computer" (lo que quiere dar a entender que el verdadero ordenador es la red en su conjunto y no cada máquina individual), es quien ha desarrollado el lenguaje Java, en un intento de resolver simultáneamente todos los problemas que se le plantean a los desarrolladores de software por la proliferación de arquitecturas incompatibles, tanto entre las diferentes máquinas como entre los diversos sistemas operativos y sistemas de ventanas que funcionaban sobre una misma máquina, añadiendo la dificultad de crear aplicaciones distribuidas en una red como Internet. Las características principales que nos ofrece Java respecto a cualquier otro lenguaje de programación, son: Simple, orientado a objetos, distribuido, robusto, arquitectura neutral, seguro, portable y dinámico. 40 2.3.4.1 Desarrollo rápido de aplicaciones Hace años, se decía que los programadores pronto desaparecerían. Los generadores automáticos de programas, eliminarían a los generadores humanos y el mundo sería un lugar mejor para vivir. Desafortunadamente, quienes decían esto, no tuvieron en cuenta una acelerada demanda de software de calidad para muy diferentes aplicaciones. Sin embargo, la tecnología de objetos pronto llego a intentar facilitar la tarea, adoptando el modelo de "generar parte de un programa", así, generando la parte básica de un programa (los objetos), se podría conectar con otras partes para proporcionar diferentes utilidades al usuario. Visual Basic y NextStep, se acercan cada vez más al poder de los objetos. Java facilita la creación de entornos de desarrollo-aplicaciones de modo similar, pero además es flexible, poderoso y efectivo. Los programadores ahora disponen de herramientas de programación de calidad beta, que apuntan hacia esa meta, como son el Java WorkShop de SunSoft, el entorno Java de Borland, el Café de Symantec y pronto, herramientas más sofisticadas como Netcode o FutureTense. Esto proporciona una gran progresión a los entornos de desarrollo Java. 41 2.3.4.2 Compiladores Java • Java Studio Creador El Editor Java es un editor de texto completo integrado con el Diseñador visual, el compilador, el depurador y otras partes del programa. Se puede crear un programa con interfaz visual y programar sus diferentes fichas, etiquetas, tablas y demás conceptos visuales, las ventajas de este programador de java son su facilidad de manejar el entorno de programación con diferentes imágenes, permitiendo ver su línea de código para así modificarla si es necesario. Figura 4. Programador Java Studio creator. . 42 • Java Netbeans Este programador es desarrollado por sun Microsystems y es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans. La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software. • Paquetes adicionales de NetBeans a. NetBeans enterprise pack Provee Soporte para la creación de aplicaciones Orientadas a Servicios (SOA), incluyendo herramientas de esquemas XML, un editor WSDL, y un editor BPEL para Web services. 43 b. Pack de movilidad de NetBeans El Pack de Movilidad de NetBeans es una herramienta para desarrollar aplicaciones que se ejecutan en teléfonos móviles El Pack de Movilidad puede ser usado para escribir, probar, y depurar aplicaciones para la plataforma Java ME, tecnología existente en dispositivos móviles. Figura 5. Programador Net beans. 44 c. Profiler de NetBeans. El Profiler de NetBeans es una herramienta para la optimización de aplicaciones Java: Ayuda a encontrar cuellos de botella en la memoria y a optimizar la velocidad de las aplicaciones. d. El C/C++ Native Development Module Soporta proyectos de C/C++, mas algunos archivos de información http://www.netbeans.org/kb/55/1/cnd-index.html. El Visual Web Pack Permite rápida y visualmente, construir aplicaciones Web estándar, incluyendo Soporte para AJAX y componentes JSF. • Java development kit El Java Development Kit, JDK por sus siglas en ingles, es un compilador y conjunto de herramientas de desarrollo para la creación de programas independientes y applets java. Los programas java Studio creador, netbeans y el java development kit, compilan el Remote method invocated y de esta forma fusionar el entorno visual con la línea de código del programa. 45 2.3.5 Software RS232 Hex Com tool Este programa recibe y transmite en códigos ASCII y hexadecimal, permite modificar la velocidad de los bitios, paridad, puerto y bitios por parada. Figura 6. Programa RS232 Hex Comm Tool. 2.3.6 Aplicaciones RMI Las aplicaciones RMI normalmente comprenden dos programas separados: un servidor y un cliente. Una aplicación servidor típica crea objetos remotos, hace accesibles referencias a dichos objetos remotos, y espera a que los clientes 46 llamen a estos métodos u objetos remotos. Una aplicación cliente típica obtiene una referencia remota de uno o más objetos remotos en el servidor y llama a sus métodos. RMI proporciona el mecanismo por el que se comunican y se pasan información del cliente al servidor y viceversa. Cuando es una aplicación, algunas veces se refiere a ella como aplicación de objetos distribuidos, las cuales necesitan: - Localizar objetos remotos Las aplicaciones pueden utilizar uno de los dos mecanismos para obtener referencias a objetos remotos. Puede registrar sus objetos remotos con la facilidad de nombrado de RMI rmiregistry o puede pasar y devolver referencias de objetos remotos como parte de su operación normal. - Comunicar con objetos remotos Los detalles de la comunicación entre objetos remotos son manejados por el RMI; para el programador, la comunicación remota se parecerá a una llamada estándar a un método Java. - Cargar bytecodes para objetos que son enviados Como RMI permite al caller pasar objetos Java a objetos remotos, RMI proporciona el mecanismo necesario para cargar el código del objeto, así como la transmisión de sus datos. La siguiente ilustración muestra una aplicación RMI distribuida que utiliza el registro para obtener referencias a objetos remotos. El servidor llama al registro 47 para asociar un nombre con un objeto remoto. El cliente busca el objeto remoto por su nombre en el registro del servidor y luego llama a un método. Esta ilustración también muestra que el sistema RMI utiliza una servidor Web existente para cargar los bytecodes de la clase Java, desde el servidor al cliente y desde el cliente al servidor, para los objetos que necesita. Figura 7. Diagrama RMI Remoted metod invocation. [Sitio en Internet]. Disponible en www.javaword.com/rmi El sistema RMI utiliza un servidor Web para cargar los bytecodes de la clase Java, desde el servidor al cliente y desde el cliente al servidor. 48 2.3.6.1 Ventajas de la carga dinámica de código Una de las principales características del RMI es la habilidad de descargar los bytecodes (o simplemente, código) de una clase de un objeto si la clase no está definida en la máquina virtual del receptor. Los tipos y comportamientos de un objeto, anteriormente sólo disponibles en una sola máquina virtual, ahora pueden ser transmitidos a otra máquina virtual, posiblemente remota. RMI pasa los objetos por su tipo verdadero, por eso el comportamiento de dichos objetos no cambia cuando son enviados a otra máquina virtual. Esto permite que los nuevos tipos sean introducidos en máquinas virtuales remotas, y así extender el comportamiento de una aplicación dinámicamente. 2.3.6.2 Interfaces, objetos y métodos remotos Una aplicación distribuida construida utilizando RMI de Java, al igual que otras aplicaciones Java, está compuesta por interfaces y clases. Las interfaces definen métodos, mientras que las clases implementan los métodos definidos en las interfaces y, quizás, también definen algunos métodos adicionales. En una aplicación distribuida, se asume que algunas implementaciones residen en diferentes máquinas virtuales. Los objetos que tienen métodos que pueden llamarse por distintas máquinas virtuales son los objetos remotos. Un objeto se convierte en remoto implementando una interfaz remota, que tenga estas características. 49 - Una interfaz remota desciende del interfaz java.rmi.Remote. - Cada método de la interfaz declara que lanza una java.rmi.Remote Exception además de cualquier excepción específica de la aplicación. El RMI trata a un objeto remoto de forma diferente a como lo hace con los objetos no remotos cuando el objeto es pasado desde una máquina virtual a otra. En vez de hacer una copia de la implementación del objeto en la máquina virtual que lo recibe, RMI pasa un stub para un objeto remoto. El stub actúa como la representación local o proxy del objeto remoto y básicamente, para el caller, es la referencia remota. El caller invoca un método en el stub local que es responsable de llevar a cabo la llamada al objeto remoto. Un stub para un objeto remoto implementa el mismo conjunto de interfaces remotas que el objeto remoto. Esto permite que el stub sea cargado a cualquiera de las interfaces que el objeto remoto implementa. Sin embargo, esto también significa que sólo aquellos métodos definidos en una interfaz remota están disponibles para ser llamados en la máquina virtual que lo recibe. 2.3.6.3 Compilar las fuentes y generar stubs Este es un proceso de dos pasos. En el primer paso, se utiliza el compilador javac para compilar los ficheros fuentes de Java, los cuales contienen las implementaciones de las interfaces remotas, las clases del servidor y del cliente. En el segundo paso es utilizar el compilador rmic para crear los stubs de los objetos remotos. RMI utiliza una clase stub del objeto remoto como un proxy en el cliente para que los clientes puedan comunicarse con un objeto remoto particular. 50 2.3.6.4 Hacer accesibles las clases en la red En este paso, se debe hacer que todo - los ficheros de clases Java asociados con las interfaces remotas, los stubs, y otras clases que se necesiten descargar en los clientes- sean accesibles a través de un servidor Web. 2.3.6.5 Escribir un servidor RMI El servidor del motor de cálculo acepta tareas de los clientes, las ejecuta y devuelve los resultados. El servidor está compuesto por una interfaz y una clase. El interfaz proporciona la definición de los métodos que pueden ser llamados desde el cliente. Esencialmente, el interfaz define lo que el cliente ve del objeto remoto. La clase proporciona la implementación. Se pueden ejecutar diferentes tipos de tareas en un objeto Compute siempre que sean implementaciones del tipo Task. Las clases que implementen esta interfaz pueden contener cualquier dato necesario para el cálculo de la tarea y cualquier otro método necesario para ese cálculo. 2.3.6.6 Definir el constructor La clase Java_x_10_Cliente tiene un único constructor que no toma argumentos. public Java_x_10_Cliente() throws RemoteException { super();} 51 Este constructor sólo llama al constructor de su superclase, que es el constructor sin argumentos de la clase UnicastRemoteObject. Aunque el constructor de la superclase obtiene la llamada incluso si se omite en el constructor de Java_x_10_Cliente, se ha incluido por claridad. Durante la construcción, un objeto UnicastRemoteObject es exportado, lo que significa que está disponible para aceptar peticiones de entrada al escuchar las llamadas de los clientes en un puerto anónimo. El constructor sin argumentos de la superclase, UnicastRemoteObject, declara la excepción RemoteException en su clausula throws, por eso el constructor de Java_x_10_Cliente también debe declarar que lanza una RemoteException. Esta excepción puede ocurrir durante la construcción si falla el intento de exportar el objeto (debido a que, por ejemplo, no están disponibles los recursos de comunicación o a que la clase stub apropiada no se encuentra). 2.3.6.7 Crear un Programa Cliente La interfaz no-remota task se define de esta forma. package compute; public interfaz Task extends java.io.Serializable { Object execute(); } El interfaz Task extiende java.io.Serializable por lo que cualquier objeto que lo implemente puede ser serializado por el sistema RMI y enviado a una máquina 52 virtual remota como parte de una llamada a un método remoto. Se podría haber elegido hacer que la implementación de la clase implementara las interfaces Task y Serializable y hubiera tenido el mismo efecto. Sin embargo, el único proposito de la interfaz Task es permitir que las implementaciones de esta interfaz sean pasadas a objetos Compute, por eso, una clase que implemente la interfaz Task no tiene sentido que también implemente la interfaz Serializable. Dado se ha asociado explícitamente las dos interfaces en el tipo system, asegurando que todos los objetos Task sean serializables. El código que llama a los métodos del objeto Compute debe obtener una referencia a ese objeto, crear un objeto Task, y luego pedir que se ejecute la tarea. Al igual que el servidor Java_x_10_Cliente, el cliente empieza instalando un controlador de seguridad. Esto es necesario porque RMI podría descargar código en el cliente. En este ejemplo, el stub Java_x_10_Cliente es descargado al cliente. Siempre que el RMI descargue código, debe presentarse un controlador de seguridad. Al igual que el servidor, el cliente utiliza el controlador de seguridad proporcionado por el sistema RMI para este propósito. Después de llamar al controlador de seguridad, el cliente construye un nombre utilizado para buscar un objeto remoto Compute. El valor del primer argumento de la línea de comandos args[0], es el nombre del host remoto, en el que se están ejecutando los objetos Compute. Usando el método Naming.lookup, el cliente busca el objeto remoto por su nombre en el registro del host remoto. Cuando se hace la búsqueda del nombre, el código crea una URL que específica el host donde se está ejecutando el servidor. El nombre pasado en la llamada a 53 Naming.lookup tiene la misma síntaxis URL que el nombre pasado a la llamada Naming.rebind. Figura 8. Diagrama ejemplo 2.3.7 Puerto serial Puerto para conectar un dispositivo a una computadora. La información se transmite por un solo conducto y por lo tanto bitio a bitio de forma serial. Figura 9. Conectores seriales macho y hembra. 54 La mayoría de los puertos seriales de las PC obedecen el estándar RS232. El RS232C es un estándar que constituye la tercera revisión de la antigua norma RS232, propuesta por la EIA (Asociación de Industrias Electrónicas), realizándose posteriormente un versión internacional por la UIT-T 4 , conocida como V.24. Las diferencias entre ambas son mínimas, por lo que algunas veces se habla indistintamente de V.24 y de RS-232C (incluso sin el sufijo "C"), refiriéndose siempre al mismo estándar. Tabla 2. Pines del puerto serial PIN FUNCIÓN TXD RXD DTR DSR RTS CTS DCD (Transmitir Datos) (Recibir Datos) (Terminal de Datos Listo) (Equipo de Datos Listo) (Solicitud de Envío) (Libre para Envío) (Detección de Portadora) El RS-232C consiste en un conector tipo DB-25 de 25 pines, aunque es normal encontrar la versión de 9 pines DB-9, mas barato e incluso más extendido para cierto tipo de periféricos (como el ratón serie del PC). En cualquier caso, los PC’s no suelen emplear más de 9 pines en el conector DB-25. Las señales con las que trabaja este puerto serie son digitales, de +12V (0 lógico) y -12V (1 lógico), para la entrada y salida de datos y a la inversa en las señales de control. Tabla 3. Descripción de puerto serial 4 Sector de normalizacion de las telecomunicaciones de la UIT por sus siglas en ingles (UIT-T) disponible en: http://es.wikipedia.org/wiki/UIT-T [18 Septiembre, 2007] 55 Pin Señal Descripción E/S 1 - Masa chasis - 3 TxD Transmit Data S 2 RxD Receive Data E 7 RTS Request To Send S 8 CTS Clear To Send E 6 DSR Data Set Ready E 5 SG Signal Ground - 1 CD/DCD (Data) Carrier Detect E - TxC(*) Transmit Clock S - RxC(*) Receive Clock E 4 DTR Data Terminal Ready S 9 RI Ring Indicator E - RTxC(*) Transmit/Receive Clock S 56 3. METODOLOGÍA 3.1 ENFOQUE DE LA INVESTIGACIÓN De acuerdo con los procedimientos que se desarrollaron durante la ejecución del proyecto, la investigación respectiva se enmarcó dentro del enfoque denominado: empírico – analítico. Como primera medida se consulto toda la información pertinente a módulos X-10, tanto a nivel comercial, como a nivel teórico, posteriormente se hizo pruebas para poder saber cuales eran los códigos que hacían funcionar los módulos. Se escogió al lenguaje de programación Java puesto que proporciona una forma mucho más ágil y fácil de hacer que se comuniquen los dos equipos a distancia vía TCP/IP. Como paso a seguir se realiza un programa para familiarizarse con el entorno de la domótica, ubicando el sistema en un ambiente grafico por programación. Como ultimo paso se diseño la plataforma de control a distancia con el método de invocación remota de programación Java, para obtener un sistema completo de control de un inmueble a distancia. 57 3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO TEMÁTICO DEL PROGRAMA -LÍNEA INSTITUCIONAL DE INVESTIGACIÓN Tecnologías actuales y sociedad -SUBLÍNEA DE INVESTIGACIÓN DE LA FACULTAD Instrumentación y control de procesos Conocimientos implicados Manejo y conocimiento de señales eléctricas y protocolos de comunicación. Dispositivos eléctricos, y elementos programables. - CAMPO DE INVESTIGACIÓN DEL NODO DE ELECTRÓNICA Control y comunicaciones La transmisión de datos y manejo de puertos vía internet es algo muy novedoso en el país, muy pocas personas tienen conocimiento de este tema así como también del lenguaje Java. La investigación y el manejo de los datos a enviar por los distintos protocolos se llevaron a cabo con pruebas tipo laboratorio. 3.3 TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN Para encontrar el grupo social al que se pretende atraer o enfocar el proyecto se realizo una investigación económica de los costos de implementar una vivienda 58 inteligente y así confirmar que es posible implementar un sistema domótico en las viviendas de Colombia para su economía y seguridad. Se tomo como base una investigación realizada por estudiantes de la universidad Pontificia Bolivariana de Medellín, quienes realizaron un estudio del mercado domótico en las ciudades colombianas de Bogotá, Medellín y Cartagena en los estratos 4, 5 y 6. Este contiene información en lo referente a la utilización actual, las preferencias de compra y capacidad de compra que las personas tienen hacia esta tecnología 5 . 3.4 HIPÓTESIS En este proyecto se logró implementar un sistema de economía y seguridad en un inmueble por medio de un software que es instalado en dos computadores, uno que es cliente y otro servidor para que por medio del método de invocación remota se prendan la luz de la sala, equipo de sonido al detectar un movimiento en la entrada principal de la vivienda o cuando deseemos apagar algún electrodoméstico que usualmente queda encendido por algún u otro motivo. 5 AMÓN, Iván CORREA, Carlos. Investigación del mercado domótico colombiano En: Título de la publicación. [en línea]. [consultado Mayo de 2007]. Disponible en: <http://convena.upb.edu.co/~domotica/documentacion/investigacionmercadodomoticocolom.pdf> 59 3.5 VARIABLES 3.5.1 Variables Independientes Son la necesidad de las personas de controlar sus domicilios desde larga distancia, porque independientemente de la distancia o el tipo de control que se desee hacer el proyecto se deberá implementar con sus requerimientos mínimos. 3.5.2 Variables Dependientes Los costos del proyecto. La necesidad especifica de cada quien. 60 4. PRESENTACIÓN Y ANÁLISIS DE LOS RESULTADOS Según las investigaciones que se han realizado acerca del mercado domótico para la implementación de dichos sistemas en inmuebles, el porcentaje de personas que lo poseen es bajo como lo muestra la tabla 4. Estos módulos no se venden en Colombia, deben ser importados y los costos varían dependiendo del país en el que se pretenden comprar, también a la hora de adquirirlos hay que tener en cuenta el marco normativo 6 . Solo las constructoras de tercera generación, como suelen llamarse, son las que hacen el estudio del mercado para hacer el diseño del hogar o edificio inteligente, a esto se le llama inmótica. Tabla 4. Interés de sistemas automáticos por estrato 6 Ibid., p34. 61 Interés de sistemas automáticos por estrato. [Documento en Internet]. Disponible en http://convena.upb.edu.co/~domotica/documentacion/investigacionmercadodomoticocolom.pdf. 156 p. La adquisición de un módulo en Colombia no es posible debido a que estos módulos los hacen en Europa, Estados Unidos y otras grandes potencias, allí son adaptados para los diferentes países. Este proyecto finalmente puede estar al alcance de todas las personas de estratos altos o medios y fácilmente el usuario podrá manejar su inmueble a larga distancia por medio del programa creado en Java. Finalmente este proyecto brinda una mayor seguridad al inmueble en el que se encuentre instalado, dando mayor confianza a los propietarios de que la residencia se encuentra fuera de peligro, porque este sistema les permite tener un control remoto de la vivienda, controlando la entrada de la casa o apartamento por medio de un sensor de movimiento y un dispositivo de encendido y apagado de electrodomésticos, siendo estos anteriores a los módulos X-10. 62 4.1 COMPARACIÓN DE LOS MÓDULOS Para la selección de los módulos que mas se ajustaban al proyecto se seleccionaron las siguentes caracteristicas basicas: Un modulo X-10 que permita conectar un 4.1.1 Modulo de lámpara X-10 modelo S110110 Figura 10. Modulo de lámpara X-10 modelo S110110 Este modulo de lámpara funciona con el protocolo X-10 pero se puede utilizar en un sistema europeo ya que trabaja a un voltaje de 230V y a una frecuencia de 50Hz, el tipo de conexión es diferente que el que se utiliza en Colombia y el precio es muy elevado a comparación del modulo que se escogió para este proyecto. 63 Tabla 5. Datos técnicos modulo S110110 Tensión alimentación 230 V/ 50 Hz Potencia 60 - 300 W (Solo lámparas incandescentes) Emisión EMC Cumple la norma EN 50081-1 Emisión EMS Cumple la norma EN 50082-1 Seguridad eléctrica Cumple la norma EN 60950 y EN 60065 Sensibilidad de señal 15 mVpp min 50 mVpp max a 120 kHz Impedancia de entrada 55 ohm (L-N) a 120 Khz Rango de temperatura -10ºC a 50ºC Dimensiones 52 x 122 x 33 mm Peso 340 gr. Precio $72000 4.1.2 Modulo de lámpara con cable X-10 modelo S110112 Figura 11. Modulo de lámpara X-10 modelo S110112 Las características de operación de este modulo son muy similares a las del modelo S110110 a diferencia de que este modulo posee un cable en el que se puede acoplar directamente la lámpara sin importar el conector, pero por la frecuencia y el precio fue rechazado para el proyecto. 64 Tabla 6. Datos técnicos modulo S110112 Tensión alimentación 230 V/ 50 Hz Potencia 60 - 300 W (Solo lámparas incandescentes) Emisión EMC Cumple la norma EN 50081-1 Emisión EMS Cumple la norma EN 50082-1 Seguridad eléctrica Cumple la norma EN 60950 y EN 60065 Sensibilidad de señal 15 mVpp min 50 mVpp max a 120 kHz Impedancia de entrada 55 ohm (L-N) a 120 Khz Rango de temperatura -10ºC a 50ºC Dimensiones 52 x 65 x 33 mm Peso 340 gr. Precio $75000 4.1.3 Modulo de lámpara stanley modelo Lightmaker 370-2474 Figura 12. Modulo de lámpara stanley El modulo stanley se adapta a las normas de este país ya que trabaja a 120 voltios y 60Hz, su precio no es muy elevado pero tiene una potencia máxima de 150 vatios que no es muy alta para las necesidades del proyecto y por esta razón fue rechazado. 65 Tabla 7. Datos técnicos modulo stanley Tensión alimentación 120 V/ 60 Hz Potencia 10 - 100 W Seguridad eléctrica Cumple la norma FCC 115 Sensibilidad de señal 12 mVpp min 60 mVpp max a 120 kHz Impedancia de entrada 65 ohm (L-N) a 120 Khz Rango de temperatura -10ºC a 70ºC Dimensiones 50 x 60 x 25 mm Peso 300 gr. Precio $40000 4.1.4 Modulo receptor radio frecuencia X-10 modelo S110128 Figura 13. Modulo receptor de radio frecuencia Este modelo de transceiver es muy económico para las características que posee, pero por ser de normas europeas no fue implementado en el proyecto. 66 Tabla 8. Datos técnicos modulo receptor de radiofrecuencia Tensión alimentación 230 V/ 50 Hz Corriente alimentación < 20mA Potencia 500 W Lamp. Incandescentes (1A motor) 10 A (resistencias) Emisión EMC Cumple la norma EN 50081-1 Emisión EMS Cumple la norma EN 50082-1 Seguridad eléctrica Cumple la norma EN 60950 y EN 60065 Frecuencia de RF 433.92 Mhz. Sensibilidad de señal 15 mVpp min 50 mVpp max a 120 kHz Impedancia de entrada 180 ohm (L-N) a 120 Khz Rango de temperatura -10ºC a 50ºC Peso 200 grs. Dimensiones 65 x 160 x 33 mm Precio $60000 4.1.5 Modulo receptor radiofrecuencia RF X-10 modelo PAT01 Figura 14. Modulo receptor de radio frecuencia PAT01 El modulo PAT01 puede ser implementado en este país por sus características técnicas pero si se observa en la tabla las características se puede observar que es muy robusto para el uso en este proyecto, además su alto precio se sale del presupuesto que se tenia proyectado. 67 Tabla 9. Datos técnicos modulo receptor de radiofrecuencia PAT01 Tensión alimentación 120 V/ 60 Hz Corriente alimentación < 80mA Potencia 800 W Lamp. Incandescentes (2A motor) 20 A (resistencias) Seguridad eléctrica Cumple la norma FCC 115 Frecuencia de RF 300.1 Mhz. Sensibilidad de señal 12 mVpp min 60 mVpp max a 120 kHz Impedancia de entrada 150 ohm (L-N) a 120 Khz Rango de temperatura -10ºC a 60ºC Peso 170 grs. Dimensiones 50 x 145 x 25 mm Precio $85000 4.1.6 Modulo receptor de empotrar modelo PAO11 Figura 15. Modulo receptor de empotrar El modulo PAO11 es una alternativa para los proyectos que sean fijos, ya que una vez empotrado en la pared, es muy complicado su traslado puesto que se puede averiar, no fue escogido para este proyecto ya que lo que se busca es la flexibilidad y este modulo no la brinda. 68 Tabla 10. Datos técnicos modulo receptor de empotrar Tensión alimentación 220 V/ 60 Hz Potencia 300 W Lamp. Incandescentes 15 A (resistencias) Seguridad eléctrica Cumple la norma FCC 115 Frecuencia de RF 350 Mhz. Impedancia de entrada 300 ohm (L-N) a 120 Khz Rango de temperatura 0ºC a 60ºC Peso 150 grs. Dimensiones 50 x 160 x 40 mm Precio $40000 4.1.7 Sensor inalámbrico para puertas/ventanas X-10 modelo PDS01 Figura 16. Sensor inalámbrico PDS01 Este detector se especializa en la apertura de puertas y ventanas, es un poco sedentario ya que hay que hay que fijarlo y esa no es la intención del proyecto, lo que se quiere es una detección de movimiento general y no algo tan especifico como una puerta o ventana. 69 Tabla 11. Datos técnicos sensor inalámbrico PDS01 Modo de funcionamiento Por Radio Frecuencia. Frecuencia de RF 500 Mhz. Pilas Alcalinas 2 x 1,5 V. AAA Rango de acción 15 m. Salida de radio 1mW Temperatura de funcionamiento -5ºC a 60ºC Normativa UL Peso 250 grs. Dimensiones 6 x 8,5 x 3,5 cm Precio $60000 4.1.8 Sensor de movimiento PR511 Figura 17. Sensor de movimiento PR511 El modelo PR511 es un sensor de movimiento que funciona independiente a un transceiver, cuando detecta movimiento enciende las luces incorporadas y en el proyecto lo que se quiere es encender un equipo de sonido para alertar a los intrusos de que hay alguien dentro del recinto, por esta razón no fue seleccionado para el proyecto. 70 Tabla 12. Datos técnicos sensor de movimiento PR511 Modo de funcionamiento Por Radio Frecuencia. Frecuencia de RF 900 Mhz. Alimentación 120v AC Rango de acción 10 m. Potencia lámparas 150W Temperatura de funcionamiento -15ºC a 70ºC Normativa CE UL Peso 2000 grs. Dimensiones 24 x 48 x 12 cm Precio $120000 4.1.9 Interfaz bidireccional PSC05 Figura 18. Interfaz bidireccional PSC05 Esta interfaz de módulos X-10 tiene un precio muy económico y se ajusta a las normativas colombianas, pero posee una gran desventaja que es el manejo manual ya que no es posible conectarla por ningún medio al computador, así que fue descartada. 71 4.2 SELECCIÓN Y DESCRIPCIÓN DE LOS MÓDULOS X-10 Por medio del Internet se analizaron las características principales de los diferentes tipos de módulos como son las corrientes máximas que pueden llegar a soportar, la potencia y el voltaje que debe estar acorde a la normatividad Colombiana, también el costo de los módulos es algo muy importante en este proyecto ya que lo que se quiere es que este al alcance de todos, en el mercado domótico se tienen varios proveedores pero el que realmente cumple todas las exigencias es ACTIVEHOME, una vez hecha esta selección, se escogen 2 módulos que trabajan en base al protocolo X-10, cada módulo maneja la frecuencia de 60 Hz para Colombia y sus respectivos 120 V para la conexión con las líneas alternas domesticas. 4.2.1 Interfaz CM11A-C Este módulo es la interfaz de comunicaciones que interconecta al PC con los demás módulos y las líneas de corriente alterna del inmueble, tiene varias conexiones, como son: la clavija de entrada a la cual podemos conectar cualquier elemento ya que funciona como una toma adicional y así no perder el uso del enchufe que se esta utilizando, también posee un compartimiento para las baterías las cuales tienen la función de que el módulo no pierda el contador de horas de uso, la fecha y la hora para la programación automática de los módulos y por ultimo tiene la conexión RJ-9 para el cable que lo interconecta con el puerto serial del PC, este cable en un extremo tiene plug RJ-9 y en el otro el macho del RS232. Ver Anexo 3. 72 Figura 19. Home Automation Interfaz, CM11A-C. 4.2.2 Módulo LM465 Módulo que tiene como uso exclusivo las lámparas incandescentes, este elemento cuenta con una clavija en la que se debe conectar la lámpara que se quiere controlar, además de tener dos selectores los cuales tiene funciones especificas, el selector numérico (negro) varia de 1 a 16 y es el que asigna el numero de identificación propio, el selector alfabético (rojo) varia de la letra A a la letra P y es el que identifica al inmueble y lo diferencia de los demás que puedan estar usando el protocolo X-10, este código lo deben tener en la misma posición todos los módulos del inmueble para que puedan ser controlados por la interfaz CM11A-C ya que esta, está programada únicamente para enviar los datos a un mismo grupo de módulos que tengan la misma letra seleccionada. Ver Anexo 3. 73 Figura 20. Lamp Module, LM465. 4.2.3 Mini Transceiver TM751-C Dispositivo que funciona con RF 7 y en compañía de otro dispositivo que es un sensor de movimiento a baterías, inicialmente al conectarse el mini transceiver, se debe ajustar el código asignando una letra que va desde la A a la P la cual diferencia el inmueble de los demás y se le debe conectar en la clavija incorporada el aparato que se desee controlar, en este caso un equipo de sonido y una lámpara, también se puede cualquier aparato que no supere los 400 watts de potencia. Ver Anexo 3. 7 Radio Frecuencia disponible en: http://es.wikipedia.org/wiki/Radiofrecuencia [16 Septiembre, 2007 2:15pm] 74 Figura 21. Preparación del Mini-transceiver, TM751-C. El sensor se coloca en la entrada principal del inmueble y le envía una señal de RF 8 al Transceiver la cual indica que se ha detectado la presencia de alguien, inmediatamente la señal es recibida, el módulo activa el voltaje en la clavija y de esta manera se encenderá el equipo y la lámpara para indicarle al individuo que hay alguien dentro del inmueble, una vez se haya alejado el individuo el módulo cortara la conducción de voltaje y los elementos que fueron encendidos se apagarán. 8 Ibid., p74. 75 Figura 22. Mini-transceiver TM751-C. 4.2.4 Sensor de movimiento MS14A-C Este pequeño elemento funciona en compañía con el mini transceiver TM751-C, posee un pequeño compartimiento que almacena dos baterías tipo AAA que tienen la función de alimentarlo, una vez es conectado y encendido se debe colocar en el sitio sobre el cual se quiere tener control adicional de seguridad, desde ese momento el sensor enviara señales de RF 9 al transceiver cada vez que detecte la presencia de movimiento. Ver Anexo 3. Figura 23. Eagle Eye Motion Detector MS14A-C. 9 Ibid., p74. 76 4.3 COSTOS Y MATRIZ COMPARATIVA Tabla 13. Presupuesto y costo final de los módulos implementados. MODULO PRESUPUESTO COSTO FINAL Lampara $ 50.000,00 $ 40.000,00 Transceiver $ 60.000,00 $ 55.000,00 RF $ 60.000,00 $ 40.000,00 Interfaz $ 150.000,00 $ 120.000,00 TOTAL $ 320.000,00 $ 255.000,00 Se puede observar que el proyecto se ajustó al presupuesto que se tenía. 77 Tabla 14. Comparación de las variables de los módulos y precio. MODULO VAC VDC F(Hz) P(W) 50 60/300 S110110 230 APLICACION PRECIO($) Lamparas incandescentes 72.000,00 x /x S110112 230 - 50 6/300 Lamparas incandescentes 75.000,00 x Stanley 3702474 120 - 60 11/100 Lamparas incandescentes 40.000,00 x S110128 PAT01 PAO11 230 - 50 0/500 Motores/Resistencias 60.000,00 120 - 60 0/800 Motores/Resistencias 85.000,00 220 - 60 0/300 40.000,00 PDS01 PR511 - 3 - 120 - - Lamparas incandescentes, Resistencias /Motores RF x x x PSC05 120 LM465 120 3 - 60 60 TM751-C 120 MS14A-C CM11AC 120 0/150 10 300 500 60 Lamparas incandescentes/RF Control de modulos Lamparas incandescentes Lamparas incandescentes, Resistencias /Motores 60.000,00 120.000,00 x x 80.000,00 x 40.000,00 55.000,00 3 - - RF 40.000,00 - 60 6 Control de modulos 120.000,00 78 5. DISEÑO INGENIERIL Para que este proyecto cumpla con todos los objetivos propuestos durante el desarrollo de esta aplicación la cual se basa en transmitir y recibir códigos hexadecimales por medio de una aplicación Web, programada en Java que controla por acceso remoto los módulos X-10 se deben tener en cuenta los parámetros y explicaciones. 5.1 CONEXIÓN DE LOS MÓDULOS X-10 Como primera medida, se debe saber como van las líneas en el inmueble puesto que los módulos deben ir conectados sobre la misma línea alimentadora de voltaje, se conecta la interfaz CM11A-C al computador, asegurándose de que la frecuencia sea 60Hz, el voltaje 120V y el dispositivo que se tenga conectado a él maneje menos de 6 watts de potencia, para evitar sobrecargas. Como segunda medida conectar TM751 y tener en cuenta que el electrodoméstico que se conectará en la parte inferior de él, no sobrepase una corriente de carga de 15 A, un motor de potencia de 1/3 HP 10 o un Televisor de 500W, ya que estos son sus valores nominales, este funciona además con un detector de movimiento el cual es el módulo MS14A-C. 10 Caballo de Fuerza por sus siglas en ingles (HP) Horse Power disponible en: http://www.todomotores.cl/mecanica/potencia.htm [18 Septiembre, 2007 12:51pm] 79 Cuando el MS14A-C detecta movimiento en la entrada de la puerta principal, este emite una señal de RF 11 hacia el TM751 el cual se activará inmediatamente y se encenderá el elemento que se tenga conectado en su clavija 12 . Se conectan con las líneas alternas de la vivienda, esto quiere decir a la toma eléctrica ubicada en la pared, se debe tener en cuenta que todos los módulos deben tener en el selector la misma letra para que la interfaz de control los pueda identificar en un mismo grupo y no hayan problemas de comunicación entre ellos, finalmente la interfaz de control se debe conectar a la toma y al puerto serie del computador. Figura 24. Instalación de la interfaz. 11 12 Ibid., p74. Ver, Figura 21, p75. 80 Figura 25. Módulos funcionando. 5.2 SONDEO DE LOS CÓDIGOS Se realizo un análisis para detectar que tipo de datos se envían entre el PC y la interfaz, se fabricó un cable cruzado que interconectó a dos computadores y la interfaz CM11A-C por el puerto serie de ambos equipos, su funcionamiento se basó en que cuando uno de los equipos le envió información a la interfaz de control por el pin de transmisión del puerto, el otro equipo estaba leyendo 81 simultáneamente con el software Hex Com tool 13 , para conocer los códigos que se estaban enviando fue necesario hacer muchas pruebas, ya que los 2 puertos deberían tener la misma configuración para que el dato que se leyera fuera correcto y así de esta manera tener la seguridad que el código era verídico y funcionara. Figura 26. Cable cruzado PC-PC. El cable que se diseñó tiene dos salidas y una entrada. 13 Ibid., p46. 82 Figura 27. Terminales del cable cruzado PC-PC. En la entrada se conecta el PC que esta transmitiendo los datos, en este caso los códigos hexadecimales, en una de las salidas se conecta la interfaz de los módulos y en la otra el PC que va a leer los datos que se envían al módulo, eso es una “Y” en donde los datos viajan paralelamente por los 2 caminos, adicionalmente el cable tiene un conector que lo hace funcionar en forma inversa por si se desean enviar datos del PC receptor al transmisor sin tener que desconectar el cable de los equipos. 83 Figura 28. Extensor del conector serial. Se soldan los pines del conector serial, para la entrada del conector que va al computador, a continuación se muestran los únicos pines que se conectan para poder enviar datos del PC a la interfaz de control. Tabla 15. Pines usados en la entrada del cable serial. Pin Señal Descripción E/S 2 RxD Recepción de datos E 3 TxD Transmisión de datos S 5 SG Señal de tierra - 9 RI Indicador de tono E 84 Para los pines de las salidas se realizó una serie de conexiones para que una salida fuera bidireccional y la otra receptora. Tabla 16. Pines usados en salida 1 y 2 del cable serial. Pin Señal Descripción E/S 2 RxD Recepción de datos E 6 DSR Data Set Ready E 9 RI Indicador de tono E 5.3 CÓDIGOS HEXADECIMALES PARA OPERAR LOS MÓDULOS X-10 Al configurar el numero de la casa y la letra para el proyecto, se prefirió dejar la letra A y el numero 1. Con esto se comenzó a hacer las pruebas de detección de los códigos, cada módulo por aparte, por medio de la interfaz CM11A-C y el computador. Utilizando un programa que permitió ver la recepción de los datos hexadecimales y así poder saber que datos era los que llegaban y a que velocidad de bitio viajaban. Efectivamente se llegó a la conclusión después de muchas pruebas de transmisión que los datos llegan al módulo que va a hacer la aplicación de forma lenta. Cuando se configura el software RS232 en tasa de transferencia 4800 bps, paridad en 1, bitio de datos: 8 y bitio por parada 1 los datos lograron encender y apagar los dispositivos. Por esta razón se realizó una tabla con lo que se logro hacer con los diferentes datos hexadecimales que se enviaron 14 . 14 Ver, Figura 6, p46. 85 Tabla 17. Funciones por cada Dato hexadecimal. Valor binario Valor hex 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F Función Todas las unidades apagado Todas las luces encendido Encendido Apagado Débil Brillante Todas las luces apagado Código extendido Petición del granizo El granizo reconoce Preestablecen débil (1) Preestablecen débil (2) Transferencia de datos extendida Estado encendido Estado apagado Petición del estado El proyecto funciona con el código de vivienda A1, porque así fue la configuración que se le asigno al módulo LM465 por consiguiente el dato respectivo para el llamado el prendido y apagado es el primero de la fila. Este prende y apaga la luz de la sala y esta corresponde a una lámpara. 86 Tabla 18. Dirección y funciones del código para cada módulo. A A A A A A A A A A A A A A A A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Dirección 046600000000 046E00000000 046200000000 046A00000000 046100000000 046900000000 046500000000 046D00000000 046700000000 046F00000000 046300000000 046B00000000 046000000000 046800000000 046400000000 046C00000000 Encender 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 066200000000 Apagar 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 066300000000 Si se hubiese escogido cualquier otra letra con un diferente número, la función para hacer la orden cambiaría y la dirección seria necesario cambiarla, por este motivo se saca una tabla para ver las direcciones de llamado del módulo LM465. 87 Tabla 19. Diferente dirección para cada código de casa A B C D E F G H I J K L M N O P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 E 2 A 1 9 5 D 7 F 3 B 0 8 4 C 046600000000 046E00000000 046200000000 046A00000000 046100000000 046900000000 046500000000 046D00000000 046700000000 046F00000000 046300000000 046B00000000 046000000000 046800000000 046400000000 046C00000000 5.4 SOFTWARE RS232 HEX COMM TOOL Este programa se usó para realizar el sondeo de los códigos, ya que muestra que datos se transmiten hacia el módulo, esto quiere decir que permite ver por medio de otro computador en forma receptora que código se envía. Este software se instaló en dos equipos de trabajo diferentes conectados en red, uno se puso en modo escritura y el otro en modo lectura del puerto serial, dejando al descubierto el código hexadecimal. 88 Figura 29. Transmisión por el software RS232 Hex Comm Tool 5.5 DESARROLLO DEL SOFTWARE El software que se creo, fue basado en el modelo cliente servidor utilizando la forma RMI, siendo esta la más flexible y la que mejor se adapto a las necesidades del proyecto. 89 5.5.1 Diagrama de flujo programa cliente Inicio Seleccione Módulo Módulo lámpara LM465 Mini Transceiver TM751 Busque dirección IP del servidor No Módulo responde Si Active interfaz Tx/Rx Inicio Programa servidor Primero se debe instalar el programa cliente en el equipo desde donde se quiere controlar el inmueble, una vez hecho esto se debe ejecutar y aparecerá una ventana que tiene dos botones los cuales indican el módulo que se desea activar, 90 allí el usuario selecciona alguno e inmediatamente se activa una parte del software llamada interfaz la cual se encarga de hacer la comunicación entre el cliente y el servidor, luego se envía el código de dirección del módulo seleccionado para que este responda el llamado y espere el código de activación, después de obtener respuesta del módulo el programa envía el código de activación y a su vez se activará el elemento que se tiene conectado al módulo en cuestión, luego el programa vuelve a modo de espera o se puede cerrar si el usuario así lo desea. 91 5.5.2 Diagrama de flujo programa servidor Inicio Seleccione Módulo Módulo lámpara LM465 Mini Transceiver TM751 Envíe código de dirección Envíe código de dirección Módulo responde Módulo responde No No Detector de movimiento Estado de encendido No Si Si Si Envíe señal al transceiver Seleccione estado Encendido Módulo responde Apagado Si Envíe código de encendido Detección movimiento Envíe código de apagado Act / Desact transceiver 92 No Este diagrama muestra en su inicio, la selección del módulo la cual se lleva a cabo gracias a los datos que llegan por la interfaz de transmisión, lo primero que recibe y envía por el puerto son los códigos de dirección del módulo que haya escogido el usuario, luego llega a la condición en la cual si el módulo responde, se envía los códigos de activación para que se pueda activar el equipo que se tenga conectado en el módulo, luego volverá al inicio a la espera de una nueva orden, en la parte del transceiver se debe tener en cuenta la condición de que así el transceiver este listo, este no activara el equipo de audio hasta que no reciba la señal que le envía el detector de movimiento. 5.5.3 Diseño y funcionamiento del programa La parte del programa cliente se ejecuta desde cualquier equipo de trabajo, este debe tener acceso a Internet para poder realizar la invocación remota por medio de RMI y así enviar los códigos hexadecimales hacia el programa servidor. Esta comunicación se hace por medio de un archivo de Java que se crea llamado interfaz. El programa servidor se debe instalar en el equipo que se encuentra en el inmueble, este se debe dejar en modo de espera para que reciba los datos en forma hexadecimal que le envía la interfaz desde el programa cliente, para enviarlos a la interfaz CM11A y esta a su vez activar o desactivar los módulos que está controlando. 93 Figura 30. Vista principal entorno del programa. 5.5.4 Descripción del programa cliente En la línea de código de esta parte del software, lo primero que se debe hacer es colocar las librerías que se van a utilizar a lo largo del programa así como las clases que definen como son los objetos que se van a incluir, indicando sus atributos y sus acciones, también en esta sección se definen los colores, los tamaños de letra y en general la apariencia que va a tener la ventana del programa. 94 Figura 31. Inicio línea de código Otra sección importante del software es el constructor que define la apariencia que van a tener los botones en el software. Figura 32. Configuración de los botones y la imagen. 95 Finalmente se muestra la configuración de los botones con sus respectivos códigos de identificación y activación, los cuales son enviados a través del puerto serial para que cumplan con la función de encender y apagar el módulo seleccionado, también se puede observar que en esta sección de la línea de código existe una dirección IP, que corresponde a la dirección IP del servidor ya que esa es la que busca el programa y es hacia donde enviará los datos únicamente. Figura 33. Códigos en Hexadecimal. 5.5.5 Descripción del programa servidor Igual que en la otra parte del software lo primero que se debe hacer, es introducir las librerías que se van a utilizar a lo largo del programa, luego de eso el programa espera a que le lleguen los datos provenientes de Internet para poder enviárselos a la interfaz y esta a su vez controlar los módulos. 96 Figura 34. Inicio programa servidor. Como se menciona en este proyecto, el software que se desarrolló es multiplataforma o sea que se puede ejecutar en diferentes sistemas operativos, en la línea de código se deben colocar los sistemas operativos en los que se quiere que funcione el software, además del nombre del puerto serie en dicho sistema operativo para que al momento de ser ejecutado no haya ningún inconveniente. 97 Figura 35. Sistemas operativos soportados. Una parte muy importante en esta sección es la configuración del puerto serie puesto que allí radica que los datos que vienen de Internet, lleguen de forma correcta a la interfaz que controla los módulos, en este caso la velocidad del puerto se dejo en 4800 bps, los bitios de datos en 8, con un bitio de parada y finalmente sin paridad en el puerto. 98 Figura 36. Configuración del puerto. 5.5.6 Requisitos para ejecutar el software Se debe tener como mínimo, un computador en el cual se instalará el programa servidor con un procesador Pentium III de 800Mhz, 256M de memoria RAM, Unidad de CD-ROM, tarjeta de red de 100M, conexión a Internet al menos de 300 kbps, puerto serie RS232 y plataforma Windows xp, Linux o MAC OS. 99 5.5.7 Características del software Dinámico: Puesto que si no se pudiera ejecutar el programa en el PC a distancia, se podría abrir como pagina Web. Flexible: Su manejo es muy sencillo porque proporciona una interfaz fácil de manejar por el usuario final. Eficiente: Envía los códigos para poder operar los módulos a distancia. Multiplataforma: Se puede ejecutar en cualquier equipo, ya que esta diseñado para que funcione en un entorno Windows, MAC OS o Linux. 5.6 ENCENDIDO DEL PC EN FORMA AUTOMÁTICA La manera de encender el PC a una determinada hora de forma automática se puede lograr con Windows XP, con la herramienta de tareas programadas. La herramienta ''Tareas programadas'' de Windows puede crear una tarea para despertar el equipo, pero sólo si este se encuentra en un estado de ''Hibernación'' o inactividad. No funciona si el equipo se encuentra apagado. 100 Figura 37. Hibernación en Windows XP. Cuando se coloca el PC en modo ''Hibernación'', el sistema ahorra la misma cantidad de energía que cuando se encuentra apagado. Lo que sucede es que Windows guarda una imagen del escritorio con todos los archivos y documentos abiertos y desconecta la alimentación del equipo. Al volver la alimentación, los archivos y documentos se restauran en la misma ubicación y estado en el que se encontraban. 101 6. CONCLUSIONES Se implemento el novedoso y flexible lenguaje Java de Sun Microsystems que es el mas apropiado para crear aplicaciones Web, El modelo Cliente – Servidor utilizando el método de invocación remota es la forma mas apropiada para desarrollar el proyecto, ya que cumple con la eficacia y flexibilidad que se requiere. Las herramientas que brinda el software libre permiten llevar a cabo un desarrollo de software sin generar gastos de licencias propietarias y sin sacrificar calidad y/o eficacia. En nuestro país las nuevas tecnologías no son muy comunes así que fue necesaria la importación directa de los módulos X-10 para la transmisión de datos por las líneas de corriente alterna. 102 7. RECOMENDACIONES Puesto que el modulo CM11A se viene comercializando con una interfaz USB (Universal Serial Bus), se debe pensar en actualizar la aplicación para que utilice un controlador de ese puerto y no del serial como lo hace actualmente, eso le daría una oportunidad de ser mucho más comercial y de ejecutarse en aquellos sistemas que ya carecen de este puerto. Se podría pensar en darle más aplicabilidades al sistema como una plataforma WAP para el control por medio de dispositivos móviles celulares. Los módulos que se utilizaron en el proyecto se adaptan a la pared de la vivienda en la que se instalen por facilidad de instalación. Para nuevos diseños de casas con funciones X-10, debe tenerse en cuenta la utilización de módulos internos que sean adaptados directamente en las paredes y permitir que la funcionalidad el sistema sea transparente al usuario. 103 BIBLIOGRAFÍA BÁSICA Alonso, José Miguel. Protocolos de comunicaciones para sistemas abiertos, Editorial: Adisson Wesley Iberoamerica, Wilmington (USA), 1996. 362 p. Black, Uyless D. Redes de computadoras: Protocolos, normas e Interfaces, Editorial: Macrobit, México, 1990. 296 p. INSTITUTO COLOMBIANO DE NORMAS TÉCNICAS. Compendio – Tesis y otros trabajos de grado. Quinta actualización. Bogota D.C.: ICONTEC, 2002. 34p. NTC 1486. Jiménez, Carlos. Oficinas, Editorial: Ceac, Barcelona (España), 1997. 102 p. Moreno Gil, José. Instalaciones automatizadas en viviendas y edificios, Editorial: Paraninfo, Madrid (España), 1998. 200 p. NEIL, Ford. Art of Java Web Development. Greenwich C.T. Manning publications, 2004. 627 p. Quintero Gonzáles, José Maria. Sistemas de control para viviendas y edificios: Domótica, Editorial: Paraninfo, Madrid (España), 1999. 153 p. 104 SUN, Microsystems. Java Studio Creator Field Guide. Silicon Valley, Second Edition, 2005. 680 p. SUN, Microsystems. Java 2 Study Guide. Silicon Valley, 2006. 530 p. 105 BIBLIOGRAFÍA COMPLEMENTARIA FEDERAL COMUNICATIONS COMISSION (FCC) http://www.fcc.gov/ VISITADO EN 18/09/2007. JAVA TIPS http://www.java-tips.org VISITADO EN 21/09/2007. LARTEC, http://www.lartec.es/, VISITADO EN 02/03/2006. SUN MICROSYSTEMS http://java.sun.com/ VISITADO EN 21/09/2007. SÚPER INVENTOS, http://www.superinventos.com/domotica.htm, VISITADO EN 02/03/2006. UNDERWRITERS LABORATORIES (UL) http://www.ul.com/ VISITADO EN 18/09/2007. UNIVERSIDAD PONTIFICIA BOLIVARIANA http://convena.upb.edu.co/~domotica/ VISITADO EN 16/08/2007. X10 HOME SOLUTIONS, http://www.x10.com/home.html, 02/03/2006. 106 VISITADO EN ANEXOS ANEXO A: FEDERAL COMMUNICATIONS COMMISSION (FCC) FEDERAL COMMUNICATIONS COMMISSION WASHINGTON, D.C. 20554 GRANT OF EQUIPMENT AUTHORIZATION X 10 (USA) Inc 620 Naches Ave SW, Building A Renton, WA 98057 United Status Date of Grant: 03/19/1996 Application Dated: 02/13/1996 Attention: Dave Rye , Vice President / Technical Manager. NOT TRANSFERABLE: EQUIPMENT AUTHORIZATION is hereby issued to the named GRANTEE, and is VALID ONLY for the equipment identified hereon for use under the Commission's Rules and Regulations listed below. 107 FCC IDENTIFIER: B4SCM10A Name of Grantee: X 10 (USA) Inc Equipment Class: Part 15 Class B Computing Device Peripheral Notes: Home Controller Serial Interface Grant Notes 16 37 FCC Rule Parts 15B If the subject device requires shielded interface cables to ensure compliance, the user's manual must advise the user of this requirement. This device has shown compliance with new rules adopted under Docket 87-389 and is not affected by Section 15.37, transition rule. • ELECTROMAGNETIC COMPATIBILITY (EMC) The body responsible for regulation of EMC emissions in the USA is the Federal Communications Commission (FCC). The specific regulations are Part 15 (Radio Frequency Devices) and Part 18 (Industrial, Scientific and Medical Equipment). All equipment liable to cause radio frequency interference is subject to the requirements of the FCC. Part 15 covers devices, including digital devices, which use radio-frequency energy 108 and may be intentional or unintentional radiators. Certain devices are exempted, including: • Digital devices used exclusively as industrial, commercial or medical test equipment. • Digital devices used exclusively in an appliance, e.g. dishwasher, air conditioner, etc. • Digital devices having a power consumption not exceeding 6 Nw. Operation of an exempt device may be stopped by the FCC if the device is found to cause harmful interference. Operation may be resumed only after the condition causing the interference has been corrected. Testing to Part 15 can be either to the limits given in the text of the regulations, or according to CISPR 22, with the following points applying: • The limits CISPR 22 must be used in their entirety. You cannot mix results using CISPR 22 and Part 15. • Additional testing above 1GHz must be carried out for equipment with clock frequencies above 108MHz. • The test procedures must be those specified in Part 15 and ANSI C63.4, not those in CISPR 22 • Testing must be carried out using the same mains power supply as used in the USA, i.e. 120V, 60Hz. 109 Subpart C of Part 15 covers intentional radiators and gives details of permitted frequency ranges and field strengths. Part 18 covers industrial, scientific and medical equipment which emits radio frequency energy. Medical diathermy and ultrasonic equipment is also included. Testing is required for conducted and radiated emissions. Note that other US authorities may have additional EMC requirements, e.g. medical equipment may require immunity testing for FDA requirements. Testing to Part 18 is to the limits given in the text of the regulations. • TELECOM TERMINAL EQUIPMENT Part 68 of the FCC rules (47 C.F.R. Part 68) governs the direct connection of Terminal Equipment (TE) to the Public Switched Telephone Network (PSTN), and to wireline carrier-owned facilities used to provide private line services. Part 68 also contains rules concerning Hearing Aid Compatibility and Volume Control (HAC/VC) for telephones, dialing frequency for automated dialing machines, source identification for fax transmissions, and technical criteria for inside wiring. Many technical and administrative functions mandated by Part 68 have been privatized. In December 1998, the Federal Communications Commission (FCC) adopted new rules to streamline its equipment authorization requirements by allowing Telecommunications Certification Bodies (TCBs) to certify equipment under Parts 2 110 and 68 of the Commission's Rules. The requirements for TCBs were specified in the Commission's Report and Order (R&O) in GEN Docket 98-68 (FCC 98-338), adopted on December 17, 1998. Under the Report and Order, TCBs are required to be accredited by the National Institute of Standards and Technology (NIST), or by a NIST recognized accreditor. The American National Standards Institute (ANSI) applied to NIST for recognition as an accreditor of TCBs. NIST has evaluated ANSI's technical competency to carry out this accreditation function through onsite assessment and witness audits. However, the FCC retains the responsibility to enforce Part 68 rules. RADIO EQUIPMENT FCC Regulations for radio equipment are listed as below: FCC Part 11 – Emergency Alert System FCC Part 15 - Radio frequency devices FCC Part 24 – Personal Communication Device FCC Part 20 – Commercial Mobile Radio Services FCC Part 21 – Domestic Public Fixed Radio Service FCC Part 22 – Public mobile services FCC Part 23 – International Fixed Public Radiocommunication Service FCC Part 25 – Satellite Communications FCC Part 26 – General Wireless Communications Service FCC Part 27 –Wireless Communications Service FCC Part 90 – Private Land Mobile Radio Services FCC Part 95 – Personal Radio Services FCC Part 100 – Direct Broadcast Satellite Service FCC Part 101 – Fixed Microwave Services 111 ROUTES TO FCC COMPLIANCE 1. Declaration of Conformity Class B personal computers and their peripherals, and consumer ISM equipment (e.g. microwave ovens) are authorized by the Declaration of Conformity procedure or the Certification procedure. The manufacturer must • Get the product tested at a laboratory which has been accredited by A2LA or NAVLAP for EMC testing. • Prepare a technical file • Mark the product and place the requirement FCC notices in the user manual • Prepare and sign a Declaration of Conformity 2. Certification Certification is an alternative route for those products requiring a Declaration of Conformity. Certain other products (e.g. scanning receiver, intentional radiators) always require certification. The manufacturer must: • Get the product tested at a laboratory which has been listed by the FCC • Submit the test report, together with a proposed FCC ID Number to the FCC • If approval is granted, mark the product with the FCC ID number and compliance statement, and place the required FCC notices in the user manual. 112 3. Verification For products for which Certification or Declaration of Conformity are not required, verification is the necessary procedure. The manufacturer must: • Get the product tested • Retain the verification records for possible review by the FCC • Mark the product with a compliance statement, and place the required FCC notices in the user manual. MARKINGS AND DOCUMENTATION Part 15. For a Class A digital device or peripheral, the user instructions shall include the following or similar statement, placed in a prominent location in the text of the manual: Note: This equipment has been tested and found to comply with the limits for a Class A digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference when the equipment is operated in a commercial environment. This equipment generates, uses, and can radiate radio frequency energy and, if not installed and used in accordance with the instruction manual, may cause harmful interference to radio communications. Operation of this equipment in a residential area is likely to cause harmful interference in which case the user will be required to correct the interference at his own expense. Modifications not expressly approved by the manufacturer could void the user's authority to operate the equipment under FCC rules. 113 For a Class B digital device or peripheral, the user instructions shall include the following or similar statement, placed in a prominent location in the text of the manual. Note: This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures: • Reorient or relocate the receiving antenna. • Increase the separation between the equipment and receiver. • Connect the equipment into an outlet on a circuit different from that to which the receiver is connected. • Consult the dealer or an experienced radio/TV technician for help. Modifications not expressly approved by the manufacturer could void the user's authority to operate the equipment under FCC rules. All other devices shall bear the following statement in a conspicuous location on the device: This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: 114 This device may not cause harmful interference, and This device must accept any interference received, including interference that may cause undesired operation. Products which has been approved by the Certification process, must also have a label showing the FCC ID number. The label must contain this information in the form: FCC ID: XXXYYYYYYY where XXX is the manufacturer's FCC grantee code and YYYYYYY is the equipment code, consisting of between 1 and 14 characters and may be a combination of capital letter, numbers and may include a dash (-). Products which have been approved by the Declaration of Conformity procedure must display a label similar to the example given here. In addition a declaration of the type shown below must be prepared, signed and kept with the product technical file. 115 SIEMIC provides compliance testing, certification and consultancy on FCC Compliance. To get an Estimate from SIEMIC, download SIEMIC International Approvals Questionnaires Form, complete the form with a list of products. ANEXO B: UNDERWRITERS LABORATORIES (UL) Los productos están divididos en cinco categorías diferentes: 1. Línea Blanca Grande Aparatos eléctricos destinados principalmente al uso doméstico / residencial y que no son portátiles, incluyendo: • Calefactores; montados en el piso, pared o techo • Aparatos para cocina • Congeladores y refrigeradores • Lavadoras • Aire acondicionado y accesorios • Humidificadores y deshumidificadores • Dispositivos de bombeo de agua operados por motor 2. Línea Blanca Pequeña Aparatos eléctricos portátiles destinados principalmente al uso doméstico / residencial incluyendo: • Aspiradoras y sopladores para limpieza 116 • Planchas, máquinas para el mantenimiento de vestuario, máquinas de coser y cortar • Aparatos para corte y tratamiento de cabellos y afeitadoras • Cafeteras, y aparatos similares • Equipos para masajes y ejercicios físicos • Aparatos para higiene personal • Máquinas para hacer helados 3. Aparatos destinados a uso en sitios industriales o comerciales. Estos aparatos pueden ser portátiles, estacionarios o instalados permanentemente en un local, incluyendo: • Equipos de aire acondicionado y sus accesorios (filtros de aire, etc.) • Cocinas, hornos y aparatos similares • Refrigeradores y congeladores, cámaras frigoríficas y aparatos similares • Equipo manual dispensador de bebidas y alimentos • Equipo mecánico comercial para la preparación de alimentos, sanidad • Equipo de ventilación para cocinas industriales • Mezcladoras de cemento portátiles • Máquinas expendedoras (vending) • Lavadoras de vajilla industriales • Equipos para sellar, envolver y rotular • Máquinas limpiadoras industriales • Dispositivos de bombeo de agua operado por motor • Aparatos para calefacción y refrigeración 4. Herramientas Manuales y Estacionarias. 117 Aparatos eléctricos para agregar a un edificio herramientas de limpieza y otros procesos similares en residencias, locales comerciales o industriales. Estos aparatos pueden ser portátiles o estacionarios, incluyendo: • Herramientas eléctricas portátiles • Compresores, bombas de vacío y pistolas para pintar neumáticos • Fresadoras eléctricas y similares • Máquinas para dar acabado a pisos • Herramientas estacionarias ANEXO C: MANUALES DE USUARIO MÓDULOS X-10 ACTIVEHOME • Módulo CM11A-C 118 119 120 121 122 • Módulo LM465 123 124 • Mini Transceiver, TM751-C 125 126 127 • Sensor de movimiento MS14A-C 128 129 130 ANEXO D: LINEA DE CODIGO PROGRAMA CONTROLADOR MÓDULOS • Parte 1 Programa Servidor import java.rmi.*; import java.rmi.server.*; import java.io.*; import java.net.*; import rmiProtocoloJavaX10.Servidor_Java_x_10; import java.io.*; import java.net.*; import java.util.*; public class Servidor_Java_x_10_Impl extends UnicastRemoteObject implements Servidor_Java_x_10{ private Connection conexion; private String url, error="Error"; private Statement sentencia; private boolean hayresultado; private ResultSet resultado; InputStream inputStream; static OutputStream outputStream; static String defaultPort = ""; static CommPortIdentifier portId; static CommPortIdentifier saveportId; static Enumeration portList; SerialPort serialPort; Thread readThread; static String messageString = "Bienvenido"; static boolean outputBufferEmptyFlag = false; public Servidor_Java_x_10_Impl() throws RemoteException { super(); 131 //direccion = dir; //Detectar el puerto por defecto en el sistema operativo boolean portFound = false; String osname = System.getProperty("os.name", "").toLowerCase(); if (osname.startsWith("windows")) { // windows defaultPort = "COM1"; } else if (osname.startsWith("linux")) { // linux defaultPort = "/dev/ttyS0"; } else if (osname.startsWith("mac")) { // mac defaultPort = "???"; } else { System.out.println("Sorry, your operating system is not supported"); System.exit(1); } System.out.println("Set default port to " + defaultPort); //Detectar puertos disponibles portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier)portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { System.out.println("Available port: " + portId.getName()); if (portId.getName().equals(defaultPort)) { System.out.println("Found port: " + defaultPort); portFound = true; //nulltest reader = new nulltest(); break; 132 } } } if (!portFound) { System.out.println("port " + defaultPort + " not found."); System.exit(1); } //Configurar e iniiciar el puerto try { serialPort = (SerialPort)portId.open("SimpleReadApp", 2000); } catch (PortInUseException e) { } try { inputStream = serialPort.getInputStream(); } catch (IOException e) { } try { serialPort.addEventListener(this); } catch (TooManyListenersException e) { } serialPort.notifyOnDataAvailable(true); try { serialPort.setSerialPortParams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) { } initwritetoport(); } 133 public void serialEvent(SerialPortEvent event) { switch (event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: byte[] readBuffer = new byte[20]; try { int numBytes = 0; while (inputStream.available() > 0) { numBytes = inputStream.read(readBuffer); } String result = new String(readBuffer); System.out.println("Read: " + result); System.out.println("numBytes: " + numBytes); result = result.substring(0, numBytes); // textArea.append(result + newline); //Make sure the new text is visible, even if there //was a selection in the text area. //textArea.setCaretPosition(textArea.getDocument().getLength()); } catch (IOException e) { } break; } } void initwritetoport() 134 { // initwritetoport() assumes that the port has already been opened and initialized try { outputStream = serialPort.getOutputStream(); } catch (IOException e) { } try { serialPort.notifyOnOutputEmpty(true); } catch (Exception e) { System.out.println("Error setting event notification"); System.out.println(e.toString()); System.exit(-1); } } public void sendstring(String string) throws RemoteException { System.out.println("Send: " + string); try { outputStream.write(string.getBytes()); } catch (IOException e) { } } public static void main(String lmr[]) { System.err.println("Servidor inicializandose, por favor espere"); try { 135 defaultPort = lmr[1]; ServidorSerialPort2Impl serve = new ServidorSerialPort2Impl(); System.out.println(serve); Naming.rebind(lmr[0], serve); System.out.println("Servidor listo..."); } catch (Exception e) { System.err.println("Error en servidor PUERTO SERIE"); e.printStackTrace(); } } } • Parte 2 Interface Cliente – Servidor package rmiProtocoloJavaX10; import java.rmi.*; public interface Servidor_Java_x_10 extends Remote { public void sendstring(String string) throws RemoteException; } 136 • Parte 3 Programa Cliente package rmiProtocoloJavaX10; import java.rmi.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import rmiProtocoloJavaX10.Servidor_Java_x_10; //import rmiProtocoloJavaX10.Imagen; public class Java_x_10_Cliente extends JFrame implements ActionListener{ private JPanel encabezado,textos,campos,blanco,usuario; static JPanel botones; private JButton btnPrender,btnApagar; static Imagen logo; private Container c; private String url,resultado; private Servidor_Java_x_10 objeto; public Java_x_10_Cliente() { super("Acceso a su Casa"); c=getContentPane(); confEncabezado(); confBotones(); btnPrender1.addActionListener(this); btnApagar1.addActionListener(this); btnPrender2.addActionListener(this); btnApagar2.addActionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent eve){ System.exit(0); } }); } 137 private void confEncabezado(){ encabezado=new JPanel(); encabezado.setLayout(new GridLayout(3,1)); titulo=new JLabel("Controlador de Módulos"); titulo.setFont(new Font("Arial",Font.BOLD,20)); titulo.setHorizontalAlignment(JLabel.CENTER); c.add(encabezado,BorderLayout.NORTH); } private void confImagen(){ logo=new Imagen(); c.add(logo,BorderLayout.CENTER); } private void confBotones(){ botones=new JPanel(); botones.setLayout(new GridLayout(1,6)); btnPrender1 = new JButton("Prender Modulo Lampara"); btnApagar1 = new JButton("Apagar Modulo lámpara"); btnPrender2 = new JButton("Prender Transceiver"); btnApagar2 = new JButton("Apagar Transceiver"); botones.add(btnPrender1); botones.add(btnApagar1); botones.add(btnPrender2); botones.add(btnApagar2); c.add(botones,BorderLayout.SOUTH); botones.setVisible(false); } public void actionPerformed(ActionEvent eve){ if (eve.getSource() == btnPrender1) { try{ url = "//200.118.138.51/Java_x_10"; //url = "//200.106.142.42/Java_x_10"; objeto = (Servidor_Java_x_10)Naming.lookup(url); 138 sendstring("046600000000/h");//cadena de encendido sendstring("066200000000/h"); sendstring("066200000000/h"); sendstring("066200000000/h"); sendstring("066200000000/h"); } catch(Exception ex){ JOptionPane.showMessageDialog(null,"Error de conexion \n" + "con el servidor.\n Intente de nuevo.", "Error",JOptionPane.INFORMATION_MESSAGE); } } if (eve.getSource() == btnApagar1) { try { url = "//200.118.138.51/Java_x_10"; //url = "//200.106.142.42/Java_x_10"; objeto = (Servidor_Java_x_10)Naming.lookup(url); sendstring("046600000000/h"); //cadena de apagado sendstring("066300000000/h"); sendstring("066300000000/h"); sendstring("066300000000/h"); sendstring("066300000000/h"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error de conexion \n" + "con el servidor.\n Intente de nuevo.", "Error", JOptionPane.INFORMATION_MESSAGE); } } if (eve.getSource() == btnPrender2) { try{ url = "//200.118.138.51/Java_x_10"; //url = "//200.106.142.42/Java_x_10"; objeto = (Servidor_Java_x_10)Naming.lookup(url); sendstring("046E00000000/h");//cadena de encendido 139 } catch(Exception ex){ JOptionPane.showMessageDialog(null,"Error de conexion \n" + "con el servidor.\n Intente de nuevo.", "Error",JOptionPane.INFORMATION_MESSAGE); } } if (eve.getSource() == btnApagar2) { try { url = "//200.118.138.51/Java_x_10"; //url = "//200.106.142.42/Java_x_10"; objeto = (Servidor_Java_x_10)Naming.lookup(url); sendstring("046E00000000/h"); //cadena de apagado } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error de conexion \n" + "con el servidor.\n Intente de nuevo.", "Error", JOptionPane.INFORMATION_MESSAGE); } } } } 140