<?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>JoPa.Fr &#187; Bidouilles</title>
	<atom:link href="http://www.jopa.fr/index.php/category/bidouilles/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jopa.fr</link>
	<description>001100010BIDOUILLE11101010111100010LIBRE1000100111100101</description>
	<lastBuildDate>Tue, 10 Jan 2012 21:59:31 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Frontview, t&#8217;es mou ! (ou comment booster l&#8217;interface Web de son ReadyNAS)</title>
		<link>http://www.jopa.fr/index.php/2011/08/23/frontview-lent-readynas-ssl-boost/</link>
		<comments>http://www.jopa.fr/index.php/2011/08/23/frontview-lent-readynas-ssl-boost/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 21:34:39 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=2626</guid>
		<description><![CDATA[Il y a maintenant un bon bout, je m&#8217;étais laissé tenter par des petits NAS de chez Netgear : les ReadyNAS Duo&#8230; Leur faible encombrement, la possibilité d&#8217;y monter deux disques en Raid, le grand panel de fonctionnalités d&#8217;origine, la possibilité d&#8217;ajouter des plugins  et surtout, le fait qu&#8217;ils tournent sur une Debian, m&#8217;avaient séduit. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2011/08/netgear.jpg"><img class="alignleft size-full wp-image-2642" title="netgear" src="http://www.jopa.fr/wp-content/uploads/2011/08/netgear.jpg" alt="" width="294" height="280" /></a>Il y a maintenant un bon bout, je m&#8217;étais laissé tenter par des petits <a title="NAS" href="http://fr.wikipedia.org/wiki/Stockage_en_r%C3%A9seau_NAS">NAS</a> de chez <a title="Readynas" href="http://www.readynas.com/?cat=3">Netgear </a>: les <a title="ReadyNas Duo" href="http://www.readynas.com/?cat=3">ReadyNAS Duo</a>&#8230; Leur faible encombrement, la possibilité d&#8217;y monter deux disques en Raid, le grand panel de fonctionnalités d&#8217;origine, la possibilité d&#8217;ajouter des plugins  et surtout, le fait qu&#8217;ils tournent sur une Debian, m&#8217;avaient séduit.</p>
<p style="text-align: justify;">Leur interface d&#8217;administration Web, nommée <em>&laquo;&nbsp;Frontview&nbsp;&raquo;</em> est accessible en <a title="HTTPS" href="http://en.wikipedia.org/wiki/HTTP_Secure"><em>HTTPS</em></a>, ce qui, au premier abord, semble être une très bonne chose&#8230; Oui, mais voilà, le petit processeur &laquo;&nbsp;<em>infrant</em>&nbsp;&raquo; <em>- architecture sparc -</em>, qu&#8217;ils intègrent, est aussi efficace pour les traitements arithmétiques (et donc les fonctions de chiffrement <a title="SSL" href="http://fr.wikipedia.org/wiki/Secure_Sockets_Layer">SSL</a>),  qu&#8217;un moteur de <a title="Peugeot 103" href="http://fr.wikipedia.org/wiki/Peugeot_103">mobylette</a> sur un <a title="A380" href="http://fr.wikipedia.org/wiki/Airbus_A380">Airbus A380</a>. Résultat, même avec un <em>pot polini</em>  et <em>un carbu 14</em>, rien à faire, ça ne décolle pas.  C&#8217;est mou&#8230;c&#8217;est très mou, c&#8217;est très très mou !  J&#8217;ai résisté tant que j&#8217;ai pu, n&#8217;effectuant en somme que très peu de manipulations via cette interface, mais aujourd&#8217;hui, trop c&#8217;est trop, j&#8217;ai craqué ! Et quand je m&#8217;énerve, je change de couleur, mes proéminents muscles verts déchirent ma chemise et je casse tout sur mon passage.</p>
<p style="text-align: justify;">J&#8217;ai donc commencé par m&#8217;attaquer à un pauvre crayon à papier et quant il a eu son sort (3 morceaux quand même !), je suis passé au serveur <em>WEB</em> de mon ReadyNAS. Mais, reprenant peu à peu ma raison, une couleur humaine et une chemise piquée sur un étendoir voisin, je me suis résigné à juste désactiver la couche <em>SSL</em> du serveur Apache.</p>
<p style="text-align: justify;">Si comme moi, vous ragez, pestez et vociférez contre ce mollasson de <em>Frontview</em>, voici comment lui redonner un peu de <em>peps</em>, au détriment d&#8217;une bonne dose de sécurité, bien malheureusement. Qu&#8217;on se le dise, tout de même, si il avance beaucoup mieux après, il ne décolle quand même pas&#8230; Un moteur de mobylette reste un moteur de mobylette.</p>
<p style="text-align: left;"><span id="more-2626"></span></p>
<p style="text-align: center;"><a href="http://www.jopa.fr/wp-content/uploads/2011/08/ecran.png"><img class="size-full wp-image-2645 aligncenter" title="ecran" src="http://www.jopa.fr/wp-content/uploads/2011/08/ecran.png" alt="" width="518" height="413" /></a></p>
<p style="text-align: justify;">La première chose à faire, si ce n&#8217;est pas déjà fait, est d&#8217;installer de quoi se connecter en <em>ssh</em> sur la bête (enfin, le veau, pour être plus précis). Il faut pour cela le plugin : <a title="Plugin" href="http://www.readynas.com/?p=4203">Enable Root SSH Access</a> (<em>version Sparc dans mon cas</em>).</p>
<p style="text-align: justify;">Le plugin s&#8217;installe par la voie normale : <em>Menu système, Mise à jour &#8211; Installation, Image Locale &#8211; Module</em>.</p>
<p style="text-align: justify;">Ce module installé et le <em>Nas</em> redémarré, l&#8217;accès <em>SSH</em> est ouvert et le mot de passe root synchronisé avec celui du compte &laquo;&nbsp;Admin&nbsp;&raquo; utilisé pour se connecter à Frontview.</p>
<p> Il suffit ensuite de se connecter, par ssh donc, pour modifier la configuration d&#8217;Apache.</p>
<p>Le fichier de configuration en question est :</p>
<p>/<strong>etc/frontview/apache/httpd.conf</strong></p>
<ul>
<li>Rechercher la ligne &laquo;&nbsp;Listen 443 &nbsp;&raquo; , la commenter, ainsi que tout le bloc de configuration SSL suivant,</li>
<li>Rechercher la ligne &laquo;&nbsp;include /etc/frontview/apache/Virtual.conf&nbsp;&raquo;  et la commenter (le fichier virtual.conf contient juste une directive de réécriture d&#8217;URL pour rediriger les requêtes <em>http</em> vers du <em>https</em>).</li>
</ul>
<p><strong> Extrait :</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2626code2'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p26262"><td class="code" id="p2626code2"><pre class="ini" style="font-family:monospace;">...
&nbsp;
# Listen <span style="">443</span>
# SSLEngine On
# SSLSessionCache dbm:/ramfs/gcache.db
# SSLSessionCacheTimeout <span style="">600</span>
# SSLCACertificatePath /etc/frontview/apache
# SSLCertificateFile /etc/frontview/apache/apache.pem
&nbsp;
...
&nbsp;
Include /etc/frontview/apache/Ports.conf
# Include /etc/frontview/apache/Virtual.conf
Include /etc/frontview/apache/addons/*.conf
Include /etc/frontview/apache/Shares.conf</pre></td></tr></table></div>

<p>Un petit reboot du NAS et l&#8217;interface devrait être accessible en http. (si quelqu&#8217;un peut m&#8217;expliquer comment redémarrer Apache/Frontview sans redémarrer tout le NAS, je suis preneur, j&#8217;avoue ne pas avoir cherché et n&#8217;ai pas trop étudié les scripts de démarrage sur ce type de machine).</p>
<p>Pour conclure, la manipulation telle que décrite, doit fonctionner sur tous les ReadyNAS; mais je n&#8217;ai pas testé d&#8217;autres modèles.</p>
<p><strong>Bien évidemment, désactiver <em>https</em> si vous utilisez le NAS depuis Internet ou ailleurs qu&#8217;à la maison n&#8217;est vraiment pas une bonne idée.<br />
</strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2011/08/23/frontview-lent-readynas-ssl-boost/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Heyu, X10 (domotique)</title>
		<link>http://www.jopa.fr/index.php/2010/07/03/heyu-x10-domotique-maison/</link>
		<comments>http://www.jopa.fr/index.php/2010/07/03/heyu-x10-domotique-maison/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 19:28:15 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Domotique]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[X10]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=2035</guid>
		<description><![CDATA[Il y a longtemps que je souhaitais écrire un billet sur la domotique et ainsi, faire partager ma première expérience de &#171;&#160;Geek propriétaire&#171;&#160;.  En effet, l&#8217;une des premières choses que j&#8217;ai bricolée dans ma maison, il y a maintenant quelques années, a été l&#8217;ajout d&#8217;un poil d&#8217;automatisation.  Un projet personnel pour agrémenter mon petit confort [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/x10tux.jpg"><img class="alignleft size-full wp-image-2039" title="x10tux" src="http://www.jopa.fr/wp-content/uploads/2010/06/x10tux.jpg" alt="" width="300" height="248" /></a>Il y a longtemps que je souhaitais écrire un billet sur la domotique et ainsi, faire partager ma première expérience de &laquo;&nbsp;<em>Geek propriétaire</em>&laquo;&nbsp;.  En effet, l&#8217;une des premières choses que j&#8217;ai bricolée dans ma maison, il y a maintenant quelques années, a été l&#8217;ajout d&#8217;un poil d&#8217;automatisation.  Un projet personnel pour agrémenter mon petit confort et surtout, je dois bien l&#8217;avouer, prendre un pied monstrueux en bidouillant à l&#8217;échelle d&#8217;une maison&#8230;</p>
<p style="text-align: justify;">Le but, ici, n&#8217;est pas de fournir un dossier détaillé, mais plutôt de faire un témoignage ou donner un retour d&#8217;expérience sur ce que peut-être l&#8217;amusante mise en place d&#8217;une petite solution de <em>domotique</em>.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">L&#8217;idée de départ était de pouvoir faire des choses relativement simples, telles que :</p>
<ul style="text-align: justify;">
<li>Fermer les volets, couper l&#8217;alimentation de certains appareils au lieu de les laisser en veille ( TV, ampli, moniteurs, imprimantes) et éteindre les lumières lorsque l&#8217;alarme est activée,</li>
<li>Faire l&#8217;opération inverse lorsque l&#8217;alarme est désactivée,</li>
<li>Allumer automatiquement certaines lumières à la tombée du jour,</li>
<li>Ouvrir automatiquement les volets le matin en guise de réveil,</li>
<li style="text-align: justify;">Mettre automatiquement en marche mon serveur de sauvegardes chaque nuit et l&#8217;éteindre une fois les backups terminés,</li>
<li style="text-align: justify;">etc&#8230;</li>
</ul>
<p style="text-align: justify;">Cette installation, en plus du respect évident <a href="http://fr.wikipedia.org/wiki/Trois_lois_de_la_robotique">des trois lois de la robotique</a>, se devait de ne pas négliger le <a href="http://en.wikipedia.org/wiki/Wife_acceptance_factor">WAF (Woman Acceptance Factor)</a>. En bref, une simplicité maximale d&#8217;utilisation et le moins d&#8217;aléas possible &#8211; Hors de question, pour la pérennité du projet,  que la TV s&#8217;éteigne par &laquo;&nbsp;accident&nbsp;&raquo; en plein dénouement d&#8217;un épisode des &laquo;&nbsp;Experts&nbsp;&raquo; , la série préférée de Maman&#8230;</p>
<p style="text-align: justify;"><span id="more-2035"></span></p>
<h1 style="text-align: justify;">1 &#8211; Une norme et du matériel,</h1>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">Pour mener à bien ce projet, j&#8217;ai utilisé la technologie courant porteur <a href="http://fr.wikipedia.org/wiki/X10_%28informatique%29">X10</a>&#8230; Un système qui n&#8217;est plus tout jeune (1975), mais qui a le mérite d&#8217;être simple à mettre en oeuvre, toujours fonctionnel et pas trop cher (enfin&#8230; tout est relatif).</p>
<p style="text-align: justify;">Il existe deux principaux types de modules : les  contrôleurs et les récepteurs. Le système X10 utilise le réseau électrique existant pour diffuser des trames aux différents modules. Les trames sont structurées avec une partie adresse et une partie commande (ou ordre).</p>
<p style="text-align: justify;">Une adresse <em>X10</em> est composée :</p>
<ul>
<li>d&#8217;un code maison, sur 4 bits, de A à P,</li>
<li> et d&#8217;un code appareil, sur 4 bits également,  de 1 à 16.</li>
</ul>
<p style="text-align: justify;">Comme nous sommes sur un principe de diffusion, nous pouvons configurer plusieurs modules avec la même adresse &#8211; tous les récepteurs voient passer les trames, mais n&#8217;exécutent l&#8217;ordre que si l&#8217;adresse leur correspond.</p>
<p style="text-align: justify;">Ci-dessous, la liste non exhaustive des  ordres qui peuvent être transmis :</p>
<ul style="text-align: justify;">
<li>Marche (ON), Arrêt (OFF),</li>
<li>Variation croissante (BRIGHT + Valeur), variation décroissante (DIM + Valeur),</li>
<li>Toutes les lumières allumées (ALL LIGHTS ON) ou éteintes (ALL LIGHTS OFF),</li>
<li>Tout allumé, sans distinction du type d&#8217;appareil (ALL ON) ou tout éteint (ALL OFF).</li>
</ul>
<h2 style="text-align: justify;">Récepteurs (exemples) :</h2>
<p style="text-align: justify;">Les récepteurs, comme leur nom l&#8217;indique, vont être réceptifs aux ordres X10 pour effectuer l&#8217;action commandée. Le tableau ci-dessous présente quelques exemples de matériels :</p>
<p style="text-align: justify;">
<table id="wp-table-reloaded-id-2-no-1" class="wp-table-reloaded wp-table-reloaded-id-2">
<tbody>
	<tr class="row-1">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_appareil_lampe.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_appareil_lampe.png" alt="" title="module_appareil_lampe" width="110" height="107" class="aligncenter size-full wp-image-2068" /></a></td><td class="column-2">Module Appareil : Se connecte entre la prise et l'appareil. Est capable d'interpréter des ordres ON et OFF.</td>
	</tr>
	<tr class="row-2">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_appareil_lampe1.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_appareil_lampe1.png" alt="" title="module_appareil_lampe" width="110" height="107" class="aligncenter size-full wp-image-2069" /></a></td><td class="column-2">Module lampe : Identique au module appareil, mais ne supporte pas des intensités élevées. Il est toutefois capable de gérer des commandes supplémentaires  (DIM / BRIGHT) .</td>
	</tr>
	<tr class="row-3">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_douille.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_douille.png" alt="" title="module_douille" width="110" height="107" class="aligncenter size-full wp-image-2070" /></a></td><td class="column-2">Module lampe (douille) : S'insère entre l'ampoule et la douille d'origine.</td>
	</tr>
	<tr class="row-4">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_mural.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_mural.png" alt="" title="module_mural" width="110" height="107" class="aligncenter size-full wp-image-2071" /></a></td><td class="column-2">Module mural : remplace un interrupteur. Existe en version variateur ou 3 positions pour volets roulants ou stores.</td>
	</tr>
	<tr class="row-5">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_micro.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_micro.png" alt="" title="module_micro" width="110" height="107" class="aligncenter size-full wp-image-2072" /></a></td><td class="column-2">Micro module : se positionne derrière un interrupteur existant (dans la boite d'encastrement).</td>
	</tr>
	<tr class="row-6">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_rack.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_rack.png" alt="" title="module_rack" width="110" height="107" class="aligncenter size-full wp-image-2073" /></a></td><td class="column-2">Module rackable : Prend place directement au niveau du tableau électrique.</td>
	</tr>
</tbody>
</table>
</p>
<p style="text-align: justify;">
<h2 style="text-align: justify;">Contrôleurs (exemples) :</h2>
<p>Les contrôleurs sont capables de générer des trames X10 sur le réseau.</p>

<table id="wp-table-reloaded-id-3-no-1" class="wp-table-reloaded wp-table-reloaded-id-3">
<tbody>
	<tr class="row-1">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/cm11.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/cm11.png" alt="" title="cm11" width="110" height="107" class="aligncenter size-full wp-image-2077" /></a></td><td class="column-2">Le CM11 est le module indispensable. Connecté au port série ou usb d'un ordinateur, il va nous permettre de communiquer avec le réseau X10. Il est capable de recevoir ou d'envoyer des trames X10. Il est programmable, pour un fonctionnement ordinateur éteint.<br />
Ce modèle est apparemment obsolète et remplacé par le CM15.</td>
	</tr>
	<tr class="row-2">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/module_radio.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/module_radio.png" alt="" title="module_radio" width="110" height="107" class="aligncenter size-full wp-image-2078" /></a></td><td class="column-2">Le module radio permet de transformer des ordres RF, émis depuis une télécommande ou un capteur sans fil en ordre X10.</td>
	</tr>
	<tr class="row-3">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/detecteur_presence.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/detecteur_presence.png" alt="" title="detecteur_presence" width="110" height="107" class="aligncenter size-full wp-image-2079" /></a></td><td class="column-2">Un exemple de détecteur sans fil. Il joue le rôle de détecteur de présence,  mais aussi  d'obscurité.</td>
	</tr>
	<tr class="row-4">
		<td class="column-1"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/alarme.png"><img src="http://www.jopa.fr/wp-content/uploads/2010/06/alarme.png" alt="" title="alarme" width="110" height="107" class="aligncenter size-full wp-image-2108" /></a></td><td class="column-2">Centrale d'alarme X10 capable de générer des ordres X10 en fonction d'évènements :<br />
Armement, désarmement, déclenchement, etc...<br />
Elle peut également servir de console de commande X10.</td>
	</tr>
</tbody>
</table>

<p style="text-align: justify;">
<h1 style="text-align: justify;">2 &#8211; Des logiciels,</h1>
<h2 style="text-align: justify;">MisterHouse</h2>
<p style="text-align: center;"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/misterHouse.jpg"><img class="aligncenter size-full wp-image-2139" title="misterHouse" src="http://www.jopa.fr/wp-content/uploads/2010/06/misterHouse.jpg" alt="" width="462" height="329" /></a></p>
<p style="text-align: justify;"><strong><a href="http://misterhouse.sourceforge.net/" target="_blank">MisterHouse</a></strong> est probablement le<strong> </strong>projet le plus complet de <em>domotique</em> libre.</p>
<ul style="text-align: justify;">
<li>Il supporte des matériels allant bien au-delà du X10,</li>
<li>Est capable d&#8217;exécuter des actions basées sur de la reconnaissance vocale, des évènements horaires, réseaux, matériels, etc&#8230;,</li>
<li>Dispose d&#8217;une interface web,</li>
<li>Couplé à un magnétoscope numérique (VCR), permet la programmation d&#8217;enregistrements,</li>
<li>S&#8217;interface avec les mails, le téléphone,</li>
<li>Gère des caméras de surveillance,</li>
<li>Produit de la synthèse vocale,</li>
<li>etc&#8230;etc&#8230;etc&#8230;</li>
</ul>
<p style="text-align: justify;">Bref, du lourd, du trop lourd pour un démarrage en douceur&#8230; Je voulais bricoler avec mes petites mimines et là, c&#8217;était vraiment trop d&#8217;un coup&#8230;</p>
<h2 style="text-align: justify;">ControlX1O::CM11</h2>
<p style="text-align: justify;"><em>ControlX10::CM11</em> est la librairie <em>Perl</em> MisterHouse utilise pour la gestion du X10. Elle est relativement facile à utiliser.  Je m&#8217;en suis servi pour coder un petit utilitaire, &laquo;&nbsp;<em>TuX10</em>&laquo;&nbsp;, qui permettait de gérer des modules X10, d&#8217;envoyer et recevoir des trames, le tout en ligne de commandes. Après avoir &laquo;&nbsp;pissé&nbsp;&raquo; un bon nombre de lignes et mon programme quasi finalisé, j&#8217;ai découvert &laquo;&nbsp;<em>Heyu</em>&laquo;&nbsp;, qui fait la même chose&#8230;.Mais en mieux&#8230; Ce n&#8217;est pas grave, un peu de code aide souvent à comprendre pas mal de choses&#8230;</p>
<h2 style="text-align: justify;">Heyu</h2>
<p style="text-align: justify;">Heyu est donc un utilitaire, qui fait la même chose que TuX10, mais en mieux <img src='http://www.jopa.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Ils s&#8217;utilise, dans un usage courant, de la façon suivante :</p>
<pre style="text-align: justify;"><span style="color: #800000;"># heyu &lt;Commande&gt; &lt;Module&gt;</span></pre>
<p style="text-align: justify;">Par exemple, dans l&#8217;hypothèse ou la lumière de mon salon est adressé &laquo;&nbsp;A1&#8243;,</p>
<p style="text-align: justify;">Pour l&#8217;allumer :</p>
<pre style="text-align: justify;"><span style="color: #800000;"># heyu ON A1</span></pre>
<p style="text-align: justify;">Pour l&#8217;éteindre :</p>
<pre style="text-align: justify;"><span style="color: #800000;"># heyu OFF A1</span></pre>
<p style="text-align: justify;">Pour l&#8217;allumer avec un variation à 50% (le niveau doit être donné entre 1 et 22) :</p>
<pre style="text-align: justify;"><span style="color: #800000;"># heyu DIMB A1 11</span></pre>
<p style="text-align: justify;">C&#8217;est très pratique pour allumer un appareil à heure fixe à l&#8217;aide d&#8217;un simple cron&#8230;</p>
<p style="text-align: justify;">Exemple : allumage de mon serveur de sauvegardes, qui porte l&#8217;adresse &laquo;&nbsp;C1&#8243;, tous les jours à 23H00 :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code16'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203516"><td class="code" id="p2035code16"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># CRONTAB</span>
00   <span style="color: #000000;">23</span>   <span style="color: #000000; font-weight: bold;">*</span>    <span style="color: #000000; font-weight: bold;">*</span>    <span style="color: #000000; font-weight: bold;">*</span>   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu ON C1</pre></td></tr></table></div>

<p style="text-align: justify;"><em>Heyu</em> dispose d&#8217;une multitude de commandes et d&#8217;options. Nous en verrons quelques unes dans la suite, pour le reste :</p>
<pre><span style="color: #800000;"># heyu help</span></pre>
<pre><span style="color: #808080;">ou de façon plus classique :</span></pre>
<pre><span style="color: #800000;"># man heyu</span></pre>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<h1 style="text-align: justify;">3 &#8211; Un scénario,</h1>
<h2 style="text-align: justify;">Les modes de fonctionnement</h2>
<p style="text-align: justify;">J&#8217;ai imaginé trois modes de fonctionnement , en fonction de ma présence et de mon activité dans la maison : Les modes &laquo;&nbsp;présence&nbsp;&raquo;, &laquo;&nbsp;sommeil&nbsp;&raquo; et &laquo;&nbsp;absence&nbsp;&raquo;.</p>
<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/X10_modes1.png"><img class="size-full wp-image-2050   aligncenter" title="X10_modes" src="http://www.jopa.fr/wp-content/uploads/2010/06/X10_modes1.png" alt="" width="485" height="343" /></a></p>
<p style="text-align: justify;"><strong>Le mode &laquo;&nbsp;Présence&nbsp;&raquo;</strong></p>
<p style="text-align: justify;">C&#8217;est le mode de fonctionnement normal, quand je suis à la maison.</p>
<ul style="text-align: justify;">
<li>Il est déclenché par l&#8217;arrêt de l&#8217;alarme ou un signal de réveil,</li>
<li>Tous les appareils sont sous tension (TV, Hifi, matériel informatique, etc&#8230;),</li>
<li>Les volets sont ouverts,</li>
<li>La lumière du séjour s&#8217;allume automatiquement quand la nuit tombe et s&#8217;éteint quand le jour se lève &#8211; classe !</li>
</ul>
<p style="text-align: justify;"><strong>Le mode &laquo;&nbsp;Sommeil&nbsp;&raquo;</strong></p>
<p style="text-align: justify;">Ce mode est actif pendant la nuit, quand je dors&#8230;</p>
<ul style="text-align: justify;">
<li>Activé manuellement via une télécommande ou la console (Signal Réveil OFF),</li>
<li>Les appareils ne sont plus alimentés,</li>
<li>Les volets fermés,</li>
<li>Les lumières éteintes,</li>
<li>La lumière du séjour/cuisine s&#8217;allume à 50% quand une présence est détectée :  Juste ce qu&#8217;il faut pour y voir suffisamment lors des excursions nocturnes près du frigo. Cette attention permet de ne pas être éblouis et de reprendre tranquillement sa nuit après le casse-croute&#8230; c&#8217;est important !</li>
<li>Ce mode peut-être désactivé par un signal de réveil manuel ou automatique, pour passer en mode &laquo;&nbsp;Présence&nbsp;&raquo; (Signal Réveil ON).</li>
<li>Le passage en mode &laquo;&nbsp;présence&nbsp;&raquo; est déclenché automatiquement tous les jours de la semaine à 6h30, pour bénéficier d&#8217;un doux réveil à la lumière du jour. ( Nda : Penser à ajouter un mode &laquo;&nbsp;vacances&nbsp;&raquo;&#8230;c&#8217;est tôt 6h30 quand on est en RTT !)</li>
</ul>
<p style="text-align: justify;"><strong>Le mode &laquo;&nbsp;Absence&nbsp;&raquo;</strong></p>
<ul style="text-align: justify;">
<li>Déclenché par la mise en marche de l&#8217;alarme,</li>
<li>Identique au mode précédent, mais le seul ordre X10 pris en compte est l&#8217;arrêt de l&#8217;alarme pour le passage en mode &laquo;&nbsp;Présence&nbsp;&raquo;.</li>
</ul>
<p>En clair, on attend juste que l&#8217;alarme soit désactivée.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<h1>4 &#8211; Et du bricolage&#8230;</h1>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">Cher lecteur, si tu as tenu jusque là, c&#8217;est le moment où nous allons mettre les mains dans le cambouis&#8230; L&#8217;expression est d&#8217;usage, mais c&#8217;est plutôt dans le placo que se logent les petits bidules X10&#8230; Mais ne nous égarons pas&#8230;.</p>
<p style="text-align: justify;">Commençons par un petit état de ces différents bidules équipant la maison.</p>
<h2>Les éléments X10 utilisés et leur adresse :</h2>

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Adresse X10</th><th class="column-2">Type de module</th><th class="column-3">Description</th><th class="column-4">Ordre ON</th><th class="column-5">Ordre OFF</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">A1</td><td class="column-2">Module  Lampe</td><td class="column-3">Eclairage Séjour</td><td class="column-4">Allume les lampes du séjour</td><td class="column-5">Eteint les lampes du séjour</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">A4</td><td class="column-2">Module Appareil</td><td class="column-3">Matériel Informatique (Imprimantes, Moniteurs...)</td><td class="column-4">Alimente les appareils</td><td class="column-5">Coupe l'alimentation</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">A5</td><td class="column-2">Module Appareil</td><td class="column-3">Matériel Hifi (TV, Ampli, etc...)</td><td class="column-4">Alimente les appareils</td><td class="column-5">Coupe l'alimentation</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">A7</td><td class="column-2">Module volets roulants</td><td class="column-3">Volets roulants zone jour<br />
(séjour, cuisine)</td><td class="column-4">Ouvre les volets</td><td class="column-5">Ferme les volets</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">A8</td><td class="column-2">Module volets roulants</td><td class="column-3">Volets roulants zone nuit (chambres)</td><td class="column-4">Ouvre les volets</td><td class="column-5">Ferme les volets</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">A9</td><td class="column-2">Signal</td><td class="column-3">Signal de passage mode présence / mode sommeil</td><td class="column-4">Signal de réveil</td><td class="column-5">Indique que je vais me coucher</td>
	</tr>
	<tr class="row-8 even">
		<td class="column-1">A10</td><td class="column-2">Détecteur de mouvements</td><td class="column-3">Détecteur de mouvements Bureau</td><td class="column-4">ON est envoyé quand un mouvement est détecté</td><td class="column-5">OFF est envoyé quand aucun mouvement n'est détecté depuis plus de 2 minutes</td>
	</tr>
	<tr class="row-9 odd">
		<td class="column-1">A11</td><td class="column-2">Détecteur d'obscurité</td><td class="column-3">Détecteur de d'obscurité Bureau</td><td class="column-4">Envoyé quand il fait sombre dans le bureau</td><td class="column-5">Envoyé quand il fait jour dans le bureau</td>
	</tr>
	<tr class="row-10 even">
		<td class="column-1">A12</td><td class="column-2">Détecteur de mouvements</td><td class="column-3">Détecteur de mouvements séjour</td><td class="column-4">ON est envoyé quand un mouvement est détecté</td><td class="column-5">OFF est envoyé quand aucun mouvement n'est détecté depuis plus de 2 minutes</td>
	</tr>
	<tr class="row-11 odd">
		<td class="column-1">A13</td><td class="column-2">Détecteur d'obscurité</td><td class="column-3">Détecteur d'obscurité séjour</td><td class="column-4">Envoyé quand il fait sombre dans le séjour</td><td class="column-5">Envoyé quand il fait jour dans le séjour</td>
	</tr>
	<tr class="row-12 even">
		<td class="column-1">B1</td><td class="column-2">Signal</td><td class="column-3">Mode nuit</td><td class="column-4">Envoyé quand le système passe en mode nuit</td><td class="column-5">Envoyé quand le système passe en mode jour</td>
	</tr>
	<tr class="row-13 odd">
		<td class="column-1">B3</td><td class="column-2">Signal</td><td class="column-3">Mode Absence</td><td class="column-4">Envoyé quand l'alarme est armée</td><td class="column-5">Envoyé quand l'alarme est désarmée</td>
	</tr>
	<tr class="row-14 even">
		<td class="column-1">C1</td><td class="column-2">Module appareil</td><td class="column-3">Serveur de sauvegardes</td><td class="column-4">Allume le serveur de sauvegardes</td><td class="column-5">Arrête le serveur de sauvegardes</td>
	</tr>
	<tr class="row-15 odd">
		<td class="column-1">D1</td><td class="column-2">Flag</td><td class="column-3">Flag Nuit</td><td class="column-4">Est positionné à ON au couché du soleil</td><td class="column-5">Est positionné à OFF au levé du soleil</td>
	</tr>
</tbody>
</table>

<h2 style="text-align: justify;">Configuration générale :</h2>
<p style="text-align: justify;">Ma première idée était de charger la totalité des règles et des macros dans le <em>CM11</em>, pour que le système puisse fonctionner de façon autonome, y compris quand l&#8217;ordinateur est éteint. Cependant, j&#8217;ai vite changé d&#8217;avis&#8230; La rom du CM11 est d&#8217;une taille plutôt limité et on s&#8217;arrache vite les cheveux à gérer des tests qui disparaissent en segmentant un peu les choses. Comme de toute façon, l&#8217;ordinateur n&#8217;est jamais éteint, j&#8217;ai fini par utiliser un fichier de macros par mode. Le bon fichier est uploadé lors d&#8217;un changement d&#8217;état.</p>
<p style="text-align: center;"><a href="http://www.jopa.fr/wp-content/uploads/2010/06/X10_modes2.png"><img class="aligncenter size-full wp-image-2112" title="X10_modes2" src="http://www.jopa.fr/wp-content/uploads/2010/06/X10_modes2.png" alt="" width="531" height="364" /></a></p>
<p style="text-align: justify;">Attaquons la configuration de base de <em>heyu</em>. Le fichier <strong>/etc/heyu/x10.conf </strong> permet de spécifier le port à utiliser pour l&#8217;accès au CM11, un code maison par défaut, de déclarer des alias pour les modules (ce n&#8217;est pas obligatoire) et enfin d&#8217;affecter l&#8217;exécution de scripts à des évènements.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code17'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203517"><td class="code" id="p2035code17"><pre class="ini" style="font-family:monospace;"># /etc/heyu/x10.conf - Fichier de configuration HEYU
&nbsp;
# Port série à utiliser :
TTY  /dev/ttyS0
&nbsp;
# Code maison par défaut
HOUSECODE A
&nbsp;
# Fichier de LOGs
LOG_DIR /var/log/
&nbsp;
# Nom du fichier contenant les macros à uploader
SCHEDULE_FILE x10.sched</pre></td></tr></table></div>

<p style="text-align: justify;">Le système est capable de calculer les heures de couché et de levé du soleil en fonction de la date et de la position géographique.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code18'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203518"><td class="code" id="p2035code18"><pre class="ini" style="font-family:monospace;"># Nombre de jours à calculer
PROGRAM_DAYS           <span style="">366</span>
&nbsp;
# Position Géographique
LONGITUDE   E1:<span style="">30</span>
LATITUDE     N43:<span style="">30</span>
&nbsp;
# Mode de calcul
DAWN_OPTION FIRST
DUSK_OPTION  FIRST</pre></td></tr></table></div>

<p>Il est également possible de définir des alias&#8230;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code19'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203519"><td class="code" id="p2035code19"><pre class="ini" style="font-family:monospace;"># ALIAS
&nbsp;
ALIAS  lampe_sejour       A1   StdLM
ALIAS  halogene           A2   StdLM
ALIAS  test1              A3   StdAM
ALIAS  test2              A4   StdAM
ALIAS  hifi               A5   StdAM
&nbsp;
ALIAS  vr_jour            A7   shutter
ALIAS  vr_nuit            A8   shutter
ALIAS  vr                 A7,<span style="">8</span>
&nbsp;
ALIAS  inter_reveil       A9
&nbsp;
ALIAS  mvt_bureau         A10
ALIAS  obs_bureau         A11
ALIAS  mvt_sejour         A12
ALIAS  obs_sejour         A13
&nbsp;
ALIAS   nuit              B1
ALIAS   alarme            B3
&nbsp;
ALIAS  sauvegarde         C1    StdAM
&nbsp;
ALIAS   mode_nuit         D1</pre></td></tr></table></div>

<p style="text-align: justify;">Exécution de scripts sur évènement X10.</p>
<p style="text-align: justify;">Quand l&#8217;ordre &laquo;&nbsp;D1 ON&nbsp;&raquo;, qui signale la tombé de la nuit est détecté sur le réseau, on crée un fichier sur le système, qui permettra de détecter simplement s&#8217;il fait nuit ou pas&#8230; Ce flag est positionné quelque-soit le mode de fonctionnement.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code20'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203520"><td class="code" id="p2035code20"><pre class="ini" style="font-family:monospace;"># Gestion du mode nuit
SCRIPT D1 on anysrc ::  touch /var/tux10/NUIT
SCRIPT D1 off anysrc ::  rm -f /var/tux10/NUIT</pre></td></tr></table></div>

<p>De la même façon, l&#8217;ordre &laquo;&nbsp;A9 OFF&nbsp;&raquo; indique que l&#8217;on souhaite passer en mode &laquo;&nbsp;sommeil&nbsp;&raquo;, &laquo;&nbsp;B3 ON&nbsp;&raquo; en mode &laquo;&nbsp;Absence&nbsp;&raquo; et &laquo;&nbsp;B3 OFF&nbsp;&raquo; ou &laquo;&nbsp;A9 ON&nbsp;&raquo; en mode présence.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code21'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203521"><td class="code" id="p2035code21"><pre class="ini" style="font-family:monospace;"># Gestion du mode sommeil
SCRIPT A9 off anysrc :: /home/heyu/mode_sommeil.sh
SCRIPT A9 on anysrc :: /home/heyu/mode_presence.sh
&nbsp;
# Gestion du mode absence <span style="">&#40;</span>alarme<span style="">&#41;</span>
SCRIPT B3 on anysrc :: /home/heyu/mode_absence.sh
SCRIPT B3 off anysrc :: /home/heyu/mode_presence.sh</pre></td></tr></table></div>

<p><strong>Toujours à l&#8217;heure&#8230;</strong></p>
<p style="text-align: justify;">Pour que tout fonctionne parfaitement, il faut s&#8217;assurer que l&#8217;horloge du CM11 est bien à l&#8217;heure&#8230; Une nouvelle entrée dans la crontab va effectuer une remise à l&#8217;heure régulière grâce à la commande &laquo;&nbsp;setclock&nbsp;&raquo; d&#8217;<strong>heyu</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code22'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203522"><td class="code" id="p2035code22"><pre class="shell" style="font-family:monospace;"># CRONTAB
&nbsp;
00   23   *    *    *   /usr/local/bin/heyu ON C1
00  */6   *    *    *  /usr/local/bin/heyu setclock</pre></td></tr></table></div>

<h2>Le mode &laquo;&nbsp;présence&nbsp;&raquo;</h2>
<p style="text-align: justify;">Comme nous l&#8217;avons vu, ce mode est déclenché soit par désactivation de l&#8217;alarme (<strong>B3 OFF</strong>), soit par un signal de réveil (<strong>A9 ON</strong>).</p>
<p style="text-align: justify;">Sur l&#8217;un de ces évènements, <strong>Heyu</strong> a été précédemment configuré pour lancer le script &laquo;&nbsp;<strong>mode_presence.sh</strong>&laquo;&nbsp;.<br />
Ce dernier envoie les ordres d&#8217;ouverture des volets, de mise sous tension des appareils, allume la lumière s&#8217;il fait nuit et charge les macros de présence dans la rom du CM11.</p>
<p style="text-align: justify;"><strong>mode_presence.sh</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code23'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203523"><td class="code" id="p2035code23"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># mode_presence.sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Ouverture des volets, mise sous tensions des appareils</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu on A4,<span style="color: #000000;">5</span>,<span style="color: #000000;">7</span>,<span style="color: #000000;">8</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Allumer la lumière, si necessaire</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>tux10<span style="color: #000000; font-weight: bold;">/</span>NUIT <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu on A1
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Upload des macros si nécessaire</span>
<span style="color: #c20cb9; font-weight: bold;">cmp</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched.presence <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span><span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched.presence <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu.x10.sched
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu upload
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p style="text-align: justify;">Au niveau des macros, on va juste définir un <em>timer </em>qui gère l&#8217;allumage et l&#8217;extinction automatique des lumières en fonction du jour et de la nuit.</p>
<p><strong>/etc/heyu/x10.sched.presence</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code24'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203524"><td class="code" id="p2035code24"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># x10.sched.presence</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Définition d'un timer tous les jours.</span>
<span style="color: #666666; font-style: italic;"># Lance la macro lum_off à l'aurore,</span>
<span style="color: #666666; font-style: italic;"># La macro lum_on 10 minutes avant le crépuscule.</span>
timer smtwtfs 01<span style="color: #000000; font-weight: bold;">/</span>01-<span style="color: #000000;">12</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">31</span> dawn dusk-<span style="color: #000000;">10</span> lum_off lum_on
&nbsp;
<span style="color: #666666; font-style: italic;"># Macro lum_on - Envoie les ordres A1 ON et D1 ON</span>
macro lum_on <span style="color: #000000;">0</span> on a1; on d1
&nbsp;
<span style="color: #666666; font-style: italic;"># Macro lum_off - Envoie les ordres A1 OFF et D1 OFF</span>
macro lum_off <span style="color: #000000;">0</span> off a1; off d1</pre></td></tr></table></div>

<h2>Le mode &laquo;&nbsp;absence&nbsp;&raquo;</h2>
<p style="text-align: justify;">Ce mode est déclenché par l&#8217;activation de l&#8217;alarme uniquement (<strong>B3 ON</strong>)</p>
<p style="text-align: justify;"><strong>Heyu</strong> est configuré pour exécuter  le script &laquo;&nbsp;<strong>mode_absence.sh</strong>&nbsp;&raquo; lorsque le mode est activé.<br />
Le script envoi les ordres de fermeture des volets, de mise hors tension des appareils, éteint les lumières et charge les macros d&#8217;absence.</p>
<p style="text-align: justify;"><strong>mode_absence.sh</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code25'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203525"><td class="code" id="p2035code25"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># mode_absence.sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Fermeture des volets, mise hors tensions des appareils et de l'éclairage</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu on A1,<span style="color: #000000;">2</span>,<span style="color: #000000;">4</span>,<span style="color: #000000;">5</span>,<span style="color: #000000;">7</span>,<span style="color: #000000;">8</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Upload des macros si nécessaire</span>
<span style="color: #c20cb9; font-weight: bold;">cmp</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched.absence <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span><span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched.absence <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu.x10.sched
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu upload
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p style="text-align: justify;">
<p style="text-align: justify;">Les <em>macros</em> et <em>timers</em> sont  sensiblement identiques à l&#8217;étape précédente. Nous n&#8217;allons gérer que le &laquo;&nbsp;flag&nbsp;&raquo; <strong>D1</strong> indiquant au système s&#8217;il fait jour ou nuit &#8211; Inutile d&#8217;allumer les lumières s&#8217;il n&#8217;y a personne à la maison.</p>
<p style="text-align: justify;"><strong>/etc/heyu/x10.sched.absence</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code26'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203526"><td class="code" id="p2035code26"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># x10.sched.presence</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Définition d'un timer tous les jours.</span>
<span style="color: #666666; font-style: italic;"># Lance la macro lum_off à l'aurore,</span>
<span style="color: #666666; font-style: italic;"># La macro lum_on 10 minutes avant le crépuscule.</span>
timer smtwtfs 01<span style="color: #000000; font-weight: bold;">/</span>01-<span style="color: #000000;">12</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">31</span> dawn dusk-<span style="color: #000000;">10</span> lum_off lum_on
&nbsp;
<span style="color: #666666; font-style: italic;"># Macro lum_on - Envoi l'ordre D1 ON</span>
macro lum_on <span style="color: #000000;">0</span> on d1
&nbsp;
<span style="color: #666666; font-style: italic;"># Macro lum_off - Envoi l'ordre D1 OFF</span>
macro lum_off <span style="color: #000000;">0</span> off d1</pre></td></tr></table></div>

<h2>Le mode &laquo;&nbsp;sommeil&nbsp;&raquo;</h2>
<p style="text-align: justify;">Ce mode est déclenché par l&#8217;envoi de &laquo;&nbsp;<strong>A9 OFF</strong>&laquo;&nbsp;.</p>
<p style="text-align: justify;">Heyu est configuré pour exécuter &laquo;&nbsp;<strong>mode_sommeil.sh</strong>&nbsp;&raquo; lors de l&#8217;entrée dans ce mode.</p>
<p style="text-align: justify;">Le script ferme les volets roulants, coupe l&#8217;alimentation des divers appareils et éteint les lumières. Les macros &laquo;&nbsp;embarqués&nbsp;&raquo; s&#8217;occupent de l&#8217;éclairage interactif du séjour (présence près du frigo) et du réveil.</p>
<p><strong>mode_sommeil.sh</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code27'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203527"><td class="code" id="p2035code27"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># mode_sommeil.sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Fermeture des volets, mise hors tensions des appareils et de l'éclairage</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu on A1,<span style="color: #000000;">2</span>,<span style="color: #000000;">4</span>,<span style="color: #000000;">5</span>,<span style="color: #000000;">7</span>,<span style="color: #000000;">8</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Upload des macros si nécessaire</span>
<span style="color: #c20cb9; font-weight: bold;">cmp</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched.sommeil <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span><span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu<span style="color: #000000; font-weight: bold;">/</span>x10.sched.sommeil <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>heyu.x10.sched
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>heyu upload
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p><strong>/etc/heyu/x10.sched.sommeil</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2035code28'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p203528"><td class="code" id="p2035code28"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># x10.sched.sommeil</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Le fameux Timer qui réveille...</span>
<span style="color: #666666; font-style: italic;"># Du lundi au vendredi à 6h30</span>
<span style="color: #666666; font-style: italic;"># passage en mode présence</span>
timer .mtwtf. 01<span style="color: #000000; font-weight: bold;">/</span>01-<span style="color: #000000;">12</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">31</span> <span style="color: #000000;">6</span>:<span style="color: #000000;">30</span> 00:00 reveil null
<span style="color: #666666; font-style: italic;"># Macro réveil</span>
macro reveil <span style="color: #000000;">0</span> on a9
&nbsp;
<span style="color: #666666; font-style: italic;"># Ici aussi, on trace la tombée de la nuit</span>
<span style="color: #666666; font-style: italic;"># et le levé du jour</span>
timer smtwtfs 01<span style="color: #000000; font-weight: bold;">/</span>01-<span style="color: #000000;">12</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">31</span> dawn dusk-<span style="color: #000000;">10</span> night_off night_on
macro night_on <span style="color: #000000;">0</span> on d1
macro night_off <span style="color: #000000;">0</span> off d1
&nbsp;
<span style="color: #666666; font-style: italic;"># Enfin, la lumière pour le casse croute..</span>
<span style="color: #666666; font-style: italic;"># A12 ON : Détection d'une présence</span>
<span style="color: #666666; font-style: italic;"># A12 OFF : Tout est à nouveau calme</span>
trigger a12 on lum_on
trigger a12 off lum_off
&nbsp;
<span style="color: #666666; font-style: italic;"># Macro lum_off</span>
macro lum_off <span style="color: #000000;">0</span> off a1
&nbsp;
<span style="color: #666666; font-style: italic;"># Macro lum_on : Allume la lumière à 50 %</span>
macro lum_on <span style="color: #000000;">0</span> dimb a1 <span style="color: #000000;">11</span></pre></td></tr></table></div>

<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<h1>5 &#8211; En conclusion</h1>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">Le système tel qui est décrit est fonctionnel depuis quelques années. Il faut savoir que la technologie X10 n&#8217;est pas très réactive &#8211; il peut se passer quelques secondes avant qu&#8217;un appareil réagisse à un ordre, en particulier quand l&#8217;installation prend de l&#8217;importance et que plusieurs ordres sont transmis à la suite&#8230;</p>
<p style="text-align: justify;">J&#8217;espère que ce billet apportera des informations utiles à tous ceux qui voudraient se lancer dans une aventure &laquo;&nbsp;domotique&nbsp;&raquo;.</p>
<p style="text-align: justify;">Liens :</p>
<ul style="text-align: justify;">
<li><a href="http://fr.wikipedia.org/wiki/X10_%28informatique%29">X10 sur wikipedia</a>,</li>
<li><a href="http://www.intellihome.be/francais/domotique_X10_Marmitek">Intellihome.be : Fournisseur de modules X10,</a></li>
<li><a href="http://misterhouse.sourceforge.net/">MisterHouse (sourceforge),</a></li>
<li><a href="http://search.cpan.org/~bbirth/ControlX10-CM11-2.09/CM11.pm" target="_blank">ControlX10::CM11 (librairie Perl),</a></li>
<li><a href="http://www.heyu.org/" target="_blank">Heyu</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2010/07/03/heyu-x10-domotique-maison/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>QR Codes et encodage (qrencode)</title>
		<link>http://www.jopa.fr/index.php/2009/08/26/qr-codes-et-encodage-qrencode/</link>
		<comments>http://www.jopa.fr/index.php/2009/08/26/qr-codes-et-encodage-qrencode/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 22:12:37 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Code barre]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels Libres]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1758</guid>
		<description><![CDATA[Pour compléter mon billet sur la génération de codes barres, je vais me pencher sur les codes à 2 dimensions : les QR Codes. Pour reprendre la définition de &#171;&#160;Wikipedia&#160;&#187; : Le code QR ou QR Code (en anglais) est un code-barres en 2 dimensions (code matrice) pouvant stocker jusqu&#8217;à 7089 caractères numériques, 4296 caractères alphanumériques (contrairement au code-barre [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour compléter mon billet<a title="generer-codes-barres-lignes-de-commandes-linux-barcode" href="generer-codes-barres-lignes-de-commandes-linux-barcode"> sur la génération de codes barres</a>, je vais me pencher sur les codes à 2 dimensions : les QR Codes.</p>
<p style="text-align: center;"><img class="size-full wp-image-1759 aligncenter" title="jopaqrcode" src="http://www.jopa.fr/wp-content/uploads/2009/08/jopaqrcode.png" alt="jopaqrcode" width="135" height="135" /></p>
<p>Pour reprendre la définition de &laquo;&nbsp;<a title="http://fr.wikipedia.org/wiki/Code_QR" href="http://fr.wikipedia.org/wiki/Code_QR">Wikipedia</a>&nbsp;&raquo; :</p>
<blockquote>
<p style="text-align: justify;">Le <strong>code QR</strong> ou <em><strong>QR Code</strong></em> (en <a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Anglais" href="http://fr.wikipedia.org/wiki/Anglais">anglais</a>) est un <a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Code-barre" href="http://fr.wikipedia.org/wiki/Code-barre">code-</a><a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Code-barre" href="http://fr.wikipedia.org/wiki/Code-barre">barres</a> en 2 dimensions (code matrice) pouvant stocker jusqu&#8217;à 7089 caractères numériques, 4296 caractères alphanumériques (contrairement au code-barre « traditionnel » qui lui ne peut stocker que de 10 à 13 caractères) ou 2953 <a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Octet" href="http://fr.wikipedia.org/wiki/Octet">octets</a> . Il a l&#8217;avantage de pouvoir stocker beaucoup d&#8217;informations tout en étant petit et rapide à scanner. Ainsi, le sigle « QR » dérive de « <em>Quick Respons<span style="font-style: normal;"><em>e</em> » car le contenu peut être décodé rapidement.</span></em></p>
<p style="text-align: justify;"><em><span style="font-style: normal;"><br />
</span></em></p></blockquote>
<p style="text-align: justify; "><span id="more-1758"></span></p>
<p style="text-align: justify; ">Ce type de code, par sa capacité, permet de &laquo;&nbsp;stocker&nbsp;&raquo; un petit texte, une adresse e-mail, une url, un numéro de téléphone ou encore une <em><a title="http://fr.wikipedia.org/wiki/Vcard" href="http://fr.wikipedia.org/wiki/Vcard">vcard</a></em> complète. Il présente l&#8217;intérêt de pouvoir être interprété rapidement à partir d&#8217;un PDA ou d&#8217;un téléphone, bien sûr munis d&#8217;un appareil photo et d&#8217;une petite application permettant le décodage. Le contenu, en fonction de son type, peut être, ensuite, traité directement par l&#8217;appareil : pointage du navigateur vers l&#8217;url, création d&#8217;un nouvel email,  import de la <em>vcard </em>dans le carnet d&#8217;adresses, etc&#8230; Un concept qui ravie les adeptes de gadgets mobiles, en permettant, en un shoot, la saisie d&#8217;adresses ou d&#8217;url, pas toujours très pratique, voir fastidieuse sur ce genre d&#8217;appareil.</p>
<p style="text-align: justify; ">
<p style="text-align: justify; ">
<div id="attachment_1786" class="wp-caption alignnone" style="width: 490px"><a href="http://fr.androlib.com/android.application.com-google-zxing-client-android-xzA.aspx"><img class="size-full wp-image-1786" title="Barcode-Scanner-URL-Found" src="http://www.jopa.fr/wp-content/uploads/2009/08/Barcode-Scanner-URL-Found.jpg" alt="Application &quot;Barcode scanner&quot; sur un téléphone Androïd (HTC Hero)" width="480" height="320" /></a><p class="wp-caption-text">Application &quot;Barcode scanner&quot; sur un téléphone Androïd (HTC Hero)</p></div>
<p style="text-align: justify; ">
<p>Pour créer son propre <em>QR Code</em>, il existe de nombreux générateurs en ligne, en voici quelques uns, la liste est loin d&#8217;être exhaustive :</p>
<ul>
<li><a title="http://qrcode.kaywa.com" href="http://qrcode.kaywa.com">http://qrcode.kaywa.com</a>,</li>
<li><a title="http://www.snapmaze.com/" href="http://www.snapmaze.com/">http://www.snapmaze.com</a>,</li>
<li><a title="http://zxing.appspot.com/generator" href="http://zxing.appspot.com/generator">http://zxing.appspot.com/generator</a>.</li>
</ul>
<p>Comme pour les codes barres classiques (1 dimension), ce qui va m&#8217;intéresser, c&#8217;est bien entendu de pouvoir les générer en local&#8230; et si possible en lignes de commandes ( eh oui ! Encore !).</p>
<p>Il existe un petit programme qui fait ça très bien et qui se nomme judicieusement : <a title="http://megaui.net/fukuchi/works/qrencode/index.en.html" href="http://megaui.net/fukuchi/works/qrencode/index.en.html">qrencode</a>.</p>
<p><em>qrencode</em> est intégré dans la majeure partie des distributions, si ce n&#8217;était pas votre cas, vous pouvez toujours télécharger les sources sur le <a title="http://megaui.net/fukuchi/works/qrencode/index.en.html" href="http://megaui.net/fukuchi/works/qrencode/index.en.html">site officiel</a>.</p>
<p>Ce petit outil permet de générer une image au format <em>png</em>, à partir d&#8217;une ou plusieurs chaînes de caractères.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1758code30'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p175830"><td class="code" id="p1758code30"><pre class="sh" style="font-family:monospace;">$ qrencode --help
qrencode version 3.0.3
Copyright (C) 2006, 2007, 2008 Kentaro Fukuchi
Usage: qrencode [OPTION]... [STRING]
Encode input data in a QR Code and save as a PNG image.
&nbsp;
-h           display this message.
--help       display the usage of long options.
-o FILENAME  write PNG image to FILENAME. If '-' is specified, the result
will be output to standard output. If -S is given, structured
symbols are written to FILENAME-01.png, FILENAME-02.png, ...;
if specified, remove a trailing '.png' from FILENAME.
-s NUMBER    specify the size of dot (pixel). (default=3)
-l {LMQH}    specify error collectin level from L (lowest) to H (highest).
(default=L)
-v NUMBER    specify the version of the symbol. (default=auto)
-m NUMBER    specify the width of margin. (default=4)
-S           make structured symbols. Version must be specified.
-k           assume that the input text contains kanji (shift-jis).
-c           encode lower-case alphabet characters in 8-bit mode. (default)
-i           ignore case distinctions and use only upper-case characters.
-8           encode entire data in 8-bit mode. -k, -c and -i will be ignored.
-V           display the version number and copyrights of the qrencode.
[STRING]     input data. If it is not specified, data will be taken from
standard input.</pre></td></tr></table></div>

<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">La plupart des paramètres disposent d&#8217;une valeur par défaut, ce qui simplifie la mise en œuvre pour une utilisation &laquo;&nbsp;classique&nbsp;&raquo;. Il suffit de préciser le nom de fichier en sortie et le contenu à encoder.</p>
<p style="text-align: justify;"><span style="color: #800000;">$ qrencode -o test1.png &laquo;&nbsp;http://www.jopa.fr&nbsp;&raquo;<br />
$ qrencore -o test2.png &lt; test.txt</span></p>
<p style="text-align: justify;">
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/OxFR6r-Dqk4&amp;hl=fr&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/OxFR6r-Dqk4&amp;hl=fr&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p style="text-align: justify;">
<p style="text-align: justify;">Pour en savoir plus :</p>
<ul>
<li><a title="http://journal-smala.org/?18-qr-code.html" href="http://journal-smala.org/?18-qr-code.html">QR-code ? Clovis Darrigan répond</a>,</li>
<li><a title="http://fr.wikipedia.org/wiki/Code_QR" href="http://fr.wikipedia.org/wiki/Code_QR">Wikipedia</a>,</li>
<li><a title="http://megaui.net/fukuchi/works/qrencode/index.en.html" href="http://megaui.net/fukuchi/works/qrencode/index.en.html">QrEncode</a>,</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/08/26/qr-codes-et-encodage-qrencode/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Construire sa borne d&#8217;arcade&#8230;en 6 mois&#8230;</title>
		<link>http://www.jopa.fr/index.php/2009/08/17/construire-sa-borne-darcade-en-6-mois/</link>
		<comments>http://www.jopa.fr/index.php/2009/08/17/construire-sa-borne-darcade-en-6-mois/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 21:47:28 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[bricolage]]></category>
		<category><![CDATA[Jeux]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1691</guid>
		<description><![CDATA[Sur son nouveau site, Torglut nous explique comment construire sa propre borne d&#8217;arcade&#8230; en 6 mois ! Au final,  un beau meuble à monter sois-même et biensûr, une utilisation ludique de notre OS préféré&#8230; Sur ce site, tu vas apprendre à construire une borne d&#8217;arcade en 6 mois. Les esprits chagrins diront que 6 mois, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Sur son <a title="http://torglut.free.fr/" href="http://torglut.free.fr/" target="_blank">nouveau site</a>, <em>Torglut</em> nous explique comment construire sa propre borne d&#8217;arcade&#8230; en 6 mois ! Au final,  un beau meuble à monter sois-même et biensûr, une utilisation ludique de notre OS préféré&#8230;</p>
<p style="text-align: center;"><a href="http://torglut.free.fr/"><img class="size-medium wp-image-1692 aligncenter" title="img_43_0012_final" src="http://www.jopa.fr/wp-content/uploads/2009/08/img_43_0012_final-225x300.jpg" alt="img_43_0012_final" width="225" height="300" /></a></p>
<blockquote><p>Sur ce site, tu vas apprendre à construire une borne d&#8217;arcade en 6 mois. Les <a href="http://fr.wiktionary.org/wiki/esprit_chagrin">esprits chagrins</a> diront que 6 mois, c&#8217;est très long.<br />
Effectivement, c&#8217;est très long, surtout qu&#8217;on peut <a href="http://chris.polymathic.net/cabinet/index.shtml">construire une borne d&#8217;arcade en 24 heures</a>.<br />
Seulement voilà, je suis assez mauvais en bricolage, d&#8217;où les 6 mois <img src='http://www.jopa.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Je remercie au passage l&#8217;auteur du site ci-dessus, sur lequel je me suis basé pour construire la borne.<br />
Ce site est donc fait pour toi, qui possèdes à peu près le même niveau que moi en bricolage, c&#8217;est à dire un niveau 0 sur une échelle de 10.</p></blockquote>
<p><a title="Construire une borne d'arcade" href="http://torglut.free.fr/">Pour la leçon de bricolage, c&#8217;est par là !</a></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/08/17/construire-sa-borne-darcade-en-6-mois/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pam et Mir:ror : une authentification RFID sous Linux</title>
		<link>http://www.jopa.fr/index.php/2009/07/16/linux-pam-et-mirror-une-authentification-rfid/</link>
		<comments>http://www.jopa.fr/index.php/2009/07/16/linux-pam-et-mirror-une-authentification-rfid/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 23:10:03 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mir:ror]]></category>
		<category><![CDATA[rfid]]></category>
		<category><![CDATA[Sécurité]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1461</guid>
		<description><![CDATA[Cette pluvieuse journée du 14 juillet m&#8217;a permis de poursuivre mes petits travaux sur le lecteur rfid &#171;&#160;Mir:ror&#160;&#187;. Dans les articles précédents, je me suis surtout intéressé au déclenchement d&#8217;événements en fonction des puces rfid détectées (ou pas) par le lecteur, oubliant l&#8217;essence même du RFID : l&#8217;authentification. J&#8217;ai donc profité de ce temps à [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-1462" title="pam_mirror" src="http://www.jopa.fr/wp-content/uploads/2009/07/pam_mirror.jpg" alt="pam_mirror" width="201" height="204" />Cette pluvieuse journée du 14 juillet m&#8217;a permis de poursuivre mes petits travaux sur le lecteur rfid &laquo;&nbsp;Mir:ror&nbsp;&raquo;. Dans les articles précédents, je me suis surtout intéressé au déclenchement d&#8217;événements en fonction des puces <em>rfid </em>détectées (ou pas) par le lecteur, oubliant l&#8217;essence même du RFID : l&#8217;authentification. J&#8217;ai donc profité de ce temps à ne pas mettre mon chat dehors pour écrire un module <a title="http://fr.wikipedia.org/wiki/Pluggable_Authentication_Modules" href="http://fr.wikipedia.org/wiki/Pluggable_Authentication_Modules">PAM (Pluggable Authentification Module)</a> permettant d&#8217;authentifier un utilisateur via le <em>Mir:ror</em>.</p>
<p style="text-align: justify;">L&#8217;idée est simple : si mon <em>Mir:ror</em> est connecté à l&#8217;ordinateur et qu&#8217;un fichier contenant mon <em>rfid </em>est présent dans mon répertoire, je veux pouvoir ouvrir ma session à l&#8217;aide d&#8217;une puce <em>RFID </em>(carte, badge, ztamp:s, laaaaapin&#8230;) à la place de saisir mon mot de passe.</p>
<p style="text-align: justify;"><span id="more-1461"></span></p>
<p style="text-align: justify;">Je ne vais pas m&#8217;attarder ici à décrire la manière dont est codé le module, je vous laisse le soin de lire les sources&#8230; Je vais me contenter d&#8217;expliquer son installation et son utilisation.</p>
<h2>Mise en garde :</h2>
<p style="text-align: justify;">Pour plusieurs raisons dont la simplification du module et mes piètres talents de développeur, il va sans dire que ce petit programme ne doit pas être utilisé en environnement sécurisé. Par contre, pour la maison, c&#8217;est plutôt fun !</p>
<p style="text-align: justify;"><em>Nous touchons ici à une partie sensible du système : l&#8217;authentification. Les manipulations ci-dessous sont donc à réaliser avec prudence.</em></p>
<h2>Compilation :</h2>
<p>Pour pouvoir compiler <em>pam_mir-ror</em>, il nous faut installer un version récente de la librairie de développement pam (libpam-dev). J&#8217;ai utilisé la version 1.0.1 proposée par défaut sous Debian Lenny.</p>
<p><span style="color: #800000;">$ sudo aptitude install libpam-dev</span></p>
<p>L&#8217;archive contenant les sources est téléchargeable ci-dessous :</p>
<ul>
<li><a href="http://www.jopa.fr/wp-content/uploads/2009/07/pam_mir-ror.0.2.tar.gz">pam_mir-ror.0.2.tar.gz</a></li>
</ul>
<p style="text-align: justify;">Une fois téléchargée, il faut la décompresser et tout simplement lancer la commande &laquo;&nbsp;make&nbsp;&raquo;.</p>
<p><span style="color: #800000;">$ tar -xvzf pam_mir-ror.0.2.tar.gz<br />
$ cd pam_mir-ror.0.2<br />
$ make</span></p>
<p style="text-align: justify;">Si tout se passe bien, nous devrions obtenir deux binaires :</p>
<ul style="text-align: justify;">
<li>read_mir-ror : Un petit outil permettant la lecture à partir du Mir:ror,</li>
<li style="text-align: justify;">pam_mir-ror.so : Le module pam.</li>
</ul>
<h2 style="text-align: justify;">read_mir-ror</h2>
<p style="text-align: justify;">Le petit outil read_mir-ror va nous permettre de tester le lecteur. Il suffit de l&#8217;exécuter et d&#8217;approcher une puce rfid.</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo ./read_mirror<br />
0000D0081A025303420200D2</span></p>
<p style="text-align: justify;">La série de chiffres affichée n&#8217;est rien d&#8217;autre que l&#8217;ID de l&#8217;objet détecté.</p>
<p style="text-align: justify;"><em>Il est préférable d&#8217;utiliser read_mirror avec les droits root, au moins la première fois, pour l&#8217;accès au périphérique mir:ror. Par défaut, le mir:ror n&#8217;est accessible que par root. Les droits du handler sont changés à la première utilisation de la fonction de détection (inclue dans l&#8217;outil et le module). Il serait certainement plus propre de coder un petit outil qui serait automatiquement lancé par udev ou hotplug au branchement du Mir:ror, mais pour un module PAM, ce n&#8217;est pas très important.<br />
</em></p>
<h2 style="text-align: justify;">Génération du fichier utilisateur</h2>
<p style="text-align: justify;">Le même outil (read_mir-ror), va nous permettre de générer le fichier <em>.authtag </em>contenant le rfid propre à chaque utilisateur :</p>
<p style="text-align: justify;">Pour l&#8217;utilisateur courant :</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo ./read_mirror &gt; ~/.authtag<br />
$ sudo chmod 400 ~/.authtag</span></p>
<p style="text-align: justify;">Pour un autre utilisateur  (toto):</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo ./read_mirror &gt; /home/toto/.authtag<br />
$ sudo chmod 400 /home/toto/.authtag</span></p>
<p style="text-align: justify;">Il faut bien entendu présenter la puce au lecteur juste après la commande <em>./read_mirror</em>.<br />
Le fichier .authtag doit maintenant contenir le tag :</p>
<p><span style="color: #800000;">$ cat ~/.authtag</span><br />
<span style="color: #800000;">0000D0081A025303420200D2</span></p>
<h2 style="text-align: justify;">Module PAM  :  pam_mir:ror.so</h2>
<p style="text-align: justify;">Pour qu&#8217;il soit utilisable par PAM, il faut que <em>pam_mir:ror.so</em> soit présent dans /lib/security (lib64/security pour une architecture 64 bits)</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo cp pam_mir-ror.so /lib/security</span></p>
<p style="text-align: justify;">ou pour un module 64 bits :</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo cp pam_mir-ror.so /lib64/securit</span>y</p>
<p style="text-align: justify;">La dernière étape va être l&#8217;ajout du module à PAM. Pour cela, il nous faut éditer le fichier :<br />
<em>/etc/pam.d/common-auth </em>pour y ajouter, avant les modules pam_unix.so ou pam_unix2.so :</p>
<p style="text-align: justify;"><em>auth             sufficient         pam_mir-ror.so</em></p>
<p style="text-align: justify;"><em>/etc/pam.d/common-auth</em></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1461code32'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p146132"><td class="code" id="p1461code32"><pre class="ini" style="font-family:monospace;">#
# /etc/pam.d/common-auth - authentication settings common to all services
...
auth    sufficient                      pam_mir-ror.so
# here are the per-package modules <span style="">&#40;</span>the <span style="color: #933;">&quot;Primary&quot;</span> block<span style="">&#41;</span>
auth    <span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>success<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1 default=ignore<span style="">&#93;</span></span>      pam_unix.so nullok_secure</span>
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already<span style="color: #666666; font-style: italic;">;</span>
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules <span style="">&#40;</span>the <span style="color: #933;">&quot;Additional&quot;</span> block<span style="">&#41;</span>
# end of pam-auth-update config</pre></td></tr></table></div>

<p style="text-align: justify;">Avant de rebooter frénétiquement la machine pour voir ce que ça peut donner avec <em>gdm</em>,  je conseille vivement de tester sur une console (crtl-alt-F1 par exemple)&#8230; Comme expliqué en début d&#8217;article, nous touchons ici à une partie sensible du système et c&#8217;est mieux de garder la main pour éviter des pirouettes telles qu&#8217;un redémarrage en single user ou à partir d&#8217;un liveCD pour réparer.</p>
<p style="text-align: justify;">J&#8217;ai fait en sorte que le module loggue un minimum. En fonction du système, ces logs sont visibles dans /var/log/auth.log ou /var/log/syslog.</p>
<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2009/07/shell1.png"><img class="aligncenter size-full wp-image-1478" title="shell" src="http://www.jopa.fr/wp-content/uploads/2009/07/shell1.png" alt="shell" width="457" height="263" /></a></p>
<p style="text-align: justify;">Dernière version des sources : <a href="http://www.jopa.fr/wp-content/uploads/2009/07/pam_mir-ror.0.2.tar.gz">pam_mir-ror.0.2.tar.gz</a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/07/16/linux-pam-et-mirror-une-authentification-rfid/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mir:ror mon beau Mir:ror&#8230;Comment puis-je te comprendre ?</title>
		<link>http://www.jopa.fr/index.php/2009/07/12/violet-mirror-acces-device-c/</link>
		<comments>http://www.jopa.fr/index.php/2009/07/12/violet-mirror-acces-device-c/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 00:22:12 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mir:ror]]></category>
		<category><![CDATA[rfid]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1415</guid>
		<description><![CDATA[Dans mon précédent article, je présentais mir:ror, le petit lecteur RFID commercialisé par la société Violet.  Après avoir survolé leur application &#171;&#160;Mirware&#160;&#187; et mis en évidence les limites de son utilisation, je vais mettre &#171;&#160;les mains dans le cambouis&#160;&#187; pour essayer de comprendre comment communiquer avec Mir:ror.  L&#8217;idée étant de pouvoir coder de petits outils [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignright size-medium wp-image-1437" title="miror" src="http://www.jopa.fr/wp-content/uploads/2009/07/miror-300x254.jpg" alt="miror" width="184" height="156" />Dans mon <a title="http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux" href="http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux">précédent article</a>, je présentais <em>mir:ror</em>, le petit lecteur RFID commercialisé par la société <a title="http://www.violet.net/" href="http://www.violet.net/">Violet</a>.  Après avoir survolé leur application &laquo;&nbsp;Mirware&nbsp;&raquo; et mis en évidence les limites de son utilisation, je vais mettre &laquo;&nbsp;les mains dans le cambouis&nbsp;&raquo; pour essayer de comprendre comment communiquer avec Mir:ror.  L&#8217;idée étant de pouvoir coder de petits outils capables de réagir à des tags RFID.</p>
<p style="text-align: justify;"><span id="more-1415"></span></p>
<p style="text-align: justify;">D&#8217;un point de vu système, Mir:ror est directement reconnu sous Linux et accessible via le handler de périphérique /dev/hidraw<em>X</em> (où <em>X</em> est le numéro de périphérique, normalement &laquo;&nbsp;0&#8243; si c&#8217;est le premier appareil du genre connecté).</p>
<p style="text-align: justify;">La petite application &laquo;&nbsp;<em>discover-device</em>&laquo;&nbsp;, fournie avec <em>Mirware</em>, permet de le détecter automatiquement :</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1417" title="discover-device" src="http://www.jopa.fr/wp-content/uploads/2009/07/discover-device.png" alt="discover-device" width="457" height="246" /></p>
<p style="text-align: justify;">Attention tout de même aux droits, le périphérique n&#8217;est par défaut accessible que par <em>root</em>, il faudra lui changer les droits ou utiliser le script &laquo;&nbsp;<em>installer.sh</em>&nbsp;&raquo; pour le faire, avant de pouvoir l&#8217;exploiter avec un utilisateur standard.</p>
<p style="text-align: justify;">Commençons par voir ce qu&#8217;il se passe avec un simple &laquo;&nbsp;cat&nbsp;&raquo; du fichier :</p>
<p style="text-align: justify;"><img class="size-full wp-image-1421 aligncenter" title="cat-miror" src="http://www.jopa.fr/wp-content/uploads/2009/07/cat-miror.png" alt="cat-miror" width="457" height="246" /></p>
<p style="text-align: justify;">Des hiéroglyphes s&#8217;affichent lorsque nous approchons ou retirons un tag&#8230; C&#8217;est plutôt bon signe, et visiblement c&#8217;est binaire ! Nous devrions y voir plus clair avec un affichage en hexadécimal.  <em>Hexdump</em> est idéal pour ça !</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1422" title="hexdump" src="http://www.jopa.fr/wp-content/uploads/2009/07/hexdump.png" alt="hexdump" width="457" height="246" /></p>
<p style="text-align: justify;">La première ligne (0000 0000 0000 0000 0000 0000 0000 0000 *) nous indique que tant qu&#8217;il ne se passe rien, on lit des zéros&#8230; Où&#8230;Qu&#8217;on lit des zéros tant qu&#8217;il ne se passe rien ! (c&#8217;est plutôt normal).<br />
Les deux lignes suivantes (0102 0000 d008 1a02 5303 4202 00d2 0000 &#8211; 0000 0000 0000 0000 0000 0000 0000 0000) s&#8217;affichent lorsqu&#8217;un tag est approché, les deux dernières ( 0202 0000 d008 1a02 5303 4202 00d2 0000 &#8211; 0000 0000 0000 0000 0000 0000 0000 0000 ) lorsqu&#8217;on éloigne le tag.</p>
<p style="text-align: justify;">Après plusieurs tests, j&#8217;en déduis assez facilement que les deux premiers octets (0102 ou 0202) codent l&#8217;évènement. J&#8217;en ai repéré 4 types :</p>
<ul style="text-align: justify;">
<li>0&#215;0102 : Tag rfid détecté,</li>
<li>0&#215;0202 : Tag rfid retiré,</li>
<li>0&#215;0501 : Le mir:ror est mis à l&#8217;envert,</li>
<li>0&#215;0401 : Le mir:ror est remis à l&#8217;endroit.</li>
</ul>
<p style="text-align: justify;">Les 12 octets suivants semblent identifier la puce RFID.</p>
<p style="text-align: justify;">A titre de test, écrivons rapidement un petit bout de code C, prenant le device en paramètre et affichant les évènements et le tag associé :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code37'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141537"><td class="code" id="p1415code37"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Jopa - Petit test du Mir:ror : test_mirror.c</span>
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  FILE <span style="color: #339933;">*</span>mirror<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> block<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> event<span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> tag<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">25</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//Vérification du paramètre (device)</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc<span style="color: #339933;">!=</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Usage : %s mirror_device <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Ouverture du fichier device</span>
  mirror <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;rb&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>mirror<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Accès à  %s impossible !<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Boucle en lecture</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>event<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>event<span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Evenement detecté, lecture de l'ID</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">6</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>block<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sprintf<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>tag<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">*</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;%04X&quot;</span><span style="color: #339933;">,</span>block<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">//Affichage en fonction de l'événement</span>
        <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// Tag On</span>
            <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x102</span> <span style="color: #339933;">:</span>
                <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : ON<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Tag Off</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x202</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : OFF<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror envers</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x501</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENVERS<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror endroit</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x401</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENDROIT<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Default</span>
             <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Evénement inconnu<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//switch</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//if (event</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//while (1)</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// main()</span></pre></td></tr></table></div>

<p style="text-align: justify;">En quelques lignes, nous ouvrons le périphérique dont le handler est passé en paramètre et bouclons sur sa lecture, 2 octets par 2 octets.<br />
Quand autre chose que &laquo;&nbsp;0&#8243; est détecté, c&#8217;est forcément un changement d&#8217;état. Nous lisons ensuite l&#8217;identifiant de la puce RFID.<br />
La dernière partie affiche un message en fonction de l&#8217;évènement détecté.</p>
<p style="text-align: justify;">Il ne reste plus qu&#8217;à le compiler et le tester :<br />
<span style="color: #800000;">$ gcc test_mirror.c -o test_mirror<br />
$ ./test_mirror</span></p>
<p><img class="aligncenter size-full wp-image-1434" title="test_mirror" src="http://www.jopa.fr/wp-content/uploads/2009/07/test_mirror.png" alt="test_mirror" width="497" height="331" /></p>
<p><span style="color: #800000;">Pour compléter l&#8217;exemple, nous pouvons rajouter l&#8217;exécution d&#8217;un script associé au tag et à son approche ou son éloignement. Les scripts pourraient être stockés dans le répertoire de l&#8217;utilisateur et porter l&#8217;<em>&lt;id&gt;-on.sh</em> ou l&#8217;<em>&lt;id&gt;-off.sh</em> comme nom. Pour l&#8217;exemple :</span></p>
<ul>
<li>0000D0081A025303420200D2-on.sh : Lancement de Firefox sur le blog de Jopa</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code38'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141538"><td class="code" id="p1415code38"><pre class="sh" style="font-family:monospace;">#!/bin/sh
firefox http://www.jopa.fr</pre></td></tr></table></div>

<ul>
<li>0000D0081A025303420200D2-off.sh : Lancement de Thunderbird</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code39'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141539"><td class="code" id="p1415code39"><pre class="sh" style="font-family:monospace;">#!/bin/sh
thunderbird</pre></td></tr></table></div>

<p><span style="color: #800000;">$ chmod +x ~/0000D0081A025303420200D2-*.sh</span></p>
<p style="text-align: justify;">Adaptons un peu le code en ajoutant une variable pour le nom du script et une commande &laquo;&nbsp;<em>system</em>&nbsp;&raquo; dans le <em>&laquo;&nbsp;switch/case&nbsp;&raquo;</em>.</p>
<p style="text-align: justify;">

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code40'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141540"><td class="code" id="p1415code40"><pre class="c" style="font-family:monospace;">   <span style="color: #666666; font-style: italic;">// Jopa - Test Mir:ror</span>
&nbsp;
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  FILE <span style="color: #339933;">*</span>mirror<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> block<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> event<span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> tag<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">25</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Ajout d'un variable script</span>
  <span style="color: #993333;">char</span> script<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">256</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//Vérification du paramètre (device)</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc<span style="color: #339933;">!=</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Usage : %s mirror_device <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Ouverture du fichier device</span>
  mirror <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;rb&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>mirror<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Accès à  %s impossible !<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Boucle en lecture</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>event<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>event<span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Evenement detecté, lecture de l'ID</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">6</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>block<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sprintf<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>tag<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">*</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;%04X&quot;</span><span style="color: #339933;">,</span>block<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">//Affichage en fonction de l'événement</span>
        <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// Tag On</span>
            <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x102</span> <span style="color: #339933;">:</span>
                <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : ON<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #666666; font-style: italic;">//Construction du nom de script et exécution</span>
                sprintf<span style="color: #009900;">&#40;</span>script<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;./%s-on.sh&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                system<span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Tag Off</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x202</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : OFF<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #666666; font-style: italic;">//Construction du nom de script et exécution</span>
                 sprintf<span style="color: #009900;">&#40;</span>script<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;./%s-off.sh&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 system<span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror envers</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x501</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENVERS<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror endroit</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x401</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENDROIT<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Default</span>
             <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Evénement inconnu&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//switch</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//if (event</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//while (1)</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// main()</span></pre></td></tr></table></div>

<p style="text-align: justify;">Ceci n&#8217;est bien entendu qu&#8217;un exemple, écrit rapidement et pas forcément très propre. Mais il permet de mettre en évidence la simplicité avec laquelle il est possible d&#8217;accéder à des informations RFID et ouvre la porte sur des développements qui peuvent être rapidement prometteurs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/07/12/violet-mirror-acces-device-c/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Violet connecting objects</title>
		<link>http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux/</link>
		<comments>http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 21:57:12 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mir:ror]]></category>
		<category><![CDATA[rfid]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1354</guid>
		<description><![CDATA[Vous connaissez certainement la société Violet et plus particulièrement son fameux lapin communicant : le Nabaztag ? Cette même société produit le &#171;&#160;mir:ror&#171;&#160;, un petit gadget très design qui n&#8217;est pas moins qu&#8217;un  lecteur RFID. Question coût, le mir:ror se trouve un peu partout pour un 50ène d&#8217;euros. J&#8217;ai déniché le mien en solde pour [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-medium wp-image-1355" title="mirror" src="http://www.jopa.fr/wp-content/uploads/2009/07/mirror-300x235.gif" alt="mirror" width="300" height="235" />Vous connaissez certainement la société <a title="Violet" href="http://www.violet.net" target="_blank">Violet </a>et plus particulièrement son fameux lapin communicant : le <a title="http://www.nabaztag.com/fr/index.html" href="http://www.nabaztag.com/fr/index.html" target="_blank">Nabaztag </a>? Cette même société produit le &laquo;&nbsp;<a title="http://www.violet.net/_mirror-le-premier-lecteur-rfid.html" href="http://www.violet.net/_mirror-le-premier-lecteur-rfid.html" target="_blank">mir:ror</a>&laquo;&nbsp;, un petit gadget très design qui n&#8217;est pas moins qu&#8217;un  lecteur <a title="http://fr.wikipedia.org/wiki/Radio-identification" href="http://fr.wikipedia.org/wiki/Radio-identification" target="_blank">RFID.</a></p>
<p style="text-align: justify;">Question coût, le <em>mir:ror</em> se trouve un peu partout pour un 50ène d&#8217;euros. J&#8217;ai déniché le mien en solde pour moins de 30 € &#8211; <em>Tu vois chérie, moi aussi le fais les soldes  !!!</em> &#8211; Dans un joli coffret, sont rangés le lecteur <em>usb</em>, 3 &laquo;&nbsp;timbres&nbsp;&raquo; autocollants (<a title="http://www.violet.net/_ztamps-rfid-tag-that-give-powers-to-your-objects.html" href="http://www.violet.net/_ztamps-rfid-tag-that-give-powers-to-your-objects.html">Ztamp:s</a>) et 2 petits lapins (<a title="http://www.violet.net/_nanoztag-the-programmable-RFID-rabbit.html" href="http://www.violet.net/_nanoztag-the-programmable-RFID-rabbit.html">Nano:Ztag</a>), tous munis d&#8217;une puce RFID.<img class="alignright size-full wp-image-1365" title="nano1" src="http://www.jopa.fr/wp-content/uploads/2009/07/nano1.jpg" alt="nano1" width="80" height="138" /></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Le lecteur fonctionne biensûr avec les objets commercialisés par <em>Violet</em>, mais aussi avec n&#8217;importe quel <em>tags RFID</em>, pourvu qu&#8217;il  respecte la norme <a title="http://en.wikipedia.org/wiki/ISO_14443A" href="http://en.wikipedia.org/wiki/ISO_14443A">ISO 14443 A ou B</a> &#8211; La carte de bus/métro de <em>Toulouse </em>fonctionne parfaitement par exemple.</p>
<p style="text-align: justify;">En utilisation standard, moyennant l&#8217;installation d&#8217;un petit logiciel (<a title="http://my.violet.net/mirror/choose_mirware" href="http://my.violet.net/mirror/choose_mirware">Mirware</a>) et la création d&#8217;un compte (gratuit) sur le site de Violet, nous pourrons enregistrer nos objets RFID et associer une action à leur approche ou leur éloignement du lecteur.</p>
<p style="text-align: justify;"><img class="alignleft size-full wp-image-1369" title="ztamps" src="http://www.jopa.fr/wp-content/uploads/2009/07/ztamps.gif" alt="ztamps" width="110" height="110" />Après tout ce vocabulaire &laquo;&nbsp;<em>Nabaztanique</em>&laquo;&nbsp;, il faut bien que j&#8217;avoue que ce n&#8217;est pas pour son utilisation standard que j&#8217;ai craqué, mais pour  les  perspectives prometteuses  offertes en terme de bidouillage : <em>Authentification pam</em>, <em>évènements domotiques (X10)</em>, <em>clef de chiffrement</em>, on peut imaginer énormément d&#8217;usages &laquo;&nbsp;<em>non-officiels</em>&nbsp;&raquo; &#8230; et c&#8217;est ça qui est bon !</p>
<p style="text-align: justify;">Néanmoins, dans la suite du billet, je vais balayer une installation classique du &laquo;&nbsp;<em>Mirware</em>&nbsp;&raquo; sous <em>Linux. </em>Il faut bien commencer par là !<em> </em>Cette manipulation ne présente pas de difficulté particulière, à part peut-être pour les architectures <em>64 bits</em>. Dans un prochain article, je m&#8217;intéresserai au développements possibles autour du joujou !</p>
<p style="text-align: justify;"><span id="more-1354"></span></p>
<h2 style="text-align: justify;">Mirware mon beau Mirware&#8230;</h2>
<p style="text-align: justify;">J&#8217;ai réalisé ce test sur deux machines sous Ubuntu (9.04 &laquo;&nbsp;Jaunty jackalope&nbsp;&raquo; ), l&#8217;une en 32 bits, l&#8217;autre en 64. Mais <em>Mirware</em> devrait fonctionner sous n&#8217;importe quelle distribution, le tout étant de bien installer les librairies nécessaires.</p>
<p style="text-align: justify;">Dans les pré-requis, il faut bien entendu une machine sous <em>Linux</em>, disposant d&#8217;une interface graphique et connectée à Internet. En effet, <em>Mirware</em> fonctionne grâce au serveur <em>Violet.net</em>, sur lequel seront enregistrés les <em>tags </em>et les actions qui leurs sont associées.  C&#8217;est un peu limitant, mais comment dire&#8230;.c&#8217;est comme ça ! Domage !</p>
<p style="text-align: justify;">L&#8217;application est disponible <a title="http://my.violet.net/mirror/choose_mirware" href="http://my.violet.net/mirror/choose_mirware">ici</a> en version alpha&#8230; On regrettera l&#8217;absence des sources, mis à part pour la partie concernant la détection du périphérique, ce qui va sauver l&#8217;installation sur une distribution 64 bits.</p>
<p style="text-align: justify;">Je parlais de librairies, il nous faudra satisfaire quelques dépendances à ce sujet et en installer 3 principales :</p>
<ul>
<li>Qt 4.4 avec le module webkit,</li>
<li>QCA 2.0.1,</li>
<li>SDL 1.2</li>
</ul>
<p>(cf le README pour plus d&#8217;infos)</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo apt-get install   libqt4-webkit   libqca2   libsdl1.2debian</span></p>
<p style="text-align: justify;"><span style="color: #800000;"><span style="color: #333333;">Nous pouvons à présent télécharger et installer le Mirware :</span></span></p>
<p style="text-align: justify;"><span style="color: #800000;"><span style="color: #333333;"><span style="color: #800000;">$ wget -c</span> </span>http://broad.violet.net/mirror/mirware.tar.gz<br />
$ tar -xvzf mirware.tar.gz<br />
$ cd mirware-0.9.9-1724<br />
$ sudo ./installer.sh<br />
</span></p>
<p style="text-align: justify;"><span style="color: #333333;">Le script <em>installer.sh</em>, présent dans l&#8217;archive de Mirware, va juste caler les droits pour la détection du périphérique :<br />
</span></p>
<p style="text-align: justify;"><span style="color: #800000;"><em><span style="color: #333333;">installer.sh ( pour information uniquement)</span></em><br />
</span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1354code42'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p135442"><td class="code" id="p1354code42"><pre class="sh" style="font-family:monospace;">#!/bin/bash
[ &quot;$(id -u)&quot; -eq 0 ] || { echo &quot;This script needs root credentials&quot; ; exit 1 ; }
chown root discover-device || { echo &quot;Could not change owner of discover-device to root. Do you have root credentials ?&quot; ; exit 1 ; }
chmod a+s discover-device || exit 1
touch detected_device
&nbsp;
echo &quot;All done ! You can now plug a mir:ror and launch mirware-launcher.sh !&quot;</pre></td></tr></table></div>

<p style="text-align: justify;">Il ne reste plus qu&#8217;à connecter le<em> mir:ror</em> et  lancer mirware :</p>
<p><span style="color: #800000;">$ ./mirware-launcher.sh</span></p>
<p style="text-align: justify;"><img class="size-full wp-image-1398 alignleft" title="icone_notif" src="http://www.jopa.fr/wp-content/uploads/2009/07/icone_notif.png" alt="icone_notif" width="113" height="62" />Une icône dans la barre de notification indique que tout se passe bien. En approchant un objet du capteur, une fenêtre de connexion devrait apparaître, suivie d&#8217;un interface permettant d&#8217;enregistrer l&#8217;objet et de lui associer des actions (applications).</p>
<p><img class="aligncenter size-medium wp-image-1399" title="connexion" src="http://www.jopa.fr/wp-content/uploads/2009/07/connexion-300x237.png" alt="connexion" width="300" height="237" /></p>
<p><img class="aligncenter size-medium wp-image-1400" title="mirware" src="http://www.jopa.fr/wp-content/uploads/2009/07/mirware-300x237.png" alt="mirware" width="300" height="237" /></p>
<h2>32 bits&#8230;C&#8217;est bien&#8230;mais 64 ?</h2>
<p style="text-align: justify;">Si vous utilisez une distribution 64 bits, il vous faudra recompiler le petit programme de détection du mir:ror : <em>discover-device</em> et installer les librairies utilisées par <em>Mirware</em> dans leur version 32 bits. Sans les sources et en l&#8217;abscence de version 64 bits, pas le choix&#8230;</p>
<p style="text-align: justify;">Concernant la compilation de <em>discover-device</em>, rien de bien sorcier, il faut juste ne pas oublier de lui redonner les bons droits&#8230;<br />
<span style="color: #800000;">$ sudo rm discover-device<br />
$ gcc discover-device.c -o discover-device<br />
$ sudo ./installer.sh</span></p>
<p style="text-align: justify;">Pour les librairies 32 bits, après avoir pas mal joué de l&#8217;<em>apt-get</em>, je suis tombé sur<a title="http://frozenfox.freehostia.com/cappy/getlibs" href="http://frozenfox.freehostia.com/cappy/getlibs"> un script</a> qui simplifie bien les choses (merci Cappy). <a title="http://ubuntuforums.org/showthread.php?t=474790" href="http://ubuntuforums.org/showthread.php?t=474790">Getlibs</a> prend en paramètre un binaire et télécharge les librairies dépendantes dans leurs versions 32 et 64 bits&#8230; Le pied !</p>
<p><span style="color: #800000;">$ wget -c http://frozenfox.freehostia.com/cappy/getlibs<br />
$ ./getlibs mirware</span></p>
<h2>Pour clore ce chapitre&#8230;</h2>
<p style="text-align: justify;">&#8230;sur une utilisation classique du <em>mir:ror</em>, je peux ajouter qu&#8217;une grande majorité des actions proposées par le serveur sont fonctionnelles sous Linux&#8230; L&#8217;ouverture d&#8217;un dossier, le chargement d&#8217;une url, l&#8217;accès à la messagerie, à un podcast ou une webradio, la lecture d&#8217;un texte en texttospeech et j&#8217;en passe&#8230;</p>
<p style="text-align: justify;">J&#8217;ai tout de même noté un problème gênant sur l&#8217;application permettant le lancement de scripts;  En effet, cette dernière ne sait gérer que des scripts <em>Windows/Dos batch </em>(.bat) ou des <em>AppleScripts(MacOsx)</em>. Ce n&#8217;est pas très gênant pour l&#8217;utilisation que je compte en faire et comme promis, je détaillerai, dans le prochain article comment s&#8217;affranchir des contraintes du serveur <em>Violet</em>.<em>net</em> pour passer de l&#8217;autre côté du mirroir.</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Airserv-ng : Fonera en sonde wifi pour Aircrack-ng</title>
		<link>http://www.jopa.fr/index.php/2009/05/26/airserv-aircrack-ng-fonera/</link>
		<comments>http://www.jopa.fr/index.php/2009/05/26/airserv-aircrack-ng-fonera/#comments</comments>
		<pubDate>Tue, 26 May 2009 20:30:54 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Fonera]]></category>
		<category><![CDATA[Wifi]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1315</guid>
		<description><![CDATA[  Avec son chipset wifi Atheros supportant le mode monitor et l&#8217;injection de packets, sans oublier son connecteur SMA permettant de raccorder une antenne extérieure, la Fonera semble toute indiquée pour tester la sécurité de son réseau Wifi (j&#8217;ai bien dit &#171;&#160;son&#160;&#187; !).  D&#8217;autant plus que la suite aircrack-ng est disponible en paquet sous Kamikaze. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"> </p>
<p style="text-align: justify;"><img class="alignleft size-full wp-image-1333" title="fon_aircrack1" src="http://www.jopa.fr/wp-content/uploads/2009/05/fon_aircrack1.jpg" alt="fon_aircrack1" width="146" height="135" />Avec son chipset wifi <em>Atheros </em>supportant le <em>mode monitor</em> et l&#8217;injection de <em>packets</em>, sans oublier son connecteur <em>SMA </em>permettant de raccorder une antenne extérieure, la Fonera semble toute indiquée pour tester la sécurité de son réseau Wifi (j&#8217;ai bien dit &laquo;&nbsp;<strong>son</strong>&nbsp;&raquo; !).  D&#8217;autant plus que la suite<em> <a title="http://www.aircrack-ng.org/doku.php" href="http://www.aircrack-ng.org/doku.php">aircrack-ng</a></em> est disponible en paquet sous <a title="http://www.openwrt.org/" href="http://www.openwrt.org/"><em>Kamikaze</em></a>. Ce qui va inévitablement pêcher, c&#8217;est la puissance du CPU (Atheros AR2315) avec ses pauvres 183.5 BogoMIPS et éventuellement un léger problème de stockage &#8211; Quoique, la Fonéra 2 et son port <em>usb </em>permettent de facilement palier à ce manque de place.</p>
<p style="text-align: justify;">Nous pouvons, bien sûr, bricoler une solution pour contourner le problème en enregistrant les dumps sur une partition réseau (nfs, smb, etc&#8230;) ou un  quelconque support <em>usb</em>. Le tout étant de faire tourner les outils gourmands en ressources  sur une autre machine. Ca fonctionne, mais ça reste du bon vieux bricolage&#8230;</p>
<p style="text-align: justify;">Heureusement, les supermans et spidermans de la team aircrack-ng ont prévu une solution bien plus élégante&#8230; Dans ce cas précis, c&#8217;est par <a title="http://www.aircrack-ng.org/doku.php?id=airserv-ng&amp;DokuWiki=2e2067eafa2d20e7d4012738d464c2d4" href="http://www.aircrack-ng.org/doku.php?id=airserv-ng&amp;DokuWiki=2e2067eafa2d20e7d4012738d464c2d4"><em>airserv-ng</em></a> qu&#8217;ils vont briller de mille éclats.</p>
<p style="text-align: justify;">- Au passage, merci à eux pour tous leurs outils robustes et fonctionnels ! -</p>
<p style="text-align: justify;"><span id="more-1315"></span></p>
<p style="text-align: justify;"><a title="http://www.aircrack-ng.org/doku.php?id=airserv-ng&amp;DokuWiki=2e2067eafa2d20e7d4012738d464c2d4" href="http://www.aircrack-ng.org/doku.php?id=airserv-ng&amp;DokuWiki=2e2067eafa2d20e7d4012738d464c2d4"><em>Airserv-ng</em></a> est un serveur de cartes wifi qui va permettre à de nombreuses applications (au moins celles de la suite aircrack-ng) d&#8217;utiliser la carte via une connexion TCP client-serveur.</p>
<p style="text-align: justify;">Son utilisation est assez triviale, nous allons le voir dans un petit exemple.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">1 &#8211; Pré-requis</h2>
<p style="text-align: justify;">Pour notre exemple, nous utiliserons :</p>
<ul style="text-align: justify;">
<li>Une Fonera
<ul>
<li><a title="http://www.jopa.fr/index.php/2008/09/17/jouer-avec-%E2%80%9Cla-fonera%E2%80%A6%E2%80%9D-3eme-partie-openwrt-kamikaze/" href="http://www.jopa.fr/index.php/2008/09/17/jouer-avec-%E2%80%9Cla-fonera%E2%80%A6%E2%80%9D-3eme-partie-openwrt-kamikaze/">installée sous OpenWrt Kamikaze</a> (version 8.09),</li>
<li><em>aircrack-ng</em> installé  (version 1.0 rc1 r1142 : <span style="color: #800000;">opkg update &amp;&amp; opkg install aircrack-ng</span>),</li>
<li>l&#8217;interface ethernet configurée (192.168.1.1) :</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1315code45'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p131545"><td class="code" id="p1315code45"><pre class="ini" style="font-family:monospace;"># /etc/config/network
# Copyright <span style="">&#40;</span>C<span style="">&#41;</span> <span style="">2006</span> OpenWrt.org
&nbsp;
config interface loopback
        option ifname   lo
        option proto    static
        option ipaddr   127.0.0.1
        option netmask  255.0.0.0
&nbsp;
config interface lan
        option ifname   eth0
        option proto    static
        option ipaddr   192.168.1.1
        option netmask  255.255.255.0</pre></td></tr></table></div>

</li>
</ul>
<ul>
<li>l&#8217;interface wifi activée (/etc/config/wireless) :</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1315code46'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p131546"><td class="code" id="p1315code46"><pre class="ini" style="font-family:monospace;"># /etc/config/wireless
config wifi-device       wifi0
   option disabled           <span style="">0</span>
   option diversity          <span style="">0</span>
   option type           atheros
   option channel          auto
   option txantenna         <span style="">1</span>
   option rxantenna         <span style="">1</span></pre></td></tr></table></div>

<ul style="text-align: justify;">
<li>Un PC sous Debian Lenny
<ul>
<li><em>aircrack-ng</em> installé ( <span style="color: #800000;">apt-get update &amp;&amp; apt-get install aircrack-ng</span> ),</li>
<li>L&#8217;interface ethernet configurée (192.168.1.2) et connectée à la Fonera.</li>
</ul>
</li>
</ul>
<p style="text-align: justify;"><img class="size-full wp-image-1320 alignnone" title="fon_airserv-ng" src="http://www.jopa.fr/wp-content/uploads/2009/05/fon_airserv-ng.jpg" alt="fon_airserv-ng" width="307" height="205" /></p>
<h2 style="text-align: justify;">2 &#8211; Sur la fonera (le serveur)</h2>
<p>Commençons par passer la carte en mode monitor :</p>
<p><span style="color: #800000;">root@OpenWrt:~# airmon-ng start wifi0</span></p>
<p>Interface       Chipset         Driver</p>
<p>wifi0           Atheros         madwifi-ng<br />
ath0            Atheros         madwifi-ng VAP (parent: wifi0) (monitor mode enabled)</p>
<p>Et lançons <em>airserv-ng</em> :</p>
<p><span style="color: #800000;">root@OpenWrt:~# airserv-ng -d ath0<br />
Opening card ath0<br />
Setting chan 1<br />
Opening sock port 666<br />
Serving ath0 chan 1 on port 666</span></p>
<p>Par défaut, le port utilisé est le <em>666 </em>et la carte wifi est positionnée sur le <em>channel 1</em>. Ces paramètres peuvent respectivement être changés par les options <em>-p</em> et <em>-c</em>.</p>
<h2>3 &#8211; Sur la station (le client)</h2>
<p>L&#8217;utilisation des outils sur le PC ne change que par le nom de l&#8217;interface <em>wifi </em>à utiliser. Il suffit tout simplement de préciser l&#8217;adresse IP du serveur, suivi du numéro de port TCP à la place du nom de l&#8217;interface :</p>
<p><em>192.168.1.1:666</em></p>
<p>Par exemple pour <em>airodump-ng</em> :</p>
<p><span style="color: #800000;"># airodump-ng 192.168.1.1:666</span><br />
CH  4 ][ Elapsed: 32 s ][ 2009-02-06 06:30</p>
<p>BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID</p>
<pre> 00:18:84:A0:FC:ED   45       40        0    0  11  54e. WPA2 CCMP   PSK  wjopa2
 00:18:84:24:1E:7D   43       81        0    0   1  54e. OPN              FON_LINET
 00:18:84:24:1E:7E   41       96        0    0   1  54e. WPA  TKIP   PSK  LINET_PRIV
 00:1E:37:96:F8:27   14       57        0    0  10  54e  WPA  TKIP   PSK  Livebox-461a</pre>
<pre> BSSID              STATION            PWR   Rate   Lost  Packets  Probe</pre>
<h2 style="text-align: justify;">4 &#8211; En conclusion&#8230;</h2>
<p style="text-align: justify;">L&#8217;intérêt d&#8217;un tel montage est, bien sûr, l&#8217;utilisation du matériel <em>wifi </em>dont est doté la Fonera, par une station qui en est dépourvu mais dispose d&#8217;un processeur bien plus performant. Outre c&#8217;est avantage, il n&#8217;est pas déplaisant de pouvoir transformer notre Fonera en sonde <em>wifi,</em> que nous pourrons connecter au plus près de notre point d&#8217;accès. Nous réaliserons ainsi nos tests, tranquillement, sans sortir du bureau et surtout, sans devoir répondre aux collègues qui se demandent pourquoi nous travaillons dans la cage d&#8217;escalier, un labtop sur les genoux&#8230; &#8211; Hum&#8230; Ils sont vraiment bizarres ces gars de l&#8217;info&#8230;-</p>
<p style="text-align: justify;">En terminant cet article, j&#8217;imagine, qu&#8217;en bidouillant un minimum, nous pourrions nous affranchir du transformateur secteur de la Fonera en l&#8217;alimentant grâce à une batterie, de l&#8217;usb ou pourquoi pas,  depuis un switch POE.  Décidément, c&#8217;est vraiment un beau jouet cette Fonera !!!</p>
<p style="text-align: justify;"> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/05/26/airserv-aircrack-ng-fonera/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Configuration de la connection USB et Bluetooth sur GNU/Linux Debian Lenny d&#8217;un téléphone portable Nokia 3600 Slide</title>
		<link>http://www.jopa.fr/index.php/2009/04/13/configuration-de-la-connection-usb-et-bluetooth-sur-debian-lenny-dun-telephone-portable-nokia-3600-slide/</link>
		<comments>http://www.jopa.fr/index.php/2009/04/13/configuration-de-la-connection-usb-et-bluetooth-sur-debian-lenny-dun-telephone-portable-nokia-3600-slide/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 12:03:55 +0000</pubDate>
		<dc:creator>bm</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Configurations]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Téléphone]]></category>
		<category><![CDATA[Usb]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1214</guid>
		<description><![CDATA[J&#8217;ai acquis un tel portable Nokia 3600 Slide. Pourquoi ce modèle ? &#8230;Je ne sais pas, j&#8217;étais pressé, j&#8217;avais tombé mon précédent téléphone dans un torrent et l&#8217;eau fraiche et le choc l&#8217;ont &#171;&#160;espouti&#160;&#187; comme on dit à Toulouse. Ce que je suis arrivé à faire après avoir perdu mon carnet d&#8217;adresses de la carte [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">J&#8217;ai acquis un tel portable Nokia 3600 Slide.</p>
<p style="text-align: justify;">Pourquoi ce modèle ? &#8230;Je ne sais pas, j&#8217;étais pressé, j&#8217;avais tombé mon précédent téléphone dans un torrent et l&#8217;eau fraiche et le choc l&#8217;ont &laquo;&nbsp;espouti&nbsp;&raquo; comme on dit à Toulouse.</p>
<p style="text-align: justify;">Ce que je suis arrivé à faire après avoir perdu mon carnet d&#8217;adresses de la carte SIM, &#8230;et avoir bien failli passer sous Windows pour le récupérer  <img src='http://www.jopa.fr/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  :</p>
<ul>
<li><strong>le connecter sur mon microordiateur portable ASUS W5F sous Debian Lenny en USB:</strong></li>
</ul>
<p><strong><br />
</strong></p>
<p><strong><a href="http://www.jopa.fr/wp-content/uploads/2009/04/stockage_donnees.png"><img class="alignnone size-medium wp-image-1219" src="http://www.jopa.fr/wp-content/uploads/2009/04/stockage_donnees-300x187.png" alt="stockage_donnees" width="300" height="187" /></a></strong></p>
<ul>
<li><strong>le connecter sur mon microordiateur portable ASUS W5F sous Debian Lenny en bluetooth:</strong></li>
</ul>
<p><a href="http://www.jopa.fr/wp-content/uploads/2009/04/connection_bluetooh.png"><img class="alignnone size-medium wp-image-1220" src="http://www.jopa.fr/wp-content/uploads/2009/04/connection_bluetooh-300x187.png" alt="connection_bluetooh" width="300" height="187" /></a></p>
<p style="text-align: justify;">Cela permet d&#8217;uploader ou downloader des photos, videos, musique, thèmes , &#8230;.</p>
<ul>
<li><strong>le connecter sur mon ordinateur portable pour sauvegarder et recharger messages, carnet d&#8217;adresses etc &#8230;</strong></li>
</ul>
<p><a href="http://www.jopa.fr/wp-content/uploads/2009/04/xgnokiiusb.png"><img class="alignnone size-medium wp-image-1231" src="http://www.jopa.fr/wp-content/uploads/2009/04/xgnokiiusb-300x187.png" alt="xgnokiiusb" width="300" height="187" /></a></p>
<ul>
<li><strong>ressources qui m&#8217;ont aidé:</strong></li>
</ul>
<p><a title="http://www.meeus-d.be/linux/bluetooth.html" href="http://www.meeus-d.be/linux/bluetooth.html">http://www.meeus-d.be/linux/bluetooth.html</a></p>
<p><a title="http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth" href="http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth">http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth</a></p>
<p>et beaucoup:</p>
<p><a title="http://article.gmane.org/gmane.linux.bluez.devel/12155" href="http://article.gmane.org/gmane.linux.bluez.devel/12155">http://article.gmane.org/gmane.linux.bluez.devel/12155</a></p>
<p><a title="http://article.gmane.org/gmane.linux.drivers.gnokii/10729/match=3600" href="http://article.gmane.org/gmane.linux.drivers.gnokii/10729/match=3600">http://article.gmane.org/gmane.linux.drivers.gnokii/10729/match=3600</a></p>
<p>Merci à eux <img src='http://www.jopa.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span id="more-1214"></span></p>
<h2><strong>Connection bluetooth:</strong></h2>
<p style="text-align: justify;">J&#8217;ai rédigé ceci à partir de ce que j&#8217;avais fait et mon bash_history , je n&#8217;ai pas retesté &#8230;. Il se peut (c&#8217;est sûr !) que j&#8217;ai oublié quelques éléments &#8230;</p>
<p>Je suppose que la carte bluetooth<strong> de l&#8217;ordinateur portable fonctionne:</strong></p>
<p># hciconfig</p>
<p>doit renvoyer quelque chose du type:</p>
<p>hci0:    Type: USB<br />
BD Address: 00:17:31:09:95:1C ACL MTU: 384:8 SCO MTU: 64:8<br />
UP RUNNING PSCAN ISCAN<br />
RX bytes:937678 acl:55585 sco:0 events:2501 errors:0<br />
TX bytes:8285 acl:287 sco:0 commands:77 errors:0</p>
<p>Installer les paquets ci dessous<strong>:<br />
</strong></p>
<pre><span style="color: #800000;">aptitude search bluez | grep ^i</span></pre>
<pre><span style="color: #800000;">i A bluez-audio                     - Support audio bluetooth
i A bluez-gnome                     - utilitaires Bluetooth pour GNOME
i A bluez-utils                     - outils et démons Bluetooth
i A python-bluez                    - Python wrappers around BlueZ for rapid b</span></pre>
<pre><span style="color: #800000;">aptitude search bluet | grep ^i
i   gnome-bluetooth                 - GNOME Bluetooth tools
i A libbluetooth2                   - Bibliothèque pour utiliser la pile BlueZ</span></pre>
<pre><span style="color: #800000;"> aptitude search obex | grep ^i</span></pre>
<pre><span style="color: #800000;">i A gnome-vfs-obexftp               - GNOME VFS module for OBEX FTP</span></pre>
<pre><span style="color: #800000;">i A libopenobex1                    - OBEX protocol library</span></pre>
<pre><span style="color: #800000;">i A obex-data-server                - D-Bus service for OBEX client and server s</span></pre>
<pre><span style="color: #800000;">i   obexfs                          - mount filesystem of ObexFTP capable device</span></pre>
<pre><span style="color: #800000;">i   obexftp                         - file transfer utility for devices that</span> use</pre>
<p>Dans /etc/default/bluetooth vérifier que:</p>
<p><span style="color: #800000;">BLUETOOTH_ENABLED=1</span></p>
<p><span style="color: #800000;">HID2HCI_ENABLED=1</span></p>
<p><span style="color: #800000;">HIDD_OPTIONS=&nbsp;&raquo;&#8211;master &#8211;server&nbsp;&raquo;</span></p>
<p>J&#8217;ai aussi:</p>
<p><span style="color: #800000;">DUND_ENABLED=1</span></p>
<p><span style="color: #800000;">DUND_OPTIONS=&nbsp;&raquo;&#8211;listen &#8211;persist&nbsp;&raquo;</span></p>
<p>Le paquet bluez-utils contient la commande hcitool</p>
<p>Allumer le tel portable et electionner Menu -&gt;Paramètres-&gt;Connectivité-&gt;Bluetooth</p>
<p>et activer le bluetooth sur le tel portable</p>
<p>Si tout va bien:</p>
<pre><span style="color: #800000;">hcitool scan</span></pre>
<p>renvoie quelque chose comme:</p>
<pre>Scanning ...
	00:21:AB:D9:75:25	Telbm</pre>
<p>installer l2ping et en root:</p>
<pre><span style="color: #800000;">#l2ping 00:21:AB:D9:75:25</span></pre>
<pre><span style="color: #800000;">Ping: 00:21:AB:D9:75:25 from 00:17:31:09:95:1C (data size 44) ...
0 bytes from 00:21:AB:D9:75:25 id 0 time 18.87ms
0 bytes from 00:21:AB:D9:75:25 id 1 time 37.94ms
0 bytes from 00:21:AB:D9:75:25 id 2 time 38.91ms
0 bytes from 00:21:AB:D9:75:25 id 3 time 35.91ms
0 bytes from 00:21:AB:D9:75:25 id 4 time 36.92ms
0 bytes from 00:21:AB:D9:75:25 id 5 time 26.92ms
0 bytes from 00:21:AB:D9:75:25 id 6 time 29.91ms
^C7 sent, 7 received, 0% loss</span></pre>
<p>Dans  /usr/share/doc/bluez-utils/examples/</p>
<p>décompresser passkey-agent.c.gz et le compiler</p>
<pre><span style="color: #800000;">cd /usr/share/doc/bluez-utils/examples/
gunzip passkey-agent.c.gz
make</span></pre>
<pre>Lancer dans une fenêtre de terminal</pre>
<pre><span style="color: #800000;">./passkey-agent --default 0000</span></pre>
<p>Editer dans un autre terminal /etc/bluetooth/hcid.conf et y mettre ceci:</p>
<pre><span style="color: #800000;">options {
autoinit yes;
security auto;
pairing multi;

passkey "0000";
}
device {
name "asusBM";
class 0x3e0100;
iscan enable;
pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}</span></pre>
<p>Relancer bluetooth</p>
<pre><span style="color: #800000;">/etc/init.d/bluetooth restart</span>

Dans un autre terminal lancer la commande :
<span style="color: #800000;">
obexftp -b 00:21:AB:D9:75:25 -l</span></pre>
<p>Elle doit renvoyer quelque chose du genre:</p>
<pre><span style="color: #800000;"># obexftp -b 00:21:AB:D9:75:25 -l
Browsing 00:21:AB:D9:75:25 ...
Channel: 10
Connecting...done
Receiving "(null)"...\&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"
 [ &lt;!ATTLIST folder mem-type CDATA #IMPLIED&gt; ]&gt;
&lt;folder-listing version="1.0"&gt;
    &lt;folder name="Carte mémoire" user-perm="RW" mem-type="MMC"/&gt;
    &lt;folder name="Icônes" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Fichiers audio" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Thèmes" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Tonalités" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Clips vidéo" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Photos" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Enregistremts" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
    &lt;folder name="Fichiers reçus" created="20070101T000000" user-perm="R" mem-type="DEV"/&gt;
&lt;/folder-listing&gt;
done
Disconnecting...done</span>

Autoriser le téléphone portable a se connecter automatiquement

Si oui c'est gagné, sinon ...

Il ne reste plus qu'a ouvrir le navigateur de fichiers et lui dire :

Aller à : obex://[00:21:AB:D9:75:25] (cf deuxième copie d'écran en haut de l'article)</pre>
<h2>connection USB</h2>
<p>Pour accéder aux fichiers &laquo;&nbsp;généraux&nbsp;&raquo; (photos, vidéo, musique, &#8230;.</p>
<p>Au branchement du téléphone avec le câble USB il suffit de répondre &laquo;&nbsp;transfert de données&nbsp;&raquo; sur le tel portable.</p>
<p>Pour pouvoir accéder au carnet d&#8217;adresse, aux messages et au calendrier (pas testé ce dernier à ce jour) il faut installer xgnokii</p>
<pre><span style="color: #800000;">aptitude install xgnokii</span>

débrancher et rebrancher le cable USB et sur le téléphone répondre "PCSuite"

puis créer un fichier .gnokiirc</pre>
<p>et y mettre:</p>
<p><span style="color: #800000;">[global]<br />
port = /dev/ttyACM0<br />
model = AT<br />
initlength = default<br />
connection = serial<br />
use_locking = no<br />
serial_baudrate = 19200<br />
smsc_timeout = 10<br />
[xgnokii]<br />
allow_breakage = 0<br />
[gnokiid]<br />
bindir = /usr/sbin/</span></p>
<p>Lancer la commande</p>
<pre><span style="color: #800000;">gnokii --monitor</span></pre>
<p>qui doit renvoyer quelque chose du genre:</p>
<pre><span style="color: #800000;">gnokiid Version 0.6.27</span></pre>
<pre>Entrée en mode surveillance...</pre>
<pre><span style="color: #800000;">Network: France Telecom, France (208 01)</span></pre>
<pre><span style="color: #800000;">LAC: 4302 (17154), CellID: 00006ea2 (28322)</span></pre>
<pre><span style="color: #800000;">Niveau RF: 6</span></pre>
<pre><span style="color: #800000;">Batterie: 68</span></pre>
<pre><span style="color: #800000;">Source d'energie: Battery</span></pre>
<pre><span style="color: #800000;">SIM: Utilise 0, Disponible 150</span></pre>
<pre><span style="color: #800000;">Telephone: Utilise 79, Disponible 1921</span></pre>
<pre><span style="color: #800000;">DC: Utilise 9, Disponible 11</span></pre>
<pre><span style="color: #800000;">FD: Utilise 5, Disponible 25</span></pre>
<pre><span style="color: #800000;">MC: Utilise  0, Disponible 20</span></pre>
<pre><span style="color: #800000;">RC: Utilise 0, Disponible 20</span></pre>
<pre><span style="color: #800000;">Appel0: inactif</span></pre>
<pre><span style="color: #800000;">Appel1: inactif</span></pre>
<pre><span style="color: #800000;">Niveau RF: 6</span></pre>
<pre><span style="color: #800000;">Batterie: 68</span></pre>
<pre><span style="color: #800000;">Source d'energie: Battery</span></pre>
<pre><span style="color: #800000;">SIM: Utilise 0, Disponible 150</span></pre>
<pre><span style="color: #800000;">Telephone: Utilise 79, Disponible 1921</span></pre>
<pre><span style="color: #800000;">DC: Utilise 9, Disponible 11</span></pre>
<pre><span style="color: #800000;">FD: Utilise 5, Disponible 25

...</span></pre>
<p>Si cela fonctionne  lancer en utilisateur xgnokii (cf troisieme copie d&#8217;écran en haut de l&#8217;article)</p>
<p>Je ne me souviens plus si j&#8217;ai essayé de le connecter en bluetooth avec xgnokii.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/04/13/configuration-de-la-connection-usb-et-bluetooth-sur-debian-lenny-dun-telephone-portable-nokia-3600-slide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fonera 2.0 en serveur NFS sous Openwrt Kamikaze</title>
		<link>http://www.jopa.fr/index.php/2008/12/05/fonera-20-en-serveur-nfs-sous-openwrt-kamikaze/</link>
		<comments>http://www.jopa.fr/index.php/2008/12/05/fonera-20-en-serveur-nfs-sous-openwrt-kamikaze/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 23:01:19 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Disque dur]]></category>
		<category><![CDATA[Fonera]]></category>
		<category><![CDATA[Openwrt]]></category>
		<category><![CDATA[Réseau]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=933</guid>
		<description><![CDATA[Lors de précédents retours d&#8217;expériences, j&#8217;ai montré comment installer Openwrt et  gérer des périphériques de stockage usb sur une Fonera 2.0. L&#8217;idée aujourd&#8217;hui est de pousser plus loin en transformant cette Fonera en serveur NFS. Pour cela, je dispose d&#8217;une Fonera 2.0 flashée sous Openwrt kamikaze (8.09 RC1) sur laquelle est connecté un disque usb [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2008/12/fonera_disque.jpg"><img class="alignleft size-full wp-image-941" title="fonera_disque" src="http://www.jopa.fr/wp-content/uploads/2008/12/fonera_disque.jpg" alt="" width="171" height="154" /></a>Lors de précédents retours d&#8217;expériences, j&#8217;ai montré comment <a title="http://www.jopa.fr/index.php/2008/10/22/flash-de-la-fonera-2-2202-avec-openwrt/" href="http://www.jopa.fr/index.php/2008/10/22/flash-de-la-fonera-2-2202-avec-openwrt/">installer Openwrt</a> et  <a title="http://www.jopa.fr/index.php/2008/10/24/openwrt-usbstorage-cle-usb/" href="http://www.jopa.fr/index.php/2008/10/24/openwrt-usbstorage-cle-usb/">gérer des périphériques de stockage usb</a> sur une <em>Fonera</em> 2.0. L&#8217;idée aujourd&#8217;hui est de pousser plus loin en transformant cette <em>Fonera</em> en serveur NFS.</p>
<p style="text-align: justify;">Pour cela, je dispose d&#8217;une <em>Fonera</em> 2.0 flashée sous <em>Openwrt</em> <em>kamikaze</em> (8.09 RC1) sur laquelle est connecté un disque usb formaté en ext3. Le réseau est correctement configuré et opérationnel.</p>
<p><span id="more-933"></span></p>
<p style="text-align: justify;">Commençons par installer quelques paquets indispensables :</p>
<ul>
<li><strong>kmod-usb2</strong> : gestion de l&#8217; USB,</li>
<li><strong>kmod-usb-storage</strong> : gestion des périphériques de stockages USB,</li>
<li><strong>kmod-fs-ext3</strong> : prise en charge des systèmes de fichiers ext3,</li>
<li><strong>nfs-kernel-server</strong> : serveur nfs,</li>
<li><strong>nfs-kernet-server-utils</strong> : utilitaires optionnels (tels que <em>nfstat</em>),</li>
<li><strong>portmap </strong>: indispensable pour le serveur nfs et pourtant oublié dans les dépendances.</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p933code52'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93352"><td class="code" id="p933code52"><pre class="sh" style="font-family:monospace;"># opkg update
# opkg install kmod-usb2
# opkg install kmod-usb-storage
# opkg install kmod-fs-ext3
# opkg install nfs-kernel-server
# opkg install nfs-kernel-server-utils
# opkg install portmap</pre></td></tr></table></div>

<p>Une fois les paquets installés, le disque devrait être reconnu et automatiquement monté dans <em>/mnt/usbdrive</em>.</p>
<p>Le suite consiste à configurer l&#8217;export <em>nfs</em>.</p>
<p>Pour cela, il faut éditer le fichier <em>/etc/exports</em>.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p933code53'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93353"><td class="code" id="p933code53"><pre class="ini" style="font-family:monospace;">/mnt/usbdrive    192.168.7.0/<span style="">24</span> <span style="">&#40;</span>rw,no_root_squash,async<span style="">&#41;</span></pre></td></tr></table></div>

<ul>
<li>export de /mnt/usbdrive,</li>
<li>pour toutes les machines du réseau 192.168.7.0,</li>
<li>en lecture et écriture,</li>
<li>autoriser root à accéder aux fichiers,</li>
<li>en asynchrone.</li>
</ul>
<p>Il ne reste plus qu&#8217;à démarrer le serveur nfs :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p933code54'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93354"><td class="code" id="p933code54"><pre class="sh" style="font-family:monospace;"># /etc/init.d/portmap start
# /etc/init.d/nfsd start</pre></td></tr></table></div>

<p>Pour activer le lancement automatique des démons au démarrage d&#8217;<em>openwrt :</em></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p933code55'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93355"><td class="code" id="p933code55"><pre class="sh" style="font-family:monospace;"># /etc/init.d/portmap enable
# /etc/init.d/nfsd enable</pre></td></tr></table></div>

<p>Côté client nfs, le montage se fait classiquement :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p933code56'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93356"><td class="code" id="p933code56"><pre class="sh" style="font-family:monospace;"># mount -t nfs adresse_ip_fonera:/mnt/usbdrive /mnt/owrt</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2008/12/05/fonera-20-en-serveur-nfs-sous-openwrt-kamikaze/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

