Instituto de Computaci(cid:243)n Facultad de Ingenier(cid:237)a Universidad de la Repœblica API de alto nivel gen´erica para desarrollo de aplicaciones de domo´tica. Informe de Proyecto de Grado 26 de febrero del 2010 Montevideo - Uruguay Tribunal: Javier BaliosiÆn, Gonzalo Tejera, Diego Vallespir Autores: Tutores: Juan Manuel Picerno AndrØs Aguirre Ken Tenzer Ariel Sabiguero 2 Resumen La dom(cid:243)tica es el campo que relaciona la automatizaci(cid:243)n, el hogar y la tecnolog(cid:237)a brindando bene(cid:28)cios a los usuarios de dichos sistemas teniendo en cuenta la seguridad, el confort de las personas y el ahorro energØtico. Las soluciones existentes de dom(cid:243)tica suelen estar altamente acopladas con una tecnolog(cid:237)a espec(cid:237)(cid:28)ca, lo cual simpli(cid:28)ca la interacci(cid:243)n con los distintos dispositivos y di(cid:28)culta el uso de diversas tecnolog(cid:237)as simultÆneamente. Este trabajo presenta en sus primeros cap(cid:237)tulos el relevamiento del Estado del Arte de la dom(cid:243)tica, para introducir al lector al concepto central que es la especi(cid:28)caci(cid:243)n de una API genØrica de dom(cid:243)tica. Esta API permite la programaci(cid:243)n de aplicaciones con un alto grado de portabilidad, implantarse en plataformas con escasas prestaciones y es lo su(cid:28)cientemente genØrica para contemplar diferentes interfaces de entrada/salida, as(cid:237) como, protocolos de comunicaci(cid:243)n heterogØneos. La soluci(cid:243)n propuesta estÆ basada sobre una plataforma con una arquitectura orientada a servicios desarrollada en Java, llamada OSGi. Tiene en cuenta aspectos de seguridad, evitando dejar vulnerable la privacidad, la autenticaci(cid:243)n y la autorizaci(cid:243)n sobre los diferentes componentes del sistema. La API permite interactuar con distintas tecnolog(cid:237)as de forma homogØnea, los cuales incluso pueden estar distribuidos entre varios sistemas. Paramostrarsuaplicabilidadserealiz(cid:243)unprototipoparalaautomatizaci(cid:243)n de un baæo en una plataforma con recursos limitados, usando el proyecto Usb4All que permite el control de dispositivos genØricos desde el puerto USB. Palabras claves: Dom(cid:243)tica, OSGi, Bajos recursos, JamVM, Middlewares, Usb4All, OpenWrt. 3 4 Agradecimientos Agradecemos especialmente a nuestros tutores: AndrØs Aguirre y Ariel Sabiguero por soportarnos durante todo el aæo. Reconocemos tambiØn la grandeza de aquellas personas que nos facilitaron informaci(cid:243)n: JessicaD(cid:237)az,(cid:16)AGenericGatewayforTestingHeterogeneousComponents in Acceptance Testing Tools(cid:17) [15]. Marco Aiello, (cid:16)The role of web services at home(cid:17) [3]. Dario Bonino, (cid:16)Domotic House Gateway" [74]. Dario Russo, (cid:16)An Open Standard Solution for Domotic Interoperability" [52]. Larry Page y Sergey Brin por su aporte incondicional durante toda la carrera, vida profesional, y esperemos por muchos aæos mÆs! No es menor, nuestro reconocimiento a los Ingenieros ElØctricos por su ayuda en dicha Ærea: Edgardo Vaz, Santiago Reyes, Alfonso GonzÆlez, Uri Tenzer y Daniel Goldenberg. 5 6 ˝ndice general 1. Introducci(cid:243)n 13 1.1. Motivaci(cid:243)n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3. Pœblico Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4. Organizaci(cid:243)n del Documento . . . . . . . . . . . . . . . . . . . . 14 1.4.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4.2. Gu(cid:237)a de Lectura . . . . . . . . . . . . . . . . . . . . . . . 15 2. Estado del Arte 17 2.1. Sensores y Actuadores . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2. EstÆndares y middlewares . . . . . . . . . . . . . . . . . . . . . . 17 2.2.1. Medios de Comunicaci(cid:243)n . . . . . . . . . . . . . . . . . . 18 2.2.2. Interoperabilidad . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.3. Cronolog(cid:237)a . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3. Sistemas Operativos Embebidos . . . . . . . . . . . . . . . . . . . 21 2.3.1. Comparaci(cid:243)n . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.2. Cronolog(cid:237)a . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.1. Comparaci(cid:243)n . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.2. Cronolog(cid:237)a . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.5. Trabajos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6. Interpretaci(cid:243)n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.7. Tendencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3. AnÆlisis 29 3.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2. EOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.4. Deploy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.4.1. OSGi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5. JVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.6. Interconexi(cid:243)n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.6.1. R-OSGi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.7. Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.8. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7 8 ˝NDICE GENERAL 4. Experimentos y Resultados 37 4.1. Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2. JVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.1. JamVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.1.1. Compilaci(cid:243)n de JamVM y GNU-Classpath para x86 . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.1.2. Cross-compilaci(cid:243)ndeJamVMyGNU-Classpath para OpenWrt sobre MIPS . . . . . . . . . . . . 39 4.2.1.3. Diferencias con Java-Sun . . . . . . . . . . . . . 40 4.2.2. Mika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3. OSGi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.1. Concierge . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.2. Knop(cid:29)er(cid:28)sh . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4. Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.5. Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.5.1. Usb4All . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.5.1.1. Usb4All-API . . . . . . . . . . . . . . . . . . . . 44 4.5.1.2. Prototipos . . . . . . . . . . . . . . . . . . . . . 45 4.5.2. Middleware Secundario . . . . . . . . . . . . . . . . . . . 45 4.6. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5. Soluci(cid:243)n Propuesta 47 5.1. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.1.1. Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.1.2. No Funcionales . . . . . . . . . . . . . . . . . . . . . . . . 48 5.2. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.2.1. OSGi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2.1.1. Bundles . . . . . . . . . . . . . . . . . . . . . . . 49 5.2.1.2. Servicios . . . . . . . . . . . . . . . . . . . . . . 51 5.2.2. R-OSGi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2.3. API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2.3.1. TechManager . . . . . . . . . . . . . . . . . . . . 54 5.2.3.2. Security Manager . . . . . . . . . . . . . . . . . 56 5.2.3.3. Remote Manager . . . . . . . . . . . . . . . . . . 56 5.2.3.4. Proxy . . . . . . . . . . . . . . . . . . . . . . . . 57 5.2.3.5. Observer . . . . . . . . . . . . . . . . . . . . . . 57 5.2.3.6. Consumidores / Productores custom . . . . . . . 57 5.3. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.3.1. Token: Obtenci(cid:243)n y Manipulaci(cid:243)n . . . . . . . . . . . . . 60 5.3.2. Usurpaci(cid:243)n de Identidad . . . . . . . . . . . . . . . . . . . 61 5.4. Decisiones sobre la API . . . . . . . . . . . . . . . . . . . . . . . 61 5.4.1. Invocaci(cid:243)n a MØtodos . . . . . . . . . . . . . . . . . . . . 61 5.4.2. Descubrimiento de Servicios . . . . . . . . . . . . . . . . . 62 5.4.3. Composici(cid:243)n de Servicios . . . . . . . . . . . . . . . . . . 63 5.4.4. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ˝NDICE GENERAL 9 6. Caso de Estudio 65 6.1. Descripci(cid:243)n del Problema . . . . . . . . . . . . . . . . . . . . . . 65 6.2. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.2.1. Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.2.2. No Funcionales . . . . . . . . . . . . . . . . . . . . . . . . 66 6.3. Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.4. Matriz de Trazabilidad . . . . . . . . . . . . . . . . . . . . . . . . 67 6.5. Soluci(cid:243)n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.5.1. Usb4All . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 6.5.1.1. Driver . . . . . . . . . . . . . . . . . . . . . . . 68 6.5.1.2. Firmware . . . . . . . . . . . . . . . . . . . . . . 68 6.5.1.3. Modelado con la API . . . . . . . . . . . . . . . 72 6.5.2. Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.5.2.1. L(cid:243)gica . . . . . . . . . . . . . . . . . . . . . . . . 74 6.5.2.2. Modelado con la API . . . . . . . . . . . . . . . 76 6.5.3. Acceso Remoto . . . . . . . . . . . . . . . . . . . . . . . . 77 6.6. Deploy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.7. Adaptaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.7.1. USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.7.2. Circuito de interacci(cid:243)n . . . . . . . . . . . . . . . . . . . . 79 6.7.2.1. Con(cid:28)guraci(cid:243)n inicial . . . . . . . . . . . . . . . . 79 6.7.2.2. Modi(cid:28)caciones . . . . . . . . . . . . . . . . . . . 80 6.7.2.3. Con(cid:28)guraci(cid:243)n alternativa . . . . . . . . . . . . . 80 6.7.3. Recuperaci(cid:243)n ante fallas . . . . . . . . . . . . . . . . . . . 80 7. Conclusiones 85 7.1. Resultados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2. Di(cid:28)cultades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.3. Aportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 7.4. Trabajos a Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . 88 A. Sensores y Actuadores 109 A.1. Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 A.1.1. Tipos de Sensores . . . . . . . . . . . . . . . . . . . . . . 109 A.2. Actuadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 A.2.1. Tipos de Actuadores . . . . . . . . . . . . . . . . . . . . . 112 B. EstÆndares y middlewares 115 B.1. Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 B.2. Consumer Electronic Bus . . . . . . . . . . . . . . . . . . . . . . 115 B.3. Digital Living Network Alliance . . . . . . . . . . . . . . . . . . . 116 B.4. Home Audio Video interoperavility . . . . . . . . . . . . . . . . . 117 B.5. IEEE 1394. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 B.6. Inter-Integrated Circuit . . . . . . . . . . . . . . . . . . . . . . . 118 B.7. Jini. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 B.8. KNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 B.9. LonWorks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 B.10.OpenWebNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 B.11.Open Services Gateway Initiative . . . . . . . . . . . . . . . . . . 120 B.11.1.Service Oriented Framework. . . . . . . . . . . . . . . . . 120 10 ˝NDICE GENERAL B.12.P2P Universal Computing Consortium . . . . . . . . . . . . . . . 121 B.13.RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 B.14.Serial Peripheral Interface . . . . . . . . . . . . . . . . . . . . . . 122 B.15.Service Location Protocol . . . . . . . . . . . . . . . . . . . . . . 122 B.16.Universal Plug and Play . . . . . . . . . . . . . . . . . . . . . . . 122 B.17.Universal Serial Bus . . . . . . . . . . . . . . . . . . . . . . . . . 123 B.18.X10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 B.19.Zeroconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 B.20.ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.21.Otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.21.1.Salutation . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.21.2.Konark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.21.3.Home Gateway Initiative . . . . . . . . . . . . . . . . . . 124 B.21.4.VESA Home Network . . . . . . . . . . . . . . . . . . . . 124 B.21.5.Home Phoneline Networking Alliance . . . . . . . . . . . 125 B.21.6.Energy Conservation and Home Network . . . . . . . . . 125 B.21.7.Open Building Information Xchange . . . . . . . . . . . . 125 C. Sistemas Operativos Embebidos 127 C.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 C.1.1. Openmoko . . . . . . . . . . . . . . . . . . . . . . . . . . 127 C.1.2. OpenWrt . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 C.1.3. SlugOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 C.1.4. µClinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 C.1.5. OpenDomo . . . . . . . . . . . . . . . . . . . . . . . . . . 128 C.2. ThreadX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 C.3. Windows Embedded CE . . . . . . . . . . . . . . . . . . . . . . . 128 C.4. QNX Neutrino NTOS . . . . . . . . . . . . . . . . . . . . . . . . 129 C.5. BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 C.6. Cuadro Comparativo . . . . . . . . . . . . . . . . . . . . . . . . . 129 D.Lenguajes 131 D.1. C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 D.2. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 D.3. Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 D.4. PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 D.5. Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 D.6. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 E. Sistemas Existentes 135 E.1. Libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 E.1.1. MisterHouse . . . . . . . . . . . . . . . . . . . . . . . . . 135 E.1.2. Heyu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 E.1.3. DomoticaCasera . . . . . . . . . . . . . . . . . . . . . . . 136 E.1.4. LinKNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 E.1.5. Taiyaki . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 E.2. Comerciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 E.2.1. MyHome BTicino: . . . . . . . . . . . . . . . . . . . . . . 137 E.2.2. Creston . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 E.2.3. Home PAC XP8741 . . . . . . . . . . . . . . . . . . . . . 137
Description: