Universal Plug and Play (UPnP) Forum [2] est un consortium industriel ouvert qui s’est formé en 1999 pour la définition de standards simplifiant la mise en réseaux d’équipements communicants dans les maisons et dans les entreprises (SOHO : Small Office Home Office). UPnP Forum a publié une première version des protocoles réseaux requis et un certain nombre de définitions standards de périphériques (devices) et de services associés.
L’architecture d’Universal Plug and Play (UPnP) est celle d’une architecture d’une plateforme distribuée de services dynamiques pour des périphériques communicants (imprimante, télévision, lecteur de DVD, volets déroulants, HVAC ...) t des points de contrôle (PDA, télévision, ... connectés entre eux par un réseau adhoc. UPnP définit les protocoles réseau permettant la détection et le retrait dynamique des périphériques, l’utilisation par les points de contrôle des services qu’ils fournissent et la notification des changements de valeurs des variables d’état associées aux services. Les protocoles définis dans la première version d’UPnP s’appuient beaucoup sur XML et HTTP au dessus de TCP, UDP et UDP Multicast. La prochaine version réoriente les protocoles vers les standards des Web Services.
Les logiciels qui seront utilisés au cours de l'atelier est la suivante.
Vous pouvez les installer individuellement
ou en masse à partir de l'URL donné au cours de l'atelier
Installez l'ensemble des logiciels dans le répertoire c:\Temp et fixez la variable d'environnement OSGIUPNP..
Vous pouvez également ajouter les documents relatifs à OSGi et UPnP dans vos bookmarks.
Sur Windows XP, il est parfois nécessaire d'autoriser les échanges UPnP avec votre hôte en reconfigurant le pare-feu.
Pour cela, cochez la case "Infrastructure UPnP" dans "Panneau de Configuration > Pare-Feu Windows > Exceptions"
Le SDK UPnP d'Intel requiert le framework .NET (1.1 et + ).
Le SDK UPnP d'Intel comporte plusieurs outils pour:
%OSGIUPNP%\intel-upnp\tools\Readme.htm
.
%OSGIUPNP%\intel-upnp\author
. Un avant-goût est présenté en annexe.
Les premières manipulations consistent à lancer des devices et à invoquer des actions dessus.
Lancez le traceur réseau UPnP %OSGIUPNP%\intel-upnp\tools\Device Sniffer.exe
java Intel.DeviceSniffer.MainApp
depuis le répertoire "%OSGIUPNP%\intel-upnp\tools\Java Tools
).
Lancez l'explorateur réseau UPnP Device %OSGIUPNP%\intel-upnp\tools\Device Spy.exe
Le premier device est une ampoule électrique (light bulb) munie d'un gradateur (dimmer).
Lancez l'émulateur de ce device %OSGIUPNP%\intel-upnp\tools\Network Light.exe
SetTarget
du service SwitchPower
agit sur l'alimentation de l'ampouleSetLoadLevelTarget
du service DimmingService
agit sur la gradation de l'intensité lumineuse de l'ampoule
La seconde manipulation consiste à tester les éléments de l'architecture AV (Audio/Video) d'UPnP.
Le kit d'Intel comporte :
%OSGIUPNP%\intel-upnp\tools\AV Media Server.exe
),%OSGIUPNP%\intel-upnp\tools\AV Media Renderer.exe
),%OSGIUPNP%\intel-upnp\tools\AV Media Controller.exe
),%UPNPOSGI%\video
sur votre serveur,
Figure: AV Media Server en service (les vidéos et les audios des 2 répertoires sont disponibles à la lecture)
Figure: AV Media Renderer
Figure: AV Media Controller
La liste complete des devices et des services standardisés est dans le répertoire %UPNPOSGI%\upnposgi-tools\upnp-forum\standardizeddcps
Visualisez quelques uns des documents de spécification.
Pour la prise en main d'OSCAR, la passerelle OSGi que nous utiliserons,
%OSGIUPNP%\oscar1.0.4
La spécification "UPnP Device Driver" d'OSGi (R3 chapître 25) spécifie comment les bundles OSGi peuvent être développés pour intéropérer avec des périphériques UPnP et leurs points de contrôle (control point).
La démonstration comporte 2 instances d'OSCAR (upnp1, upnp2) qui hébergent respectivement:
Console |
> oscar Welcome to Oscar. ================= Enter profile name: upnp1 -> obr install "OSGi Service" -> rem obr start "DomoWare UPnP Base Driver" -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/upnpbasedriver-1.0.5-bin.jar -> obr start "UPnP Control Point" -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/clock-1.1.2-bin.jar ... -> services ... -> |
Console |
> oscar Welcome to Oscar. ================= Enter profile name: upnp2 -> obr install "OSGi Service" -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/light-1.1.2-bin.jar -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/tv-1.1.2-bin.jar -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnpthermometer/upnpthermometer.jar -> rem obr start "DomoWare UPnP Base Driver" -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/upnpbasedriver-1.0.5-bin.jar ... -> services ... -> |
Le resultat est à peu près le suivant sur une station de travail :
Le resultat est à peu près le suivant sur un PDA (tournant OSCAR) :
Quelques explications:
UPnP Base Driver a 2 rôles. Premièrement, il exporte les services org.osgi.service.upnp.UPnPDevice à l'extérieur de la passerelle.
Deuxièmenent, UPnP Base Driver instancie un service org.osgi.service.upnp.UPnPDevice pour chaque device découvert sur le réseau UPnP.
Les commandes de cet exemple d'usage de "UPnP Device Driver" sont présentées
dans le script suivant http://www-adele.imag.fr/~donsez/dev/osgi/script/upnp.txt.
Listez les services fournis par les bundles.
Etant donné le peu de temps disponible, vous completerez un device existant et son point de contrôle associé.
java.awt.Panel
pour chacun de ces services.
Vous noterez que le java.awt.Panel
pour le service standard "SwitchPower" est le même que celui du device "Light Bulb".
Lancez les commandes suivantes dans un ou deux profils OSCAR pour démarrer le device Simple TV et et le point de contrôle associé.
Console |
> oscar Welcome to Oscar. ================= Enter profile name: upnptv1 -> obr install "OSGi Service" -> rem obr start "DomoWare UPnP Base Driver" -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/upnpbasedriver-1.0.5-bin.jar -> http://www-adele.imag.fr/~donsez/dev/osgi/domowareutil/domowareutil.jar -> http://www-adele.imag.fr/~donsez/dev/osgi/upnpgenutil/upnpgenutil.jar -> http://www-adele.imag.fr/~donsez/dev/osgi/simpleupnptv/simpleupnptv.jar -> services ... -> |
Console |
> oscar Welcome to Oscar. ================= Enter profile name: upnptv2 -> obr install "OSGi Service" -> rem obr start "DomoWare UPnP Base Driver" -> start http://www-adele.imag.fr/~donsez/dev/osgi/upnp/upnpbasedriver-1.0.5-bin.jar -> obr start "Tiny Shell GUI" -> obr start "Tiny Shell Component" -> http://www-adele.imag.fr/~donsez/dev/osgi/domowareutil/domowareutil.jar -> http://www-adele.imag.fr/~donsez/dev/osgi/upnpgenutil/upnpgenutil.jar -> http://www-adele.imag.fr/~donsez/dev/osgi/tinyupnp/tinyupnp.jar -> services ... -> |
La travail à réaliser consiste à faire évoluer la version actuelle du service "VolumeSelector" pour que ce service permet la coupure et la reprise du volume.
Le service incluera une variable d'état "Mute" et les actions (setter/getter) associées.
Exercice: proposez un SSDP pour la nouvelle version du service "VolumeSelector".
Le projet Eclispe pour compléter le développement du device UPnP est dans le répertoire %OSGIUPNP%\workspace\simpleupnptv
install
) et démarrez (start
) le jarfile du bundle regénéré.update
) le jarfile du bundle regénéré.
Le projet Eclispe pour compléter le développement du point de contrôle UPnP est dans le répertoire %OSGIUPNP%\workspace\tinyupnp
install
) et démarrez (start
) le jarfile du bundle regénéré.update
) le jarfile du bundle regénéré.Si vous avez le temps, vous pouvez compléter le point de contrôle TinyUPnP pour permettre l'affichage du image capturée par le device "UPnP WebCam".
Le projet Eclispe pour compléter le développement du point de contrôle UPnP est dans le répertoire %OSGIUPNP%\workspace\tinyupnp
install
) et démarrez (start
) le jarfile du bundle regénéré.update
) le jarfile du bundle regénéré.
Le bundle UPnP Generated Device
contient un générateur de devices UPnP. Ce generateur est constitué de transformateurs XSLT qui génèrent des classes Java à partir des descriptions XML (device et ssdp). Il reste cependant à donner l'implémentation des services (classe XModelImpl).
Le fonctionnement de la génération est présenté par les transparents suivants.
Plusieurs devices (vides) ont été déjà générés à partir des spécifications de devices et services
standardisés par l'UPnP Forum.
Vous pouvez vous appuyer dessus pour générer vos propres devices à partir de votre propre description XML (device et ssdp)
Vous devez lire et suivre les indications listées dans la documentation de ce bundle pour générer votre propre device
Le SDK UPnP d'Intel comporte un outil de génération (graphique) des devices et des points de contrôle en C, C++ ou C#.
Cet outil est "%OSGIUPNP%\intel-upnp\author\Device Builder.exe"
.
Il est possible de générer le source du squelette d'un device et de ses services
à partir des documents de description XML standards et propriétaires.
La figure suivante présente cet outil pour la génération d'un Light Bulb:
Siemens propose une implémentation Java et une implémentation C++ de pile UPnP disponibles sur http://www.plug-n-play-technologies.com.
L'implémentation Java permet d'écrire des points de contrôle et des devices en Java pouvant fonctionner sur J2SE, Personal Java (Java 1.1) et J2ME/CDC/Personal Profile.
La figure suivante présente le point de contrôle générique fournit avec la pile UPnP Java de Siemens :