Le XPL est un protocole de communication réseau. Il permet de partager des informations de manière standardisée entre plusieurs ordinateurs ou plusieurs applications. Il est développé pour Linux, Mac et Windows.

Devant la difficulté que j’ai eu à comprendre son utilité, trouver des procédures d’installation/configuration, des exemples et des scripts fonctionnels, je vais rassembler ici toutes mes connaissances actuelles dans l’espoir de faciliter la tâche aux nouveaux arrivants.

Quel est l’intérêt de la mise en place du XPL ?

Actuellement j’utilise le 1-Wire pour récupérer les données de température de mes sondes. Pour cela, j’utilise Digitemp (Linux) et un script qui me trace des graphiques depuis une basse RRD. Le problème est que je souhaite ajouter des sondes de température sans fil en 443Mhz avec RFXCom. La manière de récupérer et traiter les données n’est pas la même, il me faut donc une couche intermédiaire qui permettrait de standardiser les valeurs récupérées afin de les enregistrer dans une basse RRD et d’en générer des graphiques sans distinction entre les technologies.

Pour l’instant j’utilise XPL uniquement sous Linux avec XPL-Perl codé en… Perl. Beaucoup de scripts sont déjà disponibles. Ils permettent par exemple d’enregistrer automatiquement certaines valeurs dans une base RRD (ou SQL), d’en générer des graphiques, d’envoyer un message XPL lors du coucher/lever du soleil, de contrôler Heyu… Il est également facile de modifier ces scripts pour ses propres besoins. Par exemple, j’ai un onduleur qui est connecté en USB sur un PC et qui l’éteint lorsque celui-ci n’a plus que 5 minutes de batterie. J’ai un deuxième PC ondulé qui lui ne reçoit pas l’ordre de s’éteindre. L’idée serait d’envoyer un message XPL sur le réseau lorsque le premier PC reçoit l’ordre. Le deuxième PC reconnait ce message et exécute un script système « halt ».

Le fonctionnement

Le XPL se décompose en plusieurs briques essentielles :

XPL device
Permet de connecter des solutions physiques tel que du 1-Wire, RFXcom ou autre contrôler qui diffusera les réponses par XPL.

HUB
Le HUB est indispensable, c’est lui qui va unifier la communication entre les différentes applications XPL pour les diffuser sur le réseau. L’inverse est également vrai. Le XPL fonctionne sur un seul port (et non un par application), le HUB concentre donc le trafic et le diffuse aux autres applications.

XPLHAL
Application qui écoute les messages XPL et exécute des actions en fonction. Par exemple xpl-rrd écoute les messages de type sensor.basic et enregistre la valeur dans une base RRD. Il est intéressant de créer ses propres scripts (exemple pour l’idée de l’onduleur).

Les messages XPL

À l’aide de la commande « xpl-logger -v », voici un exemple des messages XPL que l’on peut recevoir sur le réseau.
192.168.100.104:53245 [xpl-trig/security.zone: bnz-rfxcomrx.serveurxpl -> * - alert/powercode.6b4ee4 state=false]
192.168.100.104:53245 [xpl-stat/hbeat.app: bnz-owfs.serveurxpl -> *]
192.168.100.104:53245 [xpl-stat/sensor.basic: bnz-owfs.serveurxpl -> * - 28.51E286320000[temp]=24.3125]
La première ligne provient de l’interface RFXCom, il s’agit d’un message de communication d’un détecteur de présence de mon alarme Visonic. La deuxième ligne est un message de santé (sans réel intérêt) du service xpl-owfs (interface XPL avec le système de fichier 1-Wire OWFS). La troisième ligne contient la température de la sonde 1-Wire « 28.51E286320000 », soit 24,3125°C.

On remarque différents éléments dans ces messages :

Le « message_type » qui correspond à « xpl-trig » dans le cas de la première tram. C’est donc un message trigger.
La « class », « sensor » pour le troisième message.
Et « class_type » qui correspond à « basic » toujours pour ce dernier message.

C’est sur ces informations que les applications HAL vont se baser pour filtrer les données qui les intéressent. Par exemple, xpl-rrd qui enregistre les données de température/humidité/vent… va filtrer uniquement les messages de type sensor.basic pour récupérer la valeur (temp dans notre cas) et l’enregistrer dans une base.

Maintenant que vous avez compris le principe et surtout l’intérêt du XPL, voyons comment l’installer.

Avant de commencer, vous avez besoin de ces paquets :

apt-get update
apt-get install subversion libmodule-pluggable-perl libyaml-perl make fakeroot dh-make-perl dpkg-dev gcc debhelper libtimedate-perl libdatetime-set-perl libyaml-syck-perl daemontools daemontools-run

Installez à partir du SVN :

cd /usr/src
svn co http://www.xpl-perl.org.uk/svn/xpl-perl/trunk xpl-perl
cd xpl-perl
perl Makefile.PL
make
make test
make install

xpl-perl-setup

« xpl-perl-setup » est un script qui configure automatiquement les services en fonction des sources présentes. Par exemple si on installe un système de fichier owfs, le script ajoutera le démon wpl-owfs ainsi que xpl-rrd et ajoutera un cron pour xpl-rrd-graph. Pour plus d’information sur son fonctionnement « cat /usr/local/bin/xpl-perl-setup ».
Maintenant si on fait « ps -aux | grep xpl », on voit bien que notre HUB est lancé.
XPL est installé, vous pouvez voir les messages du réseau avec « xpl-logger -v ».

A SUIVRE…

—————————————–

Exemple d’utilisation (xpl-sender)

Installation du 1-wire et owf filesystem

Installation du RFXCOM

Utilisation de RRD et vérification du fonctionnement

Utilisation de RRD-graph et affichage des graphiques