Après quelques lectures, il semble que xPL (eXtremely simPle protocoL) soit LA solution domotique qui permet d’intégrer de la manière ouverte soft et hard divers et variés.
Pour commencer mes expériences je décide de me faire la main en utilisant xpl-perl, un ensemble de librairies et utilitaires perl permettant d’implémenter xPL sur une machine Linux. En l’occurrence un petit Dockstar sous Debian Squeeze.
Installation
Rajouter la ligne suivante dans /etc/apt sources.list
deb http://debian.temporalanomaly.com/ squeeze main
Installer xpl-hub
# apt-get install xpl-hub-perl
ou si on veut une version up-to-date
# git clone git://github.com/beanz/xpl-perl.git # apt-get install libtimedate-perl # perl Makefile.PL
Paramétrage des arrêts/relances
La méthode n’est pas classique (pas de /etc/init.d etc.) : les différents modules sont lancés par l’outil daemontools qui s’assure que les démons tournent bien en permanence et s’occupe de les relancer en cas d’arrêt inopportun.
Pour le désactiver éventuellement, il faut modifier /etc/inittab :
#-- runit begin #SV:123456:respawn:/usr/sbin/runsvdir-start #-- runit end
pour configurer les programmes contrôlés par daemontools ça se passe dans /etc/service/*/run
Configuration de base
xpl-hub se configure dans /etc/xpl-perl/env :
- IP : contient l’adresse sur laquelle il écoute (adresse de loopback, 127.0.0.1 par défaut; mettre l’adresse réseau de la machine)
- IPSEND : contient l’adresse sur laquelle il émet (remplacer par l’adresse de broadcast du sous-réseau)
- COMMON_ARGUMENTS : mettre –verbose -i eth0 (eth0 étant l’interface réseau sur laquelle écouter, lo0 étant le défaut)
lancer xpl-hub :
# xpl-hub -i eth0 -v
Exemples d’utilisation
Monitoring squeezebox
Activer le plugin xAP dans le serveur Squeezebox (source : Enable xPL support in SlimServer – XPLProject)
L’adresse de broadcast xPL étant codée en dur dans le programme, il faut la modifier à la main…
# find / -iname "plugin.pm" 2>/dev/null | grep xPL
editer /usr/share/perl5/Slim/Plugin/xPL/Plugin.pm et modifier la ligne suivante pour mettre l’adresse configurée dans /etc/xpl-perl/env/IPSEND :
my $ipaddr = inet_aton('255.255.255.255');
Vérifier avec xpl-logger qu’on reçoit bien les infos (changement de morceau, on/off etc) :
# xpl-logger -i eth0 -v Listening on 192.168.1.5:48695 Sending on 192.168.1.255 Adding client: 192.168.1.5:48695 "bnz-listener.arrierboutix" 192.168.0.5:51530 [xpl-stat/hbeat.app: bnz-listener.arrierboutix -> * 5/48695/192.168.1.5] 192.168.0.5:51530 [xpl-stat/hbeat.app: slimdev-slimserv.changeledix(Sque -> * 5/50000/192.168.1.100/audio.slimserv/stopped] 192.168.0.5:51530 [xpl-stat/hbeat.app: bnz-listener.arrierboutix -> * 5/48695/192.168.1.5] 192.168.0.5:51530 [xpl-stat/audio.basic: slimdev-slimserv.changeledix(Sque -> * playing/ / //1]
Monitoring de disques avec smart
# apt-get install smartmontools # apt-get install libanyevent-perl # xpl-smart --interface eth0 --verbose --smart-verbose --smart-poll-interval 10
Références
xPL et ses principes
- xPL – One protocol to rule them all
- The xPL Project
- Le protocole xPL : intro + liens
xpl-perl
- xpl-perl : le site du programme
- Geekerie et Mascagne | xpl-perl : tutorial et expériences avec RFXcom (vieilles versions : ça ne marche pas avec le RFXtrx433), X10 et RRDtool
- Syno-wiki – Ma configuration logicielle domotique donne un exemple d’utilisation de xpl-perl sur NAS avec RFXcom (même remarque que ci-dessus), et affichage sympatique des données de plusieurs capteurs . Malheureusement il n’y a que les principes, pas les sources…
- Xpl – MicElectroLinGenMet : donne des exemples d’utilisation des utilitaires de xpl-perl, un programme pour afficher des infos sur un afficheur LCD avec lcdproc, un autre pour décoder les touches de la télécommande ATI Remote.
Autres programmes et expériences xPL intéressants
- Domogik : solution libre d’automatisation (enfin pas encore car pour l’instant elle ne permet que de faire des graphes et changer des états à l’aide d’une interface graphique Web ou Android) de votre habitat basée sur le protocole xPL. Codé en python. La communauté est active et le projet bien structuré.
- Projet xPL-pyHAL, un cerveau xPL, Episode 2 : Alpha Release : gestion de scénarios sur évènements. Permet de complémenter domogik pour les fonctions qui lui manquent, par exemple.
- xPL Perl update script for Pachube : pour envoyer des données xPL dans les nuages …
- et dans le même genre, mais en python cette fois (basé sur des librairies de domogik) : envoyer les infos des capteurs oregon sur sen.se
- Intégrer XBMC dans votre réseau xPL
- xPL et NUT, récupérer les données de votre onduleur