CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
79
Capítulo 5 DISPOSITIVO UPNP
En este capítulo se presenta el diseño y desarrollo de una aplicación que ofrezca
algunos de los servicios de ROVIO en una red UPnP. Esta aplicación software
adquiere el papel de dispositivo en el ámbito UPnP y su función es la de hacer de
intermediario entre la red UPnP y el robot. El punto de control, que permite
acceder al servicio ofrecido, está presente en el programa Intel Device Spy.
Todos estos elementos conforman una red doméstica UPnP (Figura 5-1).
Figura 5-1: Escenario Red UPnP
5.1 HERRAMIENTAS DE INTEL PARA UPNP
Intel dispone de un conjunto de herramientas, disponibles en [19], orientadas
hacia la tecnología UPnP con la finalidad de permitir la interconexión de los
elementos de forma sencilla. Estas herramientas facilitan al desarrollador las
fases de planificación, investigación y desarrollo pertenecientes al proceso previo
en el desarrollo de un producto con funcionalidades UPnP. Estas aplicaciones se
encuentras agrupadas en dos paquetes:
Intel Digital Home Device Code Wizard
Intel Tools for UPnP Technology
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
80
5.1.1 INTEL DIGITAL HOME DEVICE CODE WIZARD
Este paquete ha reemplazado al antiguo paquete de Intel conocido como Intel
Authoring Tools. Contiene las herramientas necesarias para el desarrollo
software de dispositivos UPnP e incluye soporte para todas las clases de los
dispositivos de DLNA [20]. Los programas que conforman este paquete son:
Device Builder y Launch Code Wizard.
A continuación se describe brevemente la herramienta Device Builder19,
empleada en este proyecto.
5.1.1.1 Device Builder
En este programa se basará el segundo paso de diseño de nuestro dispositivo
UPnP. Es una herramienta que genera librerías a partir de las cuales se puede
desarrollar un dispositivo específico o un punto de control. Para crear estas
librerías, se hace uso de las descripciones de servicio.
Algunas acciones que permite esta aplicación son:
Introducir información del fabricante.
Añadir servicios a un dispositivo a partir de archivos de descripción.
Exportar librerías para un dispositivo o punto de control que implemente
o controle, respectivamente, los servicios añadidos.
Elegir entre varios lenguajes, plataformas y sistemas operativos.
Otras características avanzadas como modificar tiempos de respuesta,
añadir iconos, etc.
5.1.2 INTEL TOOLS FOR UPNP TECHNOLOGY
En este paquete encontramos diferentes aplicaciones, desde las que trabajan
sobre dispositivos ya creados y en funcionamiento y otras que permiten definir
19 Figuras de esta aplicación aparecen en la sección 5.2
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
81
las descripciones de los servicios, ayudando a los creadores de software a
acelerar el desarrollo, las pruebas y el despliegue de dispositivos compatibles con
UPnP. En particular se incluye un soporte completo para distribuir contenido
multimedia AV (Audio/Vídeo). Específicamente, el software disponible en el
paquete es: AV Media Controller, AV Media Renderer, AV Media Renderer –
WM9, AV Media Server, AV Wizard, Device Relay, Device Sniffer, Device Spy,
Device Validator, Network Light y Service Author.
A continuación se describen, de forma somera, las dos aplicaciones (Service
Author y Device Spy20) empleadas en el desarrollo del dispositivo UPnP que se
comunica con ROVIO.
5.1.2.1 Service Author
Este programa permitirá completar el primer paso para diseñar el dispositivo
UPnP. Está diseñado para transformar una plantilla de servicio estándar en una
descripción de servicio determinada. Mediante este software el desarrollador
puede añadir o quitar variables de estado, definir acciones, argumentos y su
formato. El programa genera un fichero en formato XML con la descripción de
servicio, que será utilizado por Device Builder para completar la segunda fase
del desarrollo del dispositivo.
5.1.2.2 Device Spy
Es un punto de control universal que descubre todos los dispositivos UPnP
conectados a la red y permite interactuar con ellos. De esta aplicación podemos
destacar algunas secciones y características:
Árbol de dispositivos. En esta zona aparecen todos los dispositivos
descubiertos en la red, y se pueden observar los servicios, variables y
20 Figuras de estas aplicaciones aparecen en las secciones 5.2 y 5.3
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
82
acciones de cada uno de ellos. Además podemos suscribirnos a los
eventos de un servicio o abrir la ventana para invocar acciones.
Información. En esta zona se ofrece información detallada acerca del
campo que esté resaltado en el árbol de dispositivos.
Log de eventos. Aquí aparecen todos los mensajes de notificación de
eventos enviados por los servicios a los que esté suscrito el punto de
control.
Invocar acciones. Device Spy permite invocar las acciones que el
dispositivo ofrece, pudiendo indicar los parámetros que se le pasan al
servicio y recoger los valores que devuelve.
5.2 DESARROLLO PRÁCTICO
Los sistemas que entran en funcionamiento en nuestra red UPnP son:
Aplicación Device Spy. En nuestra red UPnP juega el papel de punto de
control y nos permite descubrir el dispositivo, suscribirnos a sus eventos e
invocar acciones sobre el mismo.
Aplicación en lenguaje C#. Es el dispositivo UPnP propiamente dicho.
Soporta las acciones invocadas y hace de intermediario entre el
dispositivo físico final (ROVIO) y la red UPnP, enviando mediante una
interfaz WiFi las órdenes necesarias para ejecutar las acciones invocadas.
Robot de servicios ROVIO. Es el dispositivo físico final y recibe las
órdenes y comandos CGI procedentes del dispositivo UPnP (aplicación).
La aplicación desarrollada con el objetivo de integrar a ROVIO en una red UPnP,
ha sido creada en tres fases o etapas principales que se detallan a continuación.
Etapa 1. Consiste en la creación de un archivo de descripción del servicio,
que contendrá toda la información acerca del dispositivo, incluyendo las
acciones y las variables de estado disponibles.
Etapa 2. Se lleva a cabo haciendo uso de la descripción del servicio para
crear la pila UPnP para el dispositivo. La pila son básicamente todas las
partes de UPnP que resultan realmente engorrosas de codificar. Maneja
el registro del servicio, el anuncio del mismo, las suscripciones de
variables y procesa las peticiones del servicio.
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
83
Etapa 3. En esta etapa se implementan las acciones definidas para el
servicio creado.
Seguidamente se describe en detalle el desarrollo llevado a cabo en cada una de
estas etapas.
5.2.1 ETAPA 1: CREACIÓN DE LA DESCRIPCIÓN DEL SERVICIO
En esta etapa se hace uso del software Service Author del paquete Tools for
UPnP Technology. Este programa, Figura 5-2, permite generar la descripción de
los servicios que se desean ofrecer en formato de archivo XML.
A través de Service Author, se añaden a la descripción del servicio las variables
de estado deseadas. Al añadir una nueva variable hay que especificar un nombre,
el tipo de dato que contendrá y si se desea que el cambio en el valor de esta
variable provoque avisos en la red UPnP (suscripción a variables de estado). En la
siguiente figura aparece la lista con las variables de estado definidas para
nuestro dispositivo.
Figura 5-2: Service Author. State Variables
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
84
La descripción de servicio también habrá de contener las acciones que se deseen
proporcionar, por lo que será necesario añadirlas con Service Author. Para cada
una de estas acciones se seleccionarán las variables de estado que le
correspondan indicando en qué sentido se utilizan, es decir, si son variables de
entrada al dispositivo UPnP o si son valores de salida (valores de retorno). Por
tanto, las variables de estado serán los argumentos, de entrada o salida, de las
acciones definidas. De estar configuradas como entradas, serán valores que se le
podrán pasar al dispositivo al llamar a las acciones, por el contrario, si son
configuradas como salidas el dispositivo devolverá valores que serán
almacenados en ellas tras la ejecución de la acción.
En la Figura 5-3 aparecen las acciones creadas para nuestro dispositivo UPnP
además de las variables de estado utilizadas como argumentos.
Figura 5-3: Service Author. Actions
En la Tabla 5-1 aparecen las acciones junto con sus argumentos y una breve
descripción de las mismas.
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
85
NOMBRE ACCIÓN ARGUMENTOS
DESCRIPCIÓN DE LA ACCIÓN IN/OUT TIPO NOMBRE
Conectar in string user Realiza una petición de conexión
con ROVIO (conexión necesaria para el resto de acciones)
in string pass
in string dir_IP
DetectarBasuraON - - - Activa el proceso de detección de basura
EjecutarCamino in string camino Ejecuta el camino indicado
FijarVelocidad in int velocidad Establece la velocidad de movimiento de ROVIO
IrBase - - - Petición para que ROVIO se dirija a la estación base sin atracar
IrBaseAtracar - - - Petición para que ROVIO se dirija a la estación base y atraque
MoverRovio in string cad_mov ROVIO ejecutará la cadena de movimientos enviada
ObtenerEstado out string estado Obtiene un informe con el estado de ROVIO
ObtenerListaCaminos out string lista_caminos Obtiene la lista de caminos almacenados
ObtenerPosicionBasura out string pos_basura Obtiene las coordenadas de posición de ROVIO cuando detectó la presencia de basura
Tabla 5-1: Acciones UPnP
Una vez están configuradas las acciones y las variables de estado para la
descripción del servicio, se guarda esta descripción en un fichero XML.
Estas acciones serán programadas21 en la tercera etapa del proceso de diseño del
dispositivo UPnP.
5.2.2 ETAPA 2: CREACIÓN DE LA PILA UPNP
En el desarrollo de esta etapa se utiliza el programa de Device Builder. Este
software genera el código de la pila del dispositivo UPnP.
Este código generado es genérico, en el sentido que permite el desarrollo de
cualquier aplicación para ser conforme con UPnP. No obstante, haciendo uso del
21 En realidad bastará con una adaptación de la aplicación creada y descrita en el capítulo
anterior.
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
86
archivo de descripción de servicios, el código generado contempla de forma
específica el esquema que permite, de forma sencilla, la implementación de los
servicios especificados.
El primer paso es añadir un dispositivo y modificar los campos de descripción
según se considere apropiado. En la Figura 5-4 se presenta la ventana de
dispositivo de Service Builder.
Figura 5-4: Service Builder. Device
A continuación se procede a la carga del archivo XML, que contiene el servicio
generado en la etapa anterior por Service Author y se modifican ciertos campos
para proporcionar claridad a la información. En primer lugar se modifica el
campo Friendly Name de forma que indique “Rovio”, que representa el nombre
con el que se reconocerá al dispositivo en la red UPnP. Otros campos que se
modifican son:
Service Name: Rovio
Service Type: urn:schemas-upnp-org:service:rovio:1
Service ID: urn:upnp-org:serviceId:
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
87
Service Type será el campo por el que el punto de control UPnP busque al
dispositivo.
En la Figura 5-5 se presenta la sección de Service Builder dedicada al servicio
correspondiente al archivo XML añadido y con las modificaciones que se han
considerado oportunas.
Figura 5-5: Service Builder. Service
Finalmente se genera la pila de dispositivo fijando como plataforma objetivo
Intel .NET Framework Stack (C#). Esto crea un proyecto en lenguaje C# con la pila
de dispositivo ya implementada, con lo que solo restaría integrar el código con
las acciones para los servicios pertinentes.
5.2.3 ETAPA 3: IMPLEMENTACIÓN DE LAS ACCIONES
En esta etapa se implementan las acciones definidas anteriormente. Para ello se
parte del proyecto con la pila de dispositivo en lenguaje C# creado en la etapa
anterior. De forma general habría que programar todo lo necesario para dotar de
funcionalidad real a las acciones. En nuestro caso, sólo es necesario realizar
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
88
ciertas modificaciones a la aplicación de control de ROVIO, descrita en el Capítulo
4, para que pueda usarse como dispositivo UPnP ya que todas las acciones
definidas están presentes, de forma más o menos directa, en el código escrito
para la aplicación de control.
5.3 DISPOSITIVO UPNP EN FUNCIONAMIENTO. RESULTADOS.
Una vez completadas las tres etapas descritas anteriormente y puesto en
funcionamiento el dispositivo en la red se puede, haciendo uso de Device Spy,
comprobar el resultado obtenido.
Figura 5-6: Device Spy. Rovio Device
En la Figura 5-6 aparece Device Spy y puede apreciarse que detecta el
dispositivo UPnP creado, identificado por “Rovio” en árbol de la izquierda. En
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
89
este árbol aparecen todos los dispositivos presentes en nuestra red que han sido
detectados y, por tanto, poseedores de alguna funcionalidad UPnP.
Mencionar que aparece toda la información añadida en las etapas de diseño. En
concreto, dentro del dispositivo “Rovio”, se listan las variables de estado y las
acciones disponibles.
Mediante el programa Device Spy podemos invocar cada una de las acciones
creadas seleccionando la que deseemos y, haciendo uso de un menú contextual,
eligiendo la opción Invoke Action (Figura 5-7).
Figura 5-7: Device Spy. Invoke Action
En la Figura 5-8 aparecen ejemplos de invocación de acciones.
Figura 5-8: Device Spy .Ejemplos Invoke
CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP
90
En los casos de las acciones Conectar y EjecutarCamino, los argumentos son de
entrada al dispositivo por lo que hay que introducirlos de forma manual antes de
ejecutar la acción. En el caso de ObtenerListaCaminos, se invoca la acción y como
resultado se obtiene en el argumento de salida los caminos almacenados en
ROVIO.
En conclusión, Device Spy actúa como punto de control en nuestra red UPnP. A
través de este programa somos capaces de suscribirnos a eventos (Figura 5-9) e
invocar las acciones programadas en C# especificadas en la descripción de
servicio.
Figura 5-9: Device Spy. Subscribe to Events
Top Related