UPnP

UPnP (Universal Plug and Play) est un canevas SOA pour le développement de services dans le contexte du SOHO (Small Office Home Office)

Généralités
Universal Plug and Play (UPnP) Forum 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). Les domaines couverts sont la micro-informatique/bureautique (imprimantes, appareil-photo...), l'électronique grand public (DVD, TV, radio, Media-Center...), la communication (téléphones, routeur ADSL...), la domotique (alarme anti-intrusion, régulation du chauffage et de la climatisation HVAC, volets roulants, etc.) ou bien encore l'électroménager (lave-linge, réfrigérateur...). UPnP Forum a publié une première version des protocoles réseaux requis (UPnP DA) et un certain nombre de définitions standard de périphériques (devices) et de leurs services associés.

Equipements certifiés UPnP

 * Registre des équipements certifiés UPnP

Remarque : tous les constructeurs ne font pas passer la certification à leurs produits.

UPnP DA
Universal Plug and Play (UPnP) Device Architecture (DA) spécifie les protocoles pour des réseaux spontanés de périphériques (devices). Les protocoles UPnP traitent :
 * la détection et le retrait dynamique des périphériques,
 * leur description et celles des services qu'ils fournissent,
 * l'utilisation par les points de contrôle (PDA, télévision, télécommande RF...) des services fournis
 * la notification des changements de valeurs des variables d'état associées aux services.

UPnP DA a les mêmes objectifs que JINI proposé par SUN. Cependant, UPnP DA n'est pas attaché à un langage particulier (comme JINI avec Java). Les protocoles de UPnP DA s'appuient sur XML, SOAP 1.0 et HTTP au dessus de TCP, UDP et UDP Multicast.

Profils
Une des activités de l'UPnP Forum est la définition de Device Control Protocols (DCP) pour des familles d'équipements.

Lighting Control
Ce profil considère des équipements électriques qui peuvent être allumés ou éteints (lampe, électroménager) ou bien gradués (dimmer de lampe).

AV Audio Video
Le profil AV (pour Audio Video) définit deux types d'équipements : Le point de contrôle joue le rôle d'orchestrateur pour accorder Media Server et Media Renderer sur le protocole de transport et le type du contenu multimédia à échanger. Il pilote ensuite le déroulement (lecture, pause, ...).
 * le Media Server stockant et partageant les documents multimédia
 * le Media Renderer recupérant et visualisant des documents multimédia rendus disponibles par des Media Server.

DLNA est une alliance d'équipementiers AV standardisant l'ensemble minimum de types et de protocoles de transports des contenu multimédia s'échangeant dans l'architecture UPnP AV.

Produits
 * MediaTomb media server scriptable !!! très intéressant pour les projets de la salle AIR
 * XBMC
 * UShare

HVAC Heat Ventilation Air Conditioning
Ce profil considère des équipements qui sont des capteurs de température et des vannes de régulation de fluide.

Digital Security Camera
Ce profil considère des équipements qui sont des caméras de surveillance.

Low Power
Ce profil considère des équipements qui ont la capacité d'être mis en veille (sleep) pour moins consommer d'électricité et d'être réveillé à la demande (wake up) par exemple au moyen du WakeOnLAN.

Device Management
Ce profil considère des équipements qui ont la capacité d'être mis à jour à distance (firmware, modules) et d'être reconfiguré à distance. Ce profil est proche du protocole TR69 des boites ADSL.

=API UPnP=

Node.js

 * https://www.npmjs.com/package/node-upnp-client

UPnP Server

 * https://github.com/oeuillot/upnpserver
 * https://github.com/oeuillot/upnpserver-cli

npm install upnpserver npm install upnpserver-cli -g upnpserver --help upnpserver -d /MyFilms=~/Movies/ -m /Music=~/Music/ -n "My UPnP Server"

Cling
Bibliothèque UPnP pour Java compatible avec Android
 * https://github.com/4thline/cling

OSGi
Le chapitre UPnP Device Driver de la spécification OSGi traite la manière de développer des périphériques UPnP et des points de contrôle UPnP au dessus une plate-forme OSGi. L'API org.osgi.service.upnp dont l'interface principale UPnPDevice représente un périphérique, et d'autre part un élément de la passerelle, l'UPnP Base Driver, qui assure le pont entre les points de contrôle UPnP et les périphériques UPnP présents sur le réseau IP adhoc, et les bundles hébergés par la plate-forme OSGi.

Les alternatives

 * DPWS considéré au départ comme son évolution
 * EchoNet supporté par les équipementiers japonais (notamment dans le domaine du HVAC)
 * IGRS supporté par les équipementiers chinois

Outils

 * http://opentools.homeip.net/dev-tools-for-upnp

Liens

 * http://upnp.org
 * http://www.upnp-hacks.org/upnp.html
 * Transparents de cours sur UPnP et OSGi
 * UPnP Forum, "Understanding UPnP™: A White Paper", Juin 2000, http://www.upnp.org/download/UPNP_UnderstandingUPNP.doc
 * Michael Jeronimo, Jack Weast, "UPnP Design by Example: A Software Developer's Guide to Universal Plug and Play", Pub. Intel Press, ISBN: 0971786119, May 2003, http://www.intel.com/intelpress/excerpts/upnp1.htm
 * https://www.meshcentral.com/