12
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

Capítulo 5 DISPOSITIVO UPNP - bibing.us.esbibing.us.es/.../11954/fichero/6+-+CAP.5+-+Dispositivo+UPnP.pdf · CONTROL E INTEGRACIÓN DE ROVIO BAJO UPNP Dispositivo UPnP 81 las descripciones

  • Upload
    phamdan

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

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