La domotique

Les plateformes dynamiques de services

Une plate-forme de services permet le déploiement de services, et gère la communication entre eux, mais cela de manière centralisée. Tous les services seront présents sur la même passerelle, ceci permettant une communication plus rapide entre eux. Mais cette passerelle est ouverte vers l'extérieur, et peut quand même communiquer via un réseau. Par exemple un service HTTP propose une interface qui permet par exemple d'administrer la plate-forme via un navigateur web. Un autre service peut par exemple offrir la possibilité de visionner les données livrées par des caméras connectées à la passerelle.

Un service peut en requérir d'autres. Par exemple le service visualisation peut fournir une interface web publiant les images des caméras. Ce service a besoin du service HTTP et du service camera pour fonctionner.

Une plate-forme de services doit permettre d'installer, de mettre à jour et de retirer ces services de façon dynamique également, c’est-à-dire que ces opérations doivent être possibles « à chaud » Les plates-formes de services sont très intéressantes pour les architectures à plugins.

Dans ce site nous allons présenter les spécifications OSGi et UPnP qui permettent de mettre en place des plateformes de services dynamiques. Mais il existe d'autres systèmes que nous ne traiterons pas dans cette partie : OpenWings, JINI...

OSGI

Présentation d'OSGi
OSGi s'ignifie : Open Services Gateway initiative. Il s'agit d'une norme définissant des plateformes de service accessibles par des appareils qui y sont connectés. Elle définit un canevas dynamique de déploiement et d’exécution de services Java. Les plateformes définies par cette norme sont administrable à distance. Il existe de plusieurs moyens pour exposer les services sur ces plateformes (HTTP, Corba, Web Services...). Les cibles principales sont les réseaux des voitures et domestiques. Il va ainsi être possible de créer des passerelles domestiques en utilisant OSGi. L'utilisation de plate-forme de services à l'intérieur du domicile permet son contrôle à distance. Des prestataires de services installent, de façon dynamique, sans arrêt des autres services, des fonctionnalités sur la passerelle pour, par exemple, effectuer des diagnostics de panne des appareils électroménagers, augmenter la sécurité du domicile (contrôle des caméras), ou médicaliser l'habitat (moniteur cardiaque.

Architecture OSGi
On peut représenter le framework OSGi, comme une couche logicielle dans laquelle vient se brancher les bundles. Cette couche logicielle s'exécute sur la plate forme Java (MachineVirtuelle Java).

Développement de services
Les services sont livrés sur la plateforme d’execution sous forme de fichier *.jar contenant : les bundles Un bundle contient un ou plusieurs services. Il peut en proposer et en requérir d'autres. C'est le framework qui a en charge la gestion des dépendances entre services et la gestion de leur cycle de vie, c'est à dire qu'il doit contrôler l'installation, la mise à jour et le retrait de bundles de manière dynamique. Sur la plateforme, les états du bundle peuvent être : INSTALLED, RESOLVED, STARTING, ACTIVE, STOPPING, UNINSTALLED.

Un bundle contient un ensemble de classes et de ressources qui vont permettre de fournir les services qu'il déclare. Une implémentation de l'interface BundleActivator va permettre de gérer l'activation et la désactivation du Bundle à travers les méthodes start() et stop() ce cette interface. Ces méthodes reçoivent en paramètre une référence du contexte du Bundle dans la plateforme : BundleContext. Le BundleContext permet d'enregistrer les services dans l'annuaire interne de la plateforme, rechercher des services dans cet annuaire, libérer des services quand ils ne sont plus utilisés, sourscrire aux évènements du Framework.

Exemple OSGi en domotique
La passerelle est administrée par un opérateur. Ce dernier autorise le déploiement de services fournis par les fournisseurs de services qui se partagent ainsi la passerelle et définit les règles de partage des ressources. Ces services sont généralement liés aux équipements du réseau privé dont ils exploitent les données enfouies et agissent sur les fonctions. Pour des questions de sécurité, l'operateur s’assure que les équipements éventuellement lies a un fournisseur (compteur électrique du distributeur d’électricité, moniteur cardiaque de l’hôpital, cameras et centrale d'alarme de la société de gardiennage) ne peuvent être utilises que par les services de ce fournisseur.

Les services (et leurs fournisseurs) peuvent coopérer entre eux dans l’élaboration de services plus complexes. Par exemple, en cas de malaise détecté par le moniteur cardiaque, l’hôpital peut récupérer le flux vidéo des cameras prises par la société de gardiennage. Les services déployés interagissent également avec les serveurs des fournisseurs. L'interaction peut être a l'initiative du serveur ou de la passerelle. Par exemple, le serveur du distributeur d’électricité procède a un télé-relevé en contactant le service connecte au compteur électrique. L'autre exemple est celui du service pilotant le moniteur cardiaque. Si ce dernier détecte une défaillance du cœur du patient, il contacte le serveur de l’hôpital qui dépêche aussitôt une équipe de secours.

Implémentations OSGi

Dans les chapites suivant, nous allons voir les trois principales méthodes d'accès aux services :