<?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; x10</title>
	<atom:link href="http://www.poulpy.com/tag/x10/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>xPL &#8211; One protocol to rule them all</title>
		<link>http://www.poulpy.com/2010/02/xpl-one-protocol-to-rule-them-all/</link>
		<comments>http://www.poulpy.com/2010/02/xpl-one-protocol-to-rule-them-all/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 20:29:03 +0000</pubDate>
		<dc:creator>Thibault</dc:creator>
				<category><![CDATA[Domotique]]></category>
		<category><![CDATA[x10]]></category>
		<category><![CDATA[xpl]]></category>

		<guid isPermaLink="false">http://new.poulpy.com/?p=6</guid>
		<description><![CDATA[Un des principes de la domotique est (selon moi en tout cas) de réussir à faire communiquer différents objets de la vie courante entre eux, pour rendre le tout plus intelligent, plus contrôlable, plus extensible. Partant de ce principe, une des difficultés auxquelles on se retrouve vite confronté est la multitude de technologies différentes à [...]]]></description>
			<content:encoded><![CDATA[<p>Un des principes de la domotique est (selon moi en tout cas) de réussir à faire communiquer différents objets de la vie courante entre eux, pour rendre le tout plus intelligent, plus contrôlable, plus extensible.</p>
<p>Partant de ce principe, une des difficultés auxquelles on se retrouve vite confronté est la multitude de technologies différentes à interconnecter entre elles, au sein d&#8217;un seul et unique système domotique. On peut en effet se retrouver très vite avec par exemple :</p>
<ul>
<li>Des capteurs Oregon Scientific pour les données environnementales</li>
<li>Un système X10 courant porteur pour la commande des appareils electriques de la maison</li>
<li>Du X10 RF (sans fil) pour tout ce qui est télécommandes, détecteurs de mouvements&#8230;</li>
<li>Une console CC128 pour le controle de la consommation électrique</li>
<li>Un media center- Des capteurs 1wire</li>
<li>Plein d&#8217;autres choses&#8230;.</li>
</ul>
<p>En considérant que l&#8217;on est capables d&#8217;utiliser toutes ces technologies, mais qu&#8217;elles n&#8217;ont d&#8217;intéret que si elles sont utilisées ensemble, il nous faut un moyen de féderer tout ça, de faire converger toutes ces informations pour que l&#8217;on puisse ensuites les utiliser dans un système domotique, sans avoir à descendre dans les détails d&#8217;implémentation de chaque technologie. Il nous faut&#8230;. le xPL ! <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Le Protocole xPL</h2>
<p>Un protocole créé en 2003 et appellé xPL (eXtremely simPle protocoL : tout un programme <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) se propose justement de féderer le controle et le monitoring de tous les équipements de la maison au sein d&#8217;un même mode de communication.<br />
Il s&#8217;agit d&#8217;un protocole qui se veut très simple (réseau IP classique, du XML et c&#8217;est tout), tout en incorporant des possibilités d&#8217;auto-configuration et d&#8217;auto-découverte très intéressantes, surtout quand on bidouille pas mal dans le domaine de la domotique.</p>
<h2><strong>Comment ça marche</strong></h2>
<p>Tout d&#8217;abord ma spécialité : un schéma de principe moche <img src='http://www.poulpy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.poulpy.com/wp-content/uploads/2010/02/xpl.jpg"><img class="alignnone size-large wp-image-7" title="Schéma de principe xPL" src="http://www.poulpy.com/wp-content/uploads/2010/02/xpl-1024x805.jpg" alt="Schéma de principe d'un réseau xPL" width="480" height="377" /></a></p>
<p>Chaque patate sur ce schéma est une application autonome. Elle est dans la majorité des cas sur un ordinateur de la maison, mais peut être carrément embarquée dans des équipements.</p>
<p><strong>Les applications &#8216;interfaces&#8217; Gateways</strong> : Il s&#8217;agit des applications qui font le lien entre les différentes technologies et le protocole xPL. Ce sont ces applications qui connaissent les détails d&#8217;implémentations des différentes technos. Par exemple on trouvera des Gateways pour :</p>
<ul>
<li>X10 (qui se connecte alors à l&#8217;interface CM11 par exemple)</li>
<li>RFXCom (qui se connecte au produit du même nom, et permet alors de s&#8217;interfacer avec toutes les tecnologies que le RFXCom connait)</li>
<li>CurrentCost (qui se connecte à la console ENVI pour mesurer les consommations d&#8217;électricité de votre maison)</li>
<li>SMS (qui permet d&#8217;envoyer des SMS)</li>
<li>1wire (qui permet de communiquer avec toute la gamme de capteurs 1Wire)</li>
<li>ZWave (pour communiquer avec la gamme d&#8217;automatismes ZWave)</li>
<li>&#8230;. et plein d&#8217;autres&#8230;</li>
</ul>
<p><strong>Les applications de stats et de monitoring</strong> : Ce sont des applications qui ne font que reçevoir des informations, elles n&#8217;émettent rien. On pourra par exemple enregistrer tous les changements d&#8217;états des automatismes de la maison dans une base MySQL, ou encore enregistrer les données provenant de différents capteurs dans des bases RRD (Round Robin Database) pour ensuite génerer des graphes.</p>
<p><strong>Les applications de contrôle</strong> : Il s&#8217;agit des applications qui contiennent l&#8217;intelligence et toute la logique du système domotique : Ce sont par exemple ces applications qui vont décider d&#8217;éteindre la lumière lorsqu&#8217;il fait jour, ou bien de baisser le chauffage lorsque votre logement est vide. Elles reçoivent toutes les données en provanance des applications gateways par le protocole xPL, et émettent leurs ordres vers ces mêmes gateways, toujours en utilisant le protocole xPL.</p>
<p><strong>Le HUB</strong> : Comme son nom l&#8217;indique c&#8217;est un élément indispensable d&#8217;un réseau xPL. La présence d&#8217;un HUB est obligatoire sur chacun des ordinateurs faisant tourner une ou plusieurs applications xPL. Le HUB ne contient aucune intelligence de contrôle, mais lui qui sera chargé de l&#8217;acheminement des messages xPL vers leur application destinataire.</p>
<h2>Techniquement :</h2>
<p>Les transmissions du protocole xPL se font en Broadcast UDP. Les applications émettent elles-même leurs messages sur le réseau, et le HUB répartit ensuite les messages à leurs destinataires.<br />
Dans le principe de fonctionnement, TOUTES les applications reçoivent TOUS les messages, y compris ceux qu&#8217;elles ont elles-même envoyé.<br />
Le HUB maintient une liste des applications qui lui sont connectées : Dès qu&#8217;il recoit un message, il enregistre l&#8217;application dans sa liste.</p>
<h1>Portabilité</h1>
<p>C&#8217;est également là toute la puissance d&#8217;un protocole ouvert et simple : il existe des applications xPL pour tous les OS les plus utilisés : Windows, Linux, MacOS. Vous pouvez donc avoir des ordinateurs sous différents OS dans un même réseau xPL, ceux-ci se comprendront très bien.<br />
Il existe notamment des toolkit pour les languages C, perl et java ce qui assure un bonne base d&#8217;interopérabilité.</p>
<h2>Et dans la réalité alors ?</h2>
<p>Je commence juste à explorer les possibilités de ce protocole, mais, lorsque l&#8217;on construit son propre système domotique, en développant ses propres modules, ce protocole est très utile car il permet de tout centraliser simplement et sans perdre de temps.<br />
De nombreuses applications existent déjà (certains sont stables et d&#8217;autres moins ceci dit) et m&#8217;ont permis de mettre la majorité de mes équipements domotique sur le réseau xPL sans trop de difficulté :</p>
<ul>
<li>Tous mes capteurs environnementaux (température + hygro) Oregon Scientific via le récepteur RFXCom</li>
<li>La consommation électrique de mon logement avec la console CurrentCost Envi</li>
<li>Les automatismes via une interface CM11 pour le X10</li>
<li>Les commandes X10 sans fil (télécommandes et détecteurs de mouvements) via le RFXCom</li>
</ul>
<p>Le tout grâce à la suite logicielle <a href="http://www.xpl-perl.org.uk/" target="_blank">xpl-perl de Mark Hindess</a> qui contient tous les composants necessaires, et sous Linux évidemment (ubuntu karmic pour être précis)</p>
<p>La première chose que j&#8217;ai faite c&#8217;est de configurer le module pour archiver les données des capteurs dans une base RRD, ce qui permet facilement ensuite de produire des graphes de tous les capteurs de système (et quelle que soit leur technologie =&gt; xPL power). Par exemple, les temperatures et la consommation electrique :</p>
<p><a href="http://www.poulpy.com/wp-content/uploads/2010/02/xpltemps.png"><img class="alignnone size-full wp-image-8" title="xPL Temperatures" src="http://www.poulpy.com/wp-content/uploads/2010/02/xpltemps.png" alt="" width="358" height="150" /> </a><a href="http://www.poulpy.com/wp-content/uploads/2010/02/xplelec.png"><img class="alignnone size-full wp-image-9" title="xplelec" src="http://www.poulpy.com/wp-content/uploads/2010/02/xplelec.png" alt="" width="358" height="134" /></a></p>
<p>Par contre clairement il y a eu un peu de bidouille pour que tout marche bien. Exemples de petites déconvenues necessitant bidouille :</p>
<ul>
<li>Le module CurrentCost semble remonter des indicateurs en Ampères (alors que je voulais grapher des Watts) =&gt; Opérations à faire sur la valeur au niveau du graphage</li>
<li>L&#8217;inteface X10 CM15A (ou CM15 Pro) n&#8217;est actuellement pas supportée les applications xPL existantes. Du coup je suis en train d&#8217;en écrire une en me basant sur les travaux déjà faits sur le fonctionnement de cette interface sous linux (<a href="http://www.linuxha.com/USB/cm15a.html">http://www.linuxha.com/USB/cm15a.html</a>)</li>
<li>Les bases RRD créées automatiquement n&#8217;étaient pas assez détaillées par rapport à ce que je voulais =&gt; modification à faire dans les fichiers RRD (via rrdresize pour agrandir le nombre d&#8217;échantillons conservés dans chaque RRA)</li>
<li>Le système de lancement automatique des différentes applications livrées dans le package xpl-perl ne fonctionnait pas sous karmic (ou alors j&#8217;ai pas réussi à le faire fonctionner) du coup j&#8217;ai juste fait un simple script d&#8217;init classique)</li>
</ul>
<p>Voilou pour les premières armes sur xPL. Je donnerai probablement des nouvelles bientot (notamment pour le module CM15A).</p>
<h2>Quelques liens à visiter</h2>
<ul>
<li>Page officielle xPL Project &#8211; <a href="http://xplproject.org.uk" target="_blank">http://xplproject.org.uk</a></li>
<li>Domogik : système domotique complet utilisant le xPL <a href="http://www.domogik.org/" target="_blank">http://www.domogik.org/</a></li>
<li>xPL Perl : suite d&#8217;applications xPL en perl <a href="http://www.xpl-perl.org.uk/" target="_blank">http://www.xpl-perl.org.uk/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.poulpy.com/2010/02/xpl-one-protocol-to-rule-them-all/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
