<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Poulpy - Domotique, OpenSource et Geekeries &#187; xpl-perl</title>
	<atom:link href="http://www.poulpy.com/tag/xpl-perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.poulpy.com</link>
	<description>Domotique, OpenSource et Geekeries</description>
	<lastBuildDate>Mon, 09 Aug 2010 20:22:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CM15A et CM15Pro sous linux et xPL</title>
		<link>http://www.poulpy.com/2010/02/cm15a-et-cm15pro-sous-linux-et-xpl/</link>
		<comments>http://www.poulpy.com/2010/02/cm15a-et-cm15pro-sous-linux-et-xpl/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 19:42:01 +0000</pubDate>
		<dc:creator>Thibault</dc:creator>
				<category><![CDATA[Domotique]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[cm15a]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[x10]]></category>
		<category><![CDATA[xpl]]></category>
		<category><![CDATA[xpl-perl]]></category>

		<guid isPermaLink="false">http://www.poulpy.com/?p=85</guid>
		<description><![CDATA[1. Intro Les personnes possédant une interface X10 USB Marmitek CM15A (aussi appellée CM15Pro) et désirant intégrer celle-ci dans leur réseau xPL tout en restant sous Linux ont eu probablement le même problème que moi : il n&#8217;y a rien qui existe pour le faire. Plus généralement, les logiciels disponibles pour cette interface USB sont [...]]]></description>
			<content:encoded><![CDATA[<h2>1. Intro</h2>
<p>Les personnes possédant une interface X10 USB Marmitek CM15A (aussi appellée CM15Pro) et désirant intégrer celle-ci dans leur réseau xPL tout en restant sous Linux ont eu probablement le même problème que moi : il n&#8217;y a rien qui existe pour le faire.<br />
Plus généralement, les logiciels disponibles pour cette interface USB sont très peu nombreux sous linux. Cela est principalement dû au manque de documentation technique sur cette interface : En effet, bien que plus évoluée que le archi-connu CM11, le CM15 est aussi conçu très différemment : plus de port série (même émulé sur de l&#8217;USB), protocole de communication différent, intégration des commandes X10 sans fil RF&#8230;<br />
Grâce au travail de la communauté, plusieurs &laquo;&nbsp;proof of concept&nbsp;&raquo; ont été réalisés pour faire fonctionner cette interface sous Linux :</p>
<ul>
<li>Petite application en ligne de commande permettant d&#8217;actionner des modules et de recevoir les commandes X10 &#8211; <a href="http://www.eclipsehomeauto.com/cm15a_on_linux/cm15a.shtml" target="_blank">http://www.eclipsehomeauto.com/cm15a_on_linux/cm15a.shtml</a></li>
<li>Module CM15A pour le célèbre MisterHouse. Mais celui-ci ne permet que de faire de l&#8217;émission de commandes (pas de réception) &#8211; <a href="http://misterhouse.wikispaces.com/X10-CM15A" target="_blank">http://misterhouse.wikispaces.com/X10-CM15A</a></li>
<li>Le driver adapté par Neil Cherry permettant de &#8216;voir&#8217; le device CM15A sous linux et de communiquer avec l&#8217;interface &#8211; <a href="http://www.linuxha.com/USB/cm15a.html" target="_blank">http://www.linuxha.com/USB/cm15a.html</a></li>
</ul>
<p>Beaucoup de travail a déjà été fait, et permet la communication &#8216;simple&#8217; avec le CM15A (il reste encore toute une partie des specs de l&#8217;interface qui reste inconnue, mais l&#8217;envoi/réception des commandes les plus utilisées est tout à fait faisable).</p>
<p>En voyant cela, et utilisant uniquement un CM15A pour l&#8217;interfacage X10 (je n&#8217;ai plus de CM11) je me suis dit que ça serait pas mal de développer un module pour faire gateway entre le CM15 et mon réseau xPL. Voila qui est chose faite <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Pour le téléchargement direct, allez voir dans la <a title="Downloads" href="http://www.poulpy.com/downloads/" target="_self">section des downloads</a>. Pour les explications, lisez la suite <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>2. Pré-requis</h2>
<p>Je ne détaillerai pas ici, mais vous devez également avoir le perl qui fonctionne correctement avec les modules qui vont bien, ainsi qu&#8217;une installation fonctionnelle des librairies xPL-Perl (<a href="http://www.xpl-perl.org.uk" target="_blank">http://www.xpl-perl.org.uk</a>).<br />
Comme toute machine faisant partie d&#8217;un réseau xPL, vous devez avoir au moins un <strong><em>HUB </em></strong>qui tourne dessus (perso j&#8217;utilise celui fournit avec les librairies xPL Perl).</p>
<p>Un autre pré-requis important est le driver CM15 dont l&#8217;installation est détaillée ci-dessous.</p>
<h2>3. Installation du driver pour le CM15</h2>
<p>Pour faire fonctionner l&#8217;application, il vous faudra d&#8217;abord installe<strong><em>r le driver iplc de Neil Cherry</em></strong> :</p>
<pre>apt-get install linux-headers-generic
wget http://www.linuxha.com/common/iplcd/iplc-driver.tgz
tar zxf iplc-driver.tgz
cd iplc/driver/linux-2.6/
# Pour les kernels les plus récents faire, executer :
sed -i s/\\Winfo\\W*\(/\ pr_info\(/ *.c
cd cm15a.d
make</pre>
<p>Vous devriez maintenant avoir un joli driver sous la forme du fichier <strong>cm15a.ko</strong> que vous pouvez copier où bon vous semblera et que vous allez maintenant charger dans votre noyau :</p>
<pre>$ insmod /path/to/cm15a.ko
$ dmesg | tail
[274611.018498] cm15a USB #252 now attached to major 180 minor 252
[274611.018536] usbcore: registered new interface driver cm15a
[274611.018544] X10 CM15A USB Driver v0.03</pre>
<p>Vérifiez enfin que le device a bien été créé :</p>
<pre>$ ls -la /dev/cm15a0
crw-rw---- 1 root root 180, 252 2010-02-14 19:59 /dev/cm15a0</pre>
<p>Le driver marche, vous êtes maintenant parés à installer mon module xPL CM15</p>
<h2>4. Installation du module xpl</h2>
<p>Pour le téléchargement, ça se passe ici : <a href="http://www.poulpy.com/wp-content/plugins/download-monitor/download.php?id=3" title="xPL-CM15A">Download</a></p>
<p>Téléchargez et décompressez le tarball et procédez à l’installation classique « à la perl ». Attention, il faut que le module soit installé dans le même <strong><em>PREFIX</em></strong> que les librairies xpl-perl. Par exemple :</p>
<ul>
<li>Si xPL-perl est installé dans /usr/share/perl5/xPL/, alors votre prefix est « /usr »</li>
<li>Si par contre c’est installé dans /usr/local/share/perl5/xPL, alors le prefix est « /usr/local »</li>
</ul>
<pre>$ wget ......../xpl-cm15a-0.2.tar.gz
$ tar zxf xpl-cm15a-0.2.tar.gz
$ cd xpl-cm15a-0.2
$ perl Makefile.PL PREFIX=/usr   # Mettre le bon PREFIX voir ci-dessus
# Vérifier qu'il n'y a pas de warning de dépendances
$ make
$ sudo make install</pre>
<p>Si tout est OK, l&#8217;installation aura entre autres créé le script /usr/bin/xpl-cm15a</p>
<h2>5. Lancement de l&#8217;application</h2>
<p>Tout est indiqué dans la page de man qui aura été installée avec le programme à l&#8217;étape précédente. Voici la syntaxe générale :</p>
<pre>$ xpl-cm15a --help
Usage:
xpl-cm15a [flags] [options]
where valid flags are:
--help                - show this help text
--verbose             - verbose mode (for the xPL layer)
--cm15a-verbose       - verbose mode (for the cm15a layer)
--cm15a-ignore-rf     - ignore x10 RF messages from the cm15a
--cm15a-ignore-plc    - ignore x10 PowerLine messages from the cm15a
and valid options are (default shown in brackets):
--interface if0            - the interface for xPL messages (first
non-loopback or loopback)
--cm15a-device /dev/xxx    - device for the cm15a (/dev/cm15a0)</pre>
<p>Il est obligatoire de spécifier le paramètre &#8216;cm15a-device&#8217; en précisant le device de votre cm15 (/dev/cm15a0 par défaut).</p>
<p>Il vous est également possible de demander à la gateway d&#8217;ignorer les messages X10 RF et/ou les messages X10 courant porteur. Cela concerne uniquement les évennements qui ARRIVENT jusqu&#8217;au CM15, et cela évite que l&#8217;application ne génère des notifications sur votre réseau xPL si jamais vous n&#8217;en voulez pas.<br />
Pour donner un exemple concret : J&#8217;ai un CM15 (qui capte les ordres X10 RF sans fil) et j&#8217;ai un RFXCOM qui capte lui aussi les ordres X10 RF. Donc, par défaut, quand j&#8217;actionne une commande X10 RF (telecommande ou détecteur par exemple), cela va me génèrer DEUX messages sur mon réseau xPL : un envoyé par la gateway RFXCom et l&#8217;autre par la gateway CM15 =&gt; Dans ce cas là j&#8217;ai spécifié l&#8217;option &laquo;&nbsp;&#8211;cm15a-ignore-rf&nbsp;&raquo; pour que la gateway CM15 ne me renvoie pas les messages X10 RF.</p>
<p>Exemple de lancement (attention il faut le lancer en root, ou bien avec des droits suffisants pour lire/écrire dans /dev/cm15a0):</p>
<pre>$ /usr/bin/xpl-cm15a --cm15a-ignore-rf --cm15a-verbose --cm15a-device /dev/cm15a0</pre>
<h2>6. Réception / Emission d&#8217;ordres X10</h2>
<p>Pour émettre un ordre X10, il suffit alors d&#8217;envoyer le message correspondant sur votre réseau xPL. Par exemple pour allumer le module A3 :</p>
<pre>$ /usr/bin/xpl-sender -m xpl-cmnd -c x10.basic device=a3 command=on</pre>
<p>La gateway devrait alors envoyer l&#8217;ordre sur courant porteur et votre module devrait s&#8217;activer.</p>
<p>Pour vérifier le fonctionnement en réception, vous pouvez par exemple lancer le logger xPL et actionner une commande X10 (par exemple sur un télécommande, ou bien passer devant un détecteur de mouvement&#8230;etc..). Vous verrez alors que la gateway xpl-cm15a enverra le message correspondant sur votre réseau xPL :</p>
<pre>$ /usr/bin/xpl-logger
192.168.X.X:YYYY [xpl-trig/x10.basic: tlam-CM15A.zzzzzz -&gt; * - off a2]</pre>
<h2>7. Limitations</h2>
<p>Certaines choses ne fonctionnent PAS, notamment :</p>
<ul>
<li>Les fonctions compliquées de X10 comme les extended functions</li>
<li>L&#8217;émission d&#8217;ordres X10 RF (par manque de documentation du CM15A, seule la réception marche pour le RF)</li>
</ul>
<p>D&#8217;autres n&#8217;ont pas pu être testées :</p>
<ul>
<li>Les modules X10 bi-directionnels</li>
<li>Le X10 security</li>
</ul>
<p>Et voilou, j&#8217;espere que ça dépannera les galériens du CM15 sous linux comme moi <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  N&#8217;hésitez pas à me remonter les problèmes d&#8217;utilisation ou remarques sur ce module xpl-cm15a.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poulpy.com/2010/02/cm15a-et-cm15pro-sous-linux-et-xpl/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Interconnecter votre réseau xPL avec Jabber</title>
		<link>http://www.poulpy.com/2010/02/interconnecter-votre-reseau-xpl-avec-jabber/</link>
		<comments>http://www.poulpy.com/2010/02/interconnecter-votre-reseau-xpl-avec-jabber/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 17:19:42 +0000</pubDate>
		<dc:creator>Thibault</dc:creator>
				<category><![CDATA[Domotique]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[xpl]]></category>
		<category><![CDATA[xpl-perl]]></category>

		<guid isPermaLink="false">http://www.poulpy.com/?p=41</guid>
		<description><![CDATA[Toujours soucieux d&#8217;allier l&#8217;inutile à l&#8217;agréable, et dans le cadre de mes experimentations du protocole xPL, j&#8217;ai développé un petit module passerelle entre xPL et Jabber. Grâce à cet module complètement indispensable, on peut &#171;&#160;discutter&#160;&#187; avec sa maison, pour peu qu&#8217;elle ait un peu de conversation. Le module en lui même ne fait que : [...]]]></description>
			<content:encoded><![CDATA[<p>Toujours soucieux d&#8217;allier l&#8217;inutile à l&#8217;agréable, et dans le cadre de mes experimentations du protocole xPL, j&#8217;ai développé un petit module passerelle entre xPL et Jabber.</p>
<p>Grâce à cet module complètement indispensable, on peut &laquo;&nbsp;discutter&nbsp;&raquo; avec sa maison, pour peu qu&#8217;elle ait un peu de conversation.<br />
Le module en lui même ne fait que :</p>
<ul>
<li>Se logger sur un service Jabber (Google Talk par exemple)</li>
<li>Diffuser sur le réseau xPL les messages qu&#8217;il reçoit</li>
<li>Permettre d&#8217;envoyer des messages à des contacts Jabber via une commande xPL</li>
</ul>
<p>Pour ceux qui veulent tester sans lire la suite, vous trouverez le module sur la <strong><a title="Downloads" href="http://www.poulpy.com/downloads/" target="_blank">page de téléchargements</a></strong></p>
<p>Voyons comment installer tout ça.</p>
<h2>1. Pré-requis :</h2>
<ul>
<li>Un PC (ouaou super) sous Linux (C&#8217;est du perl donc ça marche probablement sur Mac aussi mais je n&#8217;ai jamais essayé).</li>
<li>Un réseau xPL en place (i.e. les applications essentielles déjà installées, notamment le Hub XPL)</li>
<li>Un compte jabber (gtalk par exemple) créé spécialement pour votre système domotique et vous ayant dans sa liste de contacts</li>
<li>Les librairies xPL-Perl installées (http://www.xpl-perl.org.uk)</li>
<li>Certains modules perl utilisés</li>
</ul>
<p>Pour ceux sous ubuntu/debian il faut notamment installer les packages suivants :</p>
<pre>$ sudo apt-get install libconfig-general-perl libnet-jabber-perl</pre>
<h2>2. Installation</h2>
<p>Télécharger mon petit module en cliquant là : <a href="http://www.poulpy.com/wp-content/plugins/download-monitor/download.php?id=2" title="xPL-jabber">Download</a>.</p>
<p>Décompressez le tarball et procedez à l&#8217;installation classique &laquo;&nbsp;à la perl&nbsp;&raquo;. Attention, il faut que le module soit installé dans le même PREFIX que les librairies xpl-perl. Par exemple :</p>
<ul>
<li> Si xPL-perl est installé dans /usr/share/perl5/xPL/, alors votre prefix est &laquo;&nbsp;/usr&nbsp;&raquo;</li>
<li> Si par contre c&#8217;est installé dans /usr/local/share/perl5/xPL, alors le prefix est &laquo;&nbsp;/usr/local&nbsp;&raquo;</li>
</ul>
<pre>$ tar zxf xpl-jabber-*.tar.gz
$ cd xpl-jabber-*
$ perl Makefile.PL PREFIX=/usr   # Mettre le bon PREFIX voir ci-dessus
# Vérifier qu'il n'y a pas de warning de dépendances
$ make
$ sudo make install</pre>
<p>Si tout se passe bien, le programme s&#8217;installe là : <strong>/usr/bin/xpl-jabber</strong></p>
<h2>3. Configuration</h2>
<p>Avant de lancer le soft, il faut définir le compte jabber à utiliser. Pour cela vous pouvez partir du fichier de configuration fourni en exemple et le mettre au bon endroit.</p>
<pre>$ sudo mkdir -p /etc/xplperl
$ sudo cp conf/jabber.conf.example /etc/xplperl/jabber.conf</pre>
<p>Editez le fichier pour y mettre vos propres infos. Si il s&#8217;agit d&#8217;un compte google talk, vous n&#8217;avez que les paramètres &#8216;username&#8217; et &#8216;password&#8217; à changer. Le fichier devrait ressembler à ça :</p>
<pre>$ cat /etc/xplperl/jabber.conf
#
# xPL Jabber Gateway config file
#
username = my_gtalk_username
domain = gmail.com
password = my_gtalk_password
server = talk.google.com
port = 5222
tls = 1</pre>
<h2>4. Lancement</h2>
<p>Normalement vous êtes pret à lancer xpl-jabber. Préparez quand même :<br />
- Votre client jabber connecté avec votre compte à vous (histoire de voir quand votre maison se connectera <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )<br />
- Un logger de messages xPL (xpl-logger du package xpl-perl sera parfait) pour vérifier le bon fonctionnement du tout</p>
<pre>$ xpl-logger -v</pre>
<p>Attendez quelques secondes, et vous devriez voir le compte que vous avez configuré se connecter sur votre messagerie jabber =&gt; victoire !</p>
<p>Envoyez lui le message &laquo;&nbsp;help&nbsp;&raquo;, il devrait vous répondre un message générique.</p>
<h2>5. Réception de messages</h2>
<p>A chaque fois que vous envoyez un message sur jabber à votre maison, un message xPL sera envoyé sur votre réseau xPL. Par exemple en envoyant le message &laquo;&nbsp;home sweet home&nbsp;&raquo; sur jabber, on verra passer le message sur le réseau xPL grâce au logger :</p>
<pre>$ xpl-logger
[xpl-trig/sendmsg.im: tlam-jabber.home -&gt; * - votre_compte@gmail.com =&gt; votre_maison@gmail.com : home sweet home]</pre>
<p>Libre à vous ensuite d&#8217;utiliser ce message et de déclencher, à sa réception, des actions dans votre habitat.</p>
<h2>6. Envoi de messages</h2>
<p>Pour que votre maison envoie des messages Jabber, il vaut envoyer un message xPL au bon format. Par exemple, si on veut envoyer le message &laquo;&nbsp;rentre vite !&nbsp;&raquo; à l&#8217;utilisateur Gtalk mon.compte@gmail.com :</p>
<pre>$ xpl-sender -m xpl-cmnd -c sendmsg.im to=mon.compte@gmail.com \
   body='rentre vite !'</pre>
<p>Là aussi, libre à vous d&#8217;envoyer des messages Jabber en fonction des évennements sur votre réseau domotique. Par exemple lorsqu&#8217;un détecteur de mouvement capte quelque chose, lorsque la température descend en dessous d&#8217;une certaine limite, etc&#8230;</p>
<h2>7. Pour aller plus loin</h2>
<p>Comme vous l&#8217;avez probablement compris, le module xpl-jabber n&#8217;est qu&#8217;une application &laquo;&nbsp;gateway&nbsp;&raquo; : elle n&#8217;embarque aucune intelligence de contrôle domotique : c&#8217;est en utilisant une application de controle (xPLHAL par exemple) que vous pourrez faire inter-agir tous vos éléments xPL avec xpl-jabber.</p>
<p>Enfin quand même un petit avertissement : faites attention à la façon d&#8217;intégrer l&#8217;Instant Messaging à votre installation : la securité d&#8217;une commande par instant messaging n&#8217;est clairement pas optimale, c&#8217;est le moins qu&#8217;on puisse dire.</p>
<p>N&#8217;hésitez pas à poster vos commentaires/retours ici même, j&#8217;y répondrai avec plaisir !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poulpy.com/2010/02/interconnecter-votre-reseau-xpl-avec-jabber/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
