Christophe Nowicki

August 1, 2009

Laconica, un twitter libre!

Pour ceux qui me côtoient tous les jours, j’ai principalement deux gros défauts:

  • Je m’intéresse à trop de choses … ;-)
  • J’envoie de la “propagande” par Jabber à mes contacts.

Du coup, le principe du Micro-blogging et du service Twitter m’a beaucoup séduit.

Mais comme je suis un Ayatollah du logiciel libre et que je prône l’auto-hébergement.
Mon inscription sur un service web deux points zéro centralisé aurait fait un peu tâche dans ma pratique du logiciel libre radical (vu le nombre de mots clés dans cette phrase, je pense que je vais avoir droit à une décente des RG ;-) ).

Je viens de trouver la solution, Laconica (prononcé “luh-KAWN-ih-kuh”), un logiciel de micro-blogging libre écrit en PHP. L’objet de cet article est de décrire l’installation, la configuration et la mise en place de passerelles (mail, twitter, sms, et jabber) sur un serveur Debian GNU/Linux.

Les Fonctionnalités

Le logiciel dispose des fonctionnalités suivantes :

  • Micro-blogging ;
  • Export des données au format RSS / Atom ;
  • Authentification via OpenID ;
  • Gestion de plusieurs comptes ;
  • Interface Jabber : notification et post ;
  • Interface avec Twitter ;
  • Notification via SMS ;
  • Feuille de style pour les mobiles ;
  • Une traduction de qualité en Français ;
  • Gestion du format FOAF ;
  • Intégration avec de nombreuses application ;
  • Affichage des messages via un “badge” directement dans le code de votre site web : Identica Badge ;
  • Génération automatique de Sitemaps pour le référencement ;
  • Support du protocole OpenMicroBlogging pour le suivi décentralisé des messages.

Pré-requis

Pour l’installation de Laconica vous avez besoin :

  • d’un serveur sous Debian GNU/Linux ;
  • serveur HTTP comme Apache 2 ;
  • base de donné comme MySQL ou bien Postgresql ;
  • d’un serveur de Mail ;
  • d’un serveur Jabber (optionnel) ;

Installation des dépendances

Le programme nécessite les dépendances suivantes :

# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-mysql php5-gd php5-cli php-pear php-mail php-db php-http php-xml-parser php5-curl

Installation du logiciel

Laconica, est une application web, l’installation consiste simplement à extraire le fichier tgz dans le répertoire /var/www et configurer Apache.

# cd /var/www
# wget http://laconi.ca/laconica-0.8.0.tar.gz
# tar xvf laconica-0.8.0.tar.gz
# ln -s laconica-0.8.0 laconica
# chown www-data: laconica-0.8.0
# cd laconica
# mv htaccess.sample .htaccess

Il faut éditer le fichier .htaccess pour modifier la règle RewriteBase.

Vous devez ensuite configurer le site web pour Apache en mettant le contenu suivant dans le fichier /etc/apache2/sites-available/laconica :

<virtualhost *:80>
ServerName mblog.nom_de_domaine
ErrorLog /var/log/apache2/mblog.nom_de_domaine/error.log
CustomLog /var/log/apache2/mblog.nom_de_domaine/access.log common
DocumentRoot /var/www/laconica
</virtualhost>

Il faut créer le répertoire pour les logs du site, activer le site et le module rewrite dans Apache :


# mkdir /var/log/apache2/mblog.nom_de_domaine/
# a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
# a2ensite laconica
Enabling site laconica.
Run '/etc/init.d/apache2 reload' to activate new configuration!
# /etc/init.d/apache2 restart

Vous devez créer une base de données avec MySQL ou PostgreSQL et attribuer tous les droits sur la base à un utilisateur.

Vous pouvez ensuite pointer votre navigateur sur l’adresse de votre site : http://mblog.nom_de_domaine/install.php

La procédure d’installation vous demande simplement les informations de connexion à la base de données.

Une fois l’installation effectuée, vous pouvez vous enregistrer et utiliser l’application.

Configuration Mono-utilisateurs

Une fois que vous avez créer votre compte et que vous êtes le seul à utiliser l’application; il faut interdire les enregistrements de nouveau compte en modifiant le fichier config.php :
$config['site']['closed'] = true;

Configuration de la passerelle Twitter

Mouahah, et puis quoi encore? Non, je n’ai pas testé, je n’ai pas réussi à créer un compte …
Mais d’après la documentation de Laconica, il suffit de saisir son login et mot de passe.

Configuration de la passerelle de Messagerie

Pour cette partie, il faut créer un alias spécial sur votre serveur de messagerie.
Voici ma configuration pour Postfix.
Dans le fichier /etc/aliases, il faut ajouter la ligne suivante :
*:|/var/www/laconica/scripts/maildaemon.php
Refaire la base des alias de postfix :
# postalias /etc/aliases
Rendre le fichier maildaemon.php exécutable.
chmod +x /var/www/laconica/scripts/maildaemon.php
Ce script pour fonctionner nécessite l’extension PECL mailparse de PHP.
La procédure d’installation est la suivante :
# apt-get install dh-make-php php5-dev xsltproc
# cd /usr/src/
# dh-make-pecl --only 5 mailparse
downloading mailparse-2.1.5.tgz ... Starting to download mailparse-2.1.5.tgz (37,332 bytes) ..........done: 37,332 bytes File /var/www/laconica/scripts/mailparse-2.1.5.tgz downloaded
Creating debian source package: php-mailparse-2.1.5
Upstream is: Wez Furlong, Brian Shire
Guessing Maintainer: root
# cd php-mailparse-*/
# dpkg-buildpackage -b
...
# dpkg -i ../php5-mailparse_2.1.5-1_i386.deb

Une fois la passerelle en place, il faut créer une adresse “incoming” :
Pour cela, il faut aller dans la configuration e-mail de votre compte et cliquer sur nouveau pour obtenir une adresse de type : XMWY7QTL3MR42@votre_nom_de_domaine.

Vous pouvez ensuite envoyer un mail à cette adresse et vérifier que tout ce passe bien dans les logs de postfix :

Jul 31 11:02:50 mail postfix/local[30821]: E76C8F40FB: to=<XMWY7QTL3MR42@csquad.org>, relay=local, delay=0.56, delays=0.01/0/0/0.55, dsn=2.0.0, status=sent (delivered to command: /var/www/laconica/scripts/maildaemon.php)

Une petite astuce pour une installation perso, est de faire un seul alias et de modifier le contenu de la table user.incomingemail dans la base de données.

Configuration de la passerelle Jabber

Il faut modifier le fichier de configuration config.php et ajouter les lignes suivantes :

$config['xmpp']['enabled'] = true;
$config['xmpp']['server'] = "jabber.csquad.lan";
$config['xmpp']['port'] = 5222;
$config['xmpp']['user'] = "laconica";
$config['xmpp']['password'] = "***********";
$config['xmpp']['encryption'] = true;
$config['daemon']['user'] = "www-data";
$config['daemon']['group'] = "www-data";

Laconica, ne sait pas s’enregistrer auprès du serveur, ni s’ajouter dans votre roaster, il faut donc le faire manuellement,
soit à l’aide d’un client Jabber classique ou bien à l’aide de l’interface d’administration de votre serveur.
Ejabberd permet de le faire directement via l’interface Web.

Vous pouvez ensuite lancer le daemon à l’aide de php en ligne de commande :

# cd /var/www/laconica/
# php scripts/xmppdaemon.php -f
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): INITIALIZE XMPPDaemon laconica@jabber.csquad.lan/uniquenamedaemon
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Connecting to jabber.csquad.lan on port 5222
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Connected
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Sending initial presence.
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Done connecting.
2009-07-31 06:59:42 LOG_DEBUG: XMPPDaemon(uniquenamedaemon): Initializing stanza handlers.
2009-07-31 06:59:42 LOG_DEBUG: XMPPDaemon(uniquenamedaemon): Beginning processing loop.

Une fois lancé, le contact du micro blog doit apparaître dans votre client Jabber.
Mais lorsque vous lui parlez, il ne vous reconnait pas. Il faut donc associé le compte Jabber à votre compte Laconica.
Pour cela, rendez-vous sur l’interface de configuration à l’adresse suivante : http://mblog.votre_nom_de_domaine/settings/im,
et saisissez votre adresse Jabber que Laconica vous demandera de confirmer à l’aide d’une url de vérification.

Et voila, tous les messages que vous envoyez à ce contact Jabber se retrouvent directement sur votre micro blog ;-)
Et lorsqu’un utilisateur poste un message vous recevez celui-ci sur votre compte Jabber.

Suivre une personne de manière distribuée

Pour suivre une personne sur Laconica de manière distribuée, il suffit de cliquer sur le bouton subscribe du profil.
L’application vous demande, le pseudo de la personne et l’url de votre profil.
Celle-ci est de la forme : http://laconica.<votre_domaine>/<nickname>/.

Conclusion

Et voilà ! Laconica ça poutre les ours ! ;-)

Filed under: Debian,Network — Tags:, , , , , — cscm @ 14:00

July 12, 2009

Diffuser des flux TV sur réseau local avec MuMuDVB

Je viens d’ajouter la diffusion des flux TV à mon installation domotique.
L’objectif est de pouvoir visionner la télévision sur l’ensemble des équipements de la maison.
Pour cela, j’ai mis en place un serveur de diffusion.
Celui-ci distribue la vidéo en Multicast à l’aide du programme MuMuDVB.

Préambule

Je sens qu’après la lecture de la courte description, vous allez me dire :

“Mais tu ne connais pas le multiposte chez Free???”.

Évidemment, je connais le service de Free, mais mon objectif est de fournir le même type de service pour contourner les limitations de l’existant :

  • la limitation à deux postes (et encore si vous avez un bon débit) ;
  • l’empiètement sur la bande passante des autres services ;
  • l’absence de chaînes culturelles^W comme TF1 et M6.

Matériel nécessaire

Vous avez besoin :

  • d’un poste client avec vlc ou mplayer ;
  • d’un serveur de diffusion (sous Debian GNU/Linux de préférence ;-) ) avec MuMuDVB ;
  • d’un réseau local ;
  • d’une carte tuner TV numérique (DVB-T, DVB-S, DVB-C) ;

Pour ma part, j’ai pris une carte tuner Hauppauge WinTV NOVA T-500 chez Materiel.net.

Les limitations en fonction de la technologie de diffusion

Vous avez le choix parmi les technologies de réceptions suivantes :

  • DVB-T (Télévision numérique terrestre ou TNT) ;
  • DVB-S (Satellite) ;
  • DVB-C (Câble).

Les émetteurs diffusent plusieurs chaînes sur une fréquence (4 à 6).
Un tuner DVB, ne peut capter qu’une seule fréquence, cela veut donc dire qu’avec ma carte Hauppauge WinTV NOVA T-500, je peux diffuser au maximum 8 à 12 chaînes.
Il faut donc ajouter d’autres cartes / tuner en fonction du nombre de chaînes que vous voulez diffuser.

Installation de mumudvb

Pour les versions “sid” et “squeeze” de Debian, le paquet est directement disponible via apt.
Pour la version stable, vous pouvez télécharger le paquet sur le site du projet ou “back-porter” la version sid/squeeze.

Installation de la carte tuner DVB-T

Ma carte est reconnue sans problème, il faut simplement télécharger le firmware, le copier dans le répertoire /lib/firmware et charger le module dvb_usb_dib0700.
Vous devez ensuite avoir les différents tuner dans le répertoire : /dev/dvb
$ ls /dev/dvb
adapter0 adapter1

Recherche des fréquences

Pour trouver les fréquences des chaînes de télévision, il faut installer le paquet dvb-apps.
Celui-ci contient les fréquences des différents transpondeurs dans le répertoire /usr/share/dvb.
Dans le cas de mon émetteur, je trouve les informations dans le fichier : /usr/share/dvb/dvb-t/fr-Paris :
# Paris - France - various DVB-T transmitters
# contributed by Alexis de Lattre
# Paris - Tour Eiffel : 21 24 27 29 32 35
# Paris Est - Chennevières : 35 51 54 57 60 63
# Paris Nord - Sannois : 35 51 54 57 60 63
# Paris Sud - Villebon : 35 51 56 57 60 63
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 474166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
T 498166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
T 522166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE

Configuration de MumuDVB

Pour la configuration de MumuDVB, nous allons nous créer un répertoire spécial /etc/mumudvb et faire un fichier de configuration par carte.
Voici le contenu de mon fichier /etc/mumudvb/card0.conf :

autoconfiguration=2
freq=474166

Celui-ci contient la fréquence issue du fichier fr-Paris et une directive pour dire à MumuDVB de se débrouiller ;-)
Vous pouvez ensuite tester cette configuration en ligne de commande à l’aide d’un compte utilisateur qui fait parti du groupe vidéo :

$ id
$ mumudvb -d -c /etc/mumudvb/card0.conf

Les images sont diffusées sur le réseau, nous pouvons passer à la phase la plus dur du projet : le visionage ;-)

Visionage avec VLC

vlc_mumudvb_sap Mumudvb prend en charge le protocole Session Announcement Protocol (SAP).
Il suffit donc de lancer VLC, afficher la liste de lecture, et activer la découverte de service SAP.

Configuration de Freevo

Pour afficher les chaînes dans Freevo, il faut les définir dans le fichier de configuration local_config.py de cette manière :

TV_VIDEO_GROUPS[0].group_type = 'udp'
TV_CHANNELS = [
( 'C2.telepoche.com', 'France 2', '@239.100.1.1:1234' ),
( 'C3.telepoche.com', 'France 3', '@239.100.1.5:1234' ),
( 'C28.telepoche.com', 'France 4', '@239.100.0.5:1234' ),
( 'C7.telepoche.com', 'France 5', '@239.100.1.2:1234'),
( 'C5.telepoche.com', 'ARTE', '@239.100.1.4:1234' ),
( 'C167.telepoche.com', 'Direct 8', '@239.100.0.0:1234' ),
( 'C195.telepoche.com', 'Gulli', '@239.100.0.4:1234' ),
( 'C194.telepoche.com', 'BFM TV', '@239.100.0.1:1234'),
( 'C170.telepoche.com', 'LCP', '@239.100.1.3:1234')
]

Le group_type udp, n’est pas pris en compte par le plugin mplayer de Freevo, il faut donc modifier le fichier /usr/lib/python2.5/site-packages/freevo/tv/plugins/mplayer.py, vers la ligne 134, pour l’ajouter :

elif vg.group_type == 'udp':
self.fc.chanSet(tuner_channel, True, app='mplayer')
tvcmd = ''
args += ('"udp://%s" %s' % (tuner_channel, config.MPLAYER_ARGS['udp']),)

Vous pouvez, modifier les options de mplayer à l’aide de la variable MPLAYER_ARGS :

MPLAYER_ARGS = { 'dvd' : '-cache 8192',
...
'udp' : '-cache 1024 -vf pp=md -fs',
'default': '-cache 5000'
....
}

Comme cela, vous pouvez afficher la télévision sur Freevo. Par contre, la qualité de l’image est inférieure à celle de VLC, mais je n’ai pas encore trouver la source du problème.

Charge réseau et processeur

iftop_mumudvb

Au niveau de la charge réseau, une chaîne nécessite de 2 à 5Mb, cela signifie qu’avec une interface réseau à 100Mb, il est possible de diffuser plus de 20 chaînes.

Pour la charge processeur, celle-ci est quasiment inexistante, si vous vous contentez de diffuser les flux sur le réseau la quantité de puissance processeurs nécessaire est très faible, d’après le Wiki de Mumudvb il est possible de faire fonctionner sur un NSLU2 avec un dongle TNT USB.

Par contre, si vous voulez transcoder le flux vous allez avoir besoin d’une ou de plusieurs bonnes machines.

Affichage d’une Mosaic de chaînes

vlc_mosaic_mumudvb

Si vous voulez, une Mosaic, il est possible d’assembler les flux udp avec VLC.
La procédure est décrite sur le wiki de VLC : Mosaic – VideoLAN Wiki.

Attention : pont réseau + OpenVPN + Mutlicast = Crash

Il faut faire attention, si vous utilisez des ponts réseaux (Bridge) avec OpenVPN.

Dans ce cas très précis, OpenVPN s’amuse à chiffrer l’ensemble des paquets qui arrivent dans le bridge.
Si votre machine n’est pas suffisamment puissante, alors OpenVPN va planter au bout de quelques minutes :

Sun Jul 12 22:46:25 2009 us=801259 MULTI: packet dropped due to output saturation (multi_add_mbuf)

La meilleure chose à faire est donc de bloquer le flux multicast au niveau du bridge avec ebtables.

Des éléphants dans le salon

Si votre réseau Ethernet supporte les Jumbo Frames.
Il suffit de modifier la taille des paquets distribués par Mumudvb dans le fichier mumudvb.h :
$ fgrep MAX_UDP_SIZE /usr/src/mumudvb/src/mumudvb.h
#define MAX_UDP_SIZE (TS_PACKET_SIZE*46)

Après avoir recompilé le programme, vous pouvez vérifier que cela fonctionne avec Tcpdump :
# tcpdump -i bond0 port 1234
13:30:59.830361 IP loutre.csquad.lan.1234 > 239.202.204.200.1234: UDP, length 8648

Le principal avantage des Jumbo Frames est de réduire le nombre de paquets sur le réseau.

Conclusion

Les principaux avantages du passage de mon système de télévision en numérique et l’adaptation du standard DVB sont :

  • la possibilité de diffuser le flux sur plusieurs postes ;
  • il n’y a plus de limite pour l’enregistrement du flux ;
  • la possibilité de modifier le flux (transcodage, mosaic, etc..) ;
  • la possibilité d’avoir la télévision sur des appareils mobiles ;
  • au niveau du câblage domotique, la diffusion la télévision via le Wifi et/ou l’Ethernet.

Je vais faire d’autres articles sur le sujet, pour expliquer comment j’ai réussi à diffuser le flux TV sur ma PlayStation Portable (PSP) et mon Nokia 770.

Filed under: Debian,Home automation — Tags:, , , , , — cscm @ 22:22

June 11, 2009

Héberger son propre fournisseur d’identité OpenID

Présentation d’OpenID

OpenID est un système d’authentification décentralisé qui permet l’authentification unique, ainsi que le partage d’attributs. Il permet à un utilisateur de s’authentifier auprès de plusieurs sites compatibles sans avoir à retenir un identifiant pour chacun d’eux mais en utilisant à chaque fois un unique identifiant OpenID.

Cette identifiant se presente sous forme d’URL, celle-ci contient l’adresse du serveur d’identification et le nom de l’utilisateur : http://id.csquad.org/identity/cscm

Je trouve ce système d’identification pratique, car je change de poste de travail ( portable, station de travail, etc…) et je n’ai pas trouvé de solution de synchronisation de mot de passe convaincante.

Pourquoi héberger son propre fournisseur d’identité?

Héberger son propre serveur d’identité vous permet de gérer votre identité numérique.
C’est à dire, déterminer les informations personnelles que vous fournissez au service que vous utilisez.
Héberger ce type de service sur son propre serveur vous garantit que vous avez la main sur vos données personnelles.
Cela vous garantit que :

  • les autres fournisseurs d’identité n’exploitent pas vos données personnelles ;
  • votre compte restera toujours actif, en effet rien ne vous garantit qu’un fournisseur d’identité ne cesse son activité ;
  • une liberté en matière de politique de mot de passe / choix de l’identifiant / nombre de comptes, etc…

Présentation de Community-ID

Community-ID est une application PHP, compatible avec les spécifications OpenID 2.0 sous licence BSD.
Il propose les fonctionnalités suivantes :

  • comptes d’utilisateurs ;
  • données personnelles ;
  • sites fédérés ;
  • historique ;

Configuration de Community-ID sur un serveur Debian GNU/Linux

Voici la procédure d’installation de la version 1.0 de Community-ID sur une distribution Debian GNU/Linux version “Lenny”.

Vous avez besoin :

  • d’un nom de domaine ;
  • d’un serveur Apache avec le support de PHP 5 et le module rewrite ;
  • d’une base de données MySQL avec phpMyAdmin ;

Configuration de MySQL

A l’aide de phpMyAdmin, créer un utilisateur communityid et créer une base portant le même nom en lui donnant tous les privilèges sur cette base.

Installation dépendances

Le programme nécessite les dépendances suivantes :

# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-mysql php5-gd php5-gmp

Installation du programme

Vous pouvez télécharger le programme sur SourceForge : Community-ID.
et extraire le fichier tar.gz dans le répertoire /var/www :


# cd /var/www
# wget http://freefr.dl.sourceforge.net/sourceforge/communityid/cid-1.0.0.tar.gz
# tar xzf cid-1.0.0.tar.gz
# chown www-data: -R communityid

Vous devez ensuite configurer le site web pour Apache en mettant le contenu suivant dans le fichier /etc/apache2/sites-available/communityid :


<VirtualHost *:80>
ServerName id.nom_de_domaine
ErrorLog /var/log/apache2/id.nom_de_domaine/error.log
CustomLog /var/log/apache2/id.nom_de_domaine/access.log common
DocumentRoot /var/www/communityid/webdir
</VirtualHost>

Il faut créer le répertoire pour les logs du site, activer le site et le module rewrite dans Apache :

# mkdir /var/log/apache2/id.nom_de_domaine/
# a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
# a2ensite communityid
Enabling site communityid.
Run '/etc/init.d/apache2 reload' to activate new configuration!
# /etc/init.d/apache2 restart

Configuration

Vous pouvez ensuite pointer votre navigateur sur l’adresse de votre site : http://id.nom_de_domaine/
La procédure d’installation vous demande les informations de connexion à la base de données pour configurer celle-ci.
Une fois la base de données crée, vous pouvez vous connecter à l’interface à l’aide de l’utilisateur admin et du mot de passe admin, pour vous créer un compte.

Liste des services compatibles

Voici la liste des quelques services que j’utilise avec mon serveur OpenID :

Il existe de nombreux services compatibles avec ce système d’authentification, référencés par l’annuaire OpenID Directory.

Les principaux systèmes de blog proposent le support d’OpenID sous forme de plugin :

Si vous avez réussi à installer votre fournisseur d’identité, vous pouvez vous connecter sur mon blog pour me laisser un commentaire ;-)

Filed under: Debian — Tags:, — cscm @ 07:31

May 7, 2009

Configuration du module Current Cost CC128 et intégration dans un réseau domotique xPL

Le Current Cost CC128 est un système de suivi de la consommation électrique.
Il est composé de deux modules : une pince ampère-métrique sans fils et un module de réception de données.
L’objectif du produit est de suivre la consommation de votre installation électrique.

En effet, la première étape pour faire des économies d’énergie est de connaitre sa consommation.
C’est pour cela, que j’ai cherché une solution simple pour monitorer mon installation de manière informatisée.

Les compteurs d’électricité EDF récents disposent d’une sortie téléinfo : cette sortie permet de récupèrer la consommation sur un PC via le port série ou USB à l’aide d’un montage électronique comme celui-ci.

Malheureusement, mon compteur est trop vieux et ne dispose pas d’une sortie téléinfo.
J’ai donc cherché une solution alternative que j’ai trouvée grâce au forum Toute la domotique.

Il est possible de se procurer le module et le câble de données USB via la boutique eBay du constructeur : Current Cost Ltd.

L’objectif de ce billet est de configurer le module CC128 sur une distribution Debian GNU/Linux, version “Lenny” dans un réseau domotique xPL à l’aide du projet xpl-perl.

Installation matériel

L’installation matériel est assez simple, il suffit de brancher le module via le câble USB pour le voir à l’aide de la commande lsusb :

$ lsusb
Bus 001 Device 008: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Le module est visible sous forme de port série via /dev/ttyUSB :

$ dmesg
pl2303 1-2.1.1.1.2:1.0: pl2303 converter detected
usb 1-2.1.1.1.2: pl2303 converter now attached to ttyUSB0
usbcore: registered new driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

Installation de xPL-Perl

Pour faire fonctionner le module CC128, j’utilise la version SVN du projet, XPL-Perl.
Voici la procédure d’installation, il faut commencer par installer les paquets suivants via apt :

# apt-get install subversion libmodule-pluggable-perl libyaml-perl make fakeroot dh-make-perl dpkg-dev debhelper libtimedate-perl gcc libyaml-syck-perl

Télécharger le code source de la version svn :

# cd /usr/src
# svn co http://www.xpl-perl.org.uk/svn/xpl-perl/trunk xpl-perl
# cd xpl-perl
# dpkg-buildpackage -b
...
# cd ..
# dpkg -i libxpl-perl*.deb

Les différents modules xpl sont lancés sous forme de daemon, pour simplifier leur gestion le plus simple est d’installer daemontools sur la machine :

# apt-get install daemontools daemontools-run

Vous pouvez configurer le hub xpl et le module xpl-rrd grâce au script : xpl-perl-setup

# xpl-perl-setup
Using /usr/bin as directory for xpl-perl scripts

Setting up xpl-hub service

Setting up xpl-rrd service

Setting up xpl-rrd crontab
/etc/cron.d/xpl-rrd created

heyu not install not setting up xpl-x10

DateTime::Event::Sunrise not available, not configuring xpl-dawndusk

1-wire filesystem, /ow, not available, not configuring xpl-owfs
set XPL_OWFS environment variable to mount point if it is not /ow

XPL_RFXCOM_RX_TTY not defined, not configuring xpl-rfxcom-rx

XPL_RFXCOM_TX_TTY not defined, not configuring xpl-rfxcom-tx

XPL_VIOM_TTY not defined, not configuring xpl-viom

XPL_W800_TTY not defined, not configuring xpl-w800

hddtemp daemon not running, not configuring xpl-hddtemp

Vous pouvez vérifier le bon fonctionnement du module en ligne de commande :

# xpl-currentcost -v /dev/ttyUSB0
Listening on 192.168.42.4:2135
Sending on 192.168.42.255
xpl-trig/sensor.basic: bnz-ccost.tof -> * - cc128.00077.0.1[current]=1095
xpl-trig/sensor.basic: bnz-ccost.tof -> * - cc128.00077.0[current]=1095
xpl-trig/sensor.basic: bnz-ccost.tof -> * - cc128.00077.0[temp]=23.1

La cela fonctionne, le module diffuse la valeur de la consommation sur le réseau xPL.
Nous allons ensuite configurer deamontools pour lancer le script au boot sous forme de service.

# cd /etc/xplperl/service/
# cp -r xpl-hub/ xpl-currentcost
# chown -R xplperllog: /etc/xplperl/service/xpl-currentcost/log/main/
# adduser xplperl dialout
Adding user `xplperl' to group `dialout' ...
Adding user xplperl to group dialout
Done.
# sed -i 's#xpl-hub -v#xpl-currentcost -v /dev/ttyUSB0#' /etc/xplperl/service/xpl-currentcost/run
# sed -i 's#xplperl#root#' /etc/xplperl/service/xpl-currentcost/run
# sed -i 's#-d300000#-d9000000#' /etc/xplperl/service/xpl-currentcost/run
# update-service --add /etc/xplperl/service/xpl-currentcost/
Service xpl-currentcost added.

Et voila, normalement vous devriez voir des messages ur le réseau xPL à l’aide de xp-logger :

xpl-logger
192.168.42.2:52393 [xpl-stat/hbeat.app: bnz-listener.tux -> *]
192.168.42.2:52393 [xpl-trig/sensor.basic: bnz-ccost.tof -> * - cc128.00077.0.1[current]=1085]
192.168.42.2:52393 [xpl-trig/sensor.basic: bnz-ccost.tof -> * - cc128.00077.0[current]=1085]
192.168.42.2:52393 [xpl-trig/sensor.basic: bnz-ccost.tof -> * - cc128.00077.0[temp]=23.3]

Conclusion

Voila, grâce au module xpl-currentcost, les informations sur la consommation éléctrique sont diffusées sur le réseau xPL. Ma prochaine étape sera d’achiver les données dans une base de données et de dessiner des graphiques.

Filed under: Debian,Home automation — Tags:, — cscm @ 21:51

April 30, 2009

Configuration de l’USB-UIRT (Universal Infrared Receiver Transmitter) sous Debian GNU/Linux

L’USB-UIRT est un petit module qui se branche sur le port USB et qui permet d’envoyer et recevoir des ondes infrarouges.
Je l’utilise pour controler les différents éléments de mon installation home-cinéma (Amplificateur Audio/Vidéo, Freebox, Lecteur de DVD, etc…) à partir de ma machine Multimédia fonctionnant sous Debian GNU/Linux “Lenny”.
J’ai acheté mon module chez Domadoo en France : USB-UIRT (Universal Infrared Receiver/Transmitter).
L’objet de ce billet est l’installation du module sous Debian GNU/Linux.

Installation du matériel

Lorsque vous branchez le module sur le port USB, vous devez le voir via la commande lsusb :

$ lsusb
Bus 001 Device 025: ID 0403:f850 Future Technology Devices International, Ltd

Il faut ensuite charger le module ftdi_sio, le mettre dans le fichier /etc/modules, lors du chargement du module vous devez avoir les informations suivantes dans le fichier /var/log/messages :

[ 23.114110] ftdi_sio 4-1.1.1.1.1:1.0: FTDI USB Serial Device converter detected
[ 23.114110] ftdi_sio: Detected FT232RL
[ 23.114110] usb 4-1.1.1.1.1: FTDI USB Serial Device converter now attached to ttyUSB2

Installation du logiciel

Il suffit d’installer lirc via apt :

# apt-get install lirc

Le module ne nécessite pas de drivers spécifiques dans le noyau.
Il suffit de lancer lircd :

lircd -n -H usb_uirt_raw -d /dev/ttyUSB2
lircd-0.8.3[10254]: config file contains no valid remote control definition
lircd-0.8.3[10254]: lircd(userspace) ready

Puis irw dans une autre console pour lire les signaux IR :

lircd-0.8.3[10254]: uirt2_raw: checksum error
lircd-0.8.3[10254]: uirt2_raw: UIRT version 0905 ok

Et la, c’est le drame :)
Mais pas de panique, le message d’erreur checksum error, n’est pas important!
Il y a bien un bug dans le noyau depuis la version 2.6.20 : USB UIRT: uirt2_raw: checksum error.
Mais cela fonctionne avec le 2.6.26 disponible dans lenny, par contre si vous avez le message d’erreur suivant : uirt2_raw: could not set DTR, alors il faut upgrade votre version du noyau ou modifier le code source du module.

Configuration des télécommandes

De très nombreuses configurations de télécommandes sont disponibles sur le serveur du projet LIRC : ici.

Il suffit de télécharger le fichier de configuration de votre télécommande et de le mettre dans le fichier lircd.conf :

# cd /etc/lirc/
# wget http://lirc.sourceforge.net/remotes/logitech/Z-5500D
# cat Z-5500D >> lircd.conf

Nous allons ensuite configurer le fichier /etc/lirc/hardware.conf du deamon lirc pour le lancer:

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=false

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="usb_uirt_raw"
# If DEVICE is set to /dev/lirc and udev is in use /dev/lirc0 will be
# automatically used instead
DEVICE="/dev/ttyUSB2"
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

Nous pouvons alors lancer lircd :

# /etc/init.d/lirc start
Starting lirc daemon: lircd.

Recevoir les ordres infrarouges

Pour recevoir les ordres, il faut utiliser la commande irw :

$ irw
0000000010ef58a7 00 vol+ logitech_z5500
0000000010ef58a7 01 vol+ logitech_z5500
0000000010ef708f 00 vol- logitech_z5500
0000000010ef708f 00 vol- logitech_z5500
0000000010ef58a7 00 vol+ logitech_z5500
0000000010ef58a7 01 vol+ logitech_z5500
0000000010efd02f 00 optical logitech_z5500
0000000010efd02f 01 optical logitech_z5500

Envoyer des ordres infrarouges

Pour envoyer des ordres, il faut utiliser la commande irsend :

$ irsend SEND_ONCE logitech_z5500 power

Conclusion

Pour toutes les autres fonctionnalités et la configuration de vos applications (mplayer, freevo, etc…) , je vous conseille de lire la documentation du projet LIRC.
Il existe d’autres modules que l’USB-UIRT, comme par exemple USB IR Transceiver de IguanaWorks.

Filed under: Debian,Home automation — Tags:, , — cscm @ 18:00

April 23, 2009

Mesure de température à l’aide de capteurs 1-wire

Cherchant une solution pour mesurer la température de mon appartement de manière informatisée ; j’ai découvert le bus 1-Wire qui permet de connecter des capteurs divers à l’aide d’un seul cable (téléphonique aka RJ11 dans mon cas).
Ce protocole est généralement utilisé pour des instruments de mesure météorologiques.

Ce billet explique le fonctionnement de mon installation.

Le matériel nécessaire

Composant Prix
Adaptateur USB vers 1-Wire ( DS9490R ) 29 $
Cable RJ12 2 à 10 $
Capteur de température ( TAI8520 ) 22 $
Capteur de température et d’humidité ( TAI8540D ) 50 $

Le fabriquant de ces modules est AAG Electronica.
Vous pouvez commander ce matériel directement chez le fabriquant aux USA ou bien chez Audon Electronics en Angleterre.

J’ai acheté mon matèriel chez Audon, car le taux de change de la Livre sterling est actuellement très avantageux (1 € = 1 £ ).
De plus, cela évite les diffèrents problèmes liés aux douanes (non … je vous dis que ce sont des capteurs de température pas des missiles ;-) )

Installation du matériel

Avant de brancher l’adaptateur USB, il faut désactiver le chargement des modules noyau ds2490 et wire dans le fichier : /etc/modprobe.d/blacklist


cat <<EOF >> /etc/modprobe.d/blacklist
blacklist ds9490r
blacklist ds2490
blacklist wire
EOF

Vous pouvez ensuite brancher l’adaptateur USB et vérifier qu’il est bien présent à l’aide de la commande lsusb :


$ lsusb | grep 1-Wire
Bus 002 Device 006: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter

Digitemp, tu oublira vite

Lorsqu’on cherche une solution de monitoring de température, on trouve sur le programme Digitemp.
Je ne vous le conseille vraiment pas, car il ne fonctionne pas très bien :

  • il renvoie une valeur de manière aléatoire ;
  • il nécessite les droits root pour lire le port usb ;
  • les scripts fournis avec le programme ne fonctionnent pas, il faut les modifier, etc…

Bref après une soirée de configuration, j’ai bien réussi à mettre les valeurs dans une base MySQL avec un script cron et digitemp, mais le lendemain matin cela ne fonctionnait plus …

Owfs, rocks les ours de laponie du nord

Owfs est un bien meilleur solution pour le monitoring de la température.
L’installation et la configuration est décrite sur le Wiki de Sebastien Mei :

J’ai donc installé le tout et configuré le monitoring avec munin :

C’est pas ti beau?

Filed under: Debian,Home automation — Tags: — cscm @ 22:19

January 11, 2009

Architecture de gestion de contacts

Je vais essayer de décrire l’architecture que j’ai mis en place chez moi et que j’utilise tous les jours pour ma gestion des contacts personnels et professionnels.

Problèmatique

Ma problèmatique est extrêment simple et beaucoup de gens doivent avoir la même :
J’ai beaucoup de contacts dans mon carnets d’adresses, je me déplace et j’utilise plusieurs outils.

Je suis tête en l’air et j’ai tendance à oublier les coordonnées d’une personne ;-)

Ma solution

Elle repose sur les composants suivants :

  • L’annuaire LDAP : OpenLDAP
  • La suite de logiciel de communication pour KDE : Kontact
  • Le logiciel de synchronisation : OpenSync et le protocole SyncML
  • Le webmail : Horde

Stockage des contacts

Je sais qu’utiliser un annuaire LDAP pour la gestion des contacts donne l’impression d’utiliser un Bazouka pour tuer une mouche.
Mais la technologie LDAP permet de stocker les informations sans être dépendant d’une solution ou d’un système de stockage spécifique.

En effet, de nombreux logiciels sont compatibles avec le protocole LDAP et permettent donc d’accèder à vos contacts.

J’ai donc installé OpenLDAP sur mon réseau.

Les schèmas LDAP inetorgperson et core et une ou=contacts sur laquel vous avez tous les droits sont nécessaires.

Gestion des contacts

Pour la gestion des contacts, j’utilise le carnet d’adresse de Kontact.
En effet, celui-ci permet de saisir les informations directement dans l’Annuaire grâce au système de resource de KDE.
Kontact propose une gestion offline des contacts, permettant de consulter ses contacts sans accès réseau, mais pas de les modifier.

Le schèma LDAP inetorgperson et core ne prend pas en charge tous les attributs de Kontact.
Mais l’essentiel des informations sont disponibles.

L’avantage de stocker les données dans une resource KDE est que l’ensemble des logiciels KDE peuvent utiliser ces données :

  • Kmail peut completer les adresses e-mails issues de l’annuaire ;
  • Twinkle permet d’appeler les numèros de téléphone ;
  • KMobileTools permet d’envoyer des SMS ;

Synchonisation des contacts avec le téléphone portable

Pour la synchronisation des contacts avec mon téléphone portable, un Nokia N95, j’utilise le logiciel MultiSync.
Celui-ci permet de synchroniser les contacts issus du carnet d’adresse KDE vers le téléphone à l’aide du protocole SyncML et à l’aide d’un dongle Bluetooth.

La configuration est la mise en place de ce système est décrite dans ce Thread du forum Ubuntu :
HOWTO: Sync Evolution with Nokia N95 via Bluetooth on Ubuntu Gutsy.
Le plus simple est de configurer le conduit à l’aide de l’interface graphique de kitchensync.

Webmail

Pour mon Webmail, j’ai installé le gestionnaire de contacts sur projet Horde : Trean.
Celui-ci dispose d’un support LDAP assez complet : LDAP Based Address Book

Intégration avec le système de téléphonie

L’intégration avec ma PABX IP se fait à l’aide du module Asterisk
LDAPget, qui permet de recherche le numèro de téléphone de l’appellant dans l’Annuaire.

J’ai aussi essayé d’alimenter le contenu du carnet d’adresse de mon téléphone DECT à l’aide du contenu de l’annuaire LDAP.
Mon téléphone, le Siemens Gigaset SL560, qui dispose du support Bluetooth.
Mais malheureusement, le protocole utilisé entre le téléphone et le PC n’est pas standard.
Il faut donc passer par un logiciel propriétaire sous Windows, pour synchroniser ses contacts ;-(

Problèmatiques et idées d’évolutions

Mon système est fonctionnel, même si c’est parfois artisanal et que certaines problèmatiques sont encore posées :

  • certains logiciels sont encore en phase de développement et donc pas toujours très stables ;
  • entre l’annuaire LDAP et les diffèrents composants, il y a toujours une perte d’informations, toutes les informations ne sont pas toujours disponibles ;
  • Les composants de l’architecture ne disposent pas tous de fonctions de filtrages nécessaire.

Le principal problème avec la gestion des contacts est leur mise à jours.
En effet, il faut mettre soit même les informations à jours ;-)

C’est pour cette raison que je pense qu’une évolution intéressante de mon architecture,
serait la mise à jours des informations par les contacts eux mêmes.

Via une simple page web ou bien par la récupèration des informations sur les nombreux réseaux sociaux.

Filed under: Debian,Work — Tags: — cscm @ 20:42

Chiara, Ubuntu GNU/Linux avec des pieds

Je viens de découvrir le robot Chiara (prononcé kee-AR-ah), dans le numèro 13 du magazine Robot.
D’après son auteur, David Touretzky c’est :

Basically, it'a latop with legs

En effet, l’architecture de ce robot est très proche de l’architecture d’un PC :

  • Ubuntu GNU/Linux ;
  • Architecture x86 CPU 1Ghz ;
  • 1G de RAM ;
  • Disque dur de 80Go ;
  • Webcam ;
  • Ports USB ;
  • Ethernet et Wifi (b/g) ;
  • 6 Pates et 1 Bras.

L’architecture matériel repose sur :

Le robot est animé par les outils du projet libre Tekkotsu.

Comme la plupart des projets de robotique reposent sur des architectures et des logiciels propriétaires spécifiques.
J’aime donc beaucoup l’idée d’avoir à ma disposition une architecture connue et basé sur des logiciels libres.

Je dit donc bravo ;-)

Et j’attends avec impatience la sortie de ce monstre.

Normalement prévu pour Décembre 2008, mais bon celui-ci à un peu de retard, en attendant je vous invite à lire/regarder
les diffèrentes ressources du projet :

Filed under: Debian,Robotics — Tags:, — cscm @ 20:32

January 2, 2009

Les différents usages d’un serveur PXE sur une réseau local

Vous n’avez pas encore installer un serveur PXE sur votre réseau local?

Si ce n’est pas le cas, je vais essayer de vous décrire dans cet article les diffèrents outils que j’ai mis en place sur mon réseau.

Menu de démarrage

Voici les différentes options qui sont proposées sur mon réseau en cas de démarrage d’une machine en PXE :


- Boot Menu -
=============

etch_i386_install
etch_i386_linux
etch_i386_expert
etch_i386_rescue
fai_sysinfo
fai_install_desktop
fai_install_server_base
fai_install_server_vserver
fai_install_server_xen
gparted
clonezilla
dban

Je vais vous décrire chaque option et ses usages.

Mise en place d’un serveur PXE

Pour la mise en place d’un serveur PXE, je vous invite à lire cette article de Debian Administration : Setting up a server for PXE network booting

La procèdure d’installation est très simple, vous avez besoin d’un serveur DHCP et TFTP sur une des machines de votre réseau.

Installateur Debian GNU/Linux

Les quatres premières options concernent l’installateur Debian. En effet, il est possible d’installé une distribution Debian GNU/Linux en réseau.

La mise en place de ce système est décrite dans le manuel de la distribution : 4.6. Préparer les fichiers pour amorcer depuis le réseau avec TFTP.

Grâce à ce serveur, il n’est plus nécessaire d’apprendre à jongler avec les diffèrents CD/DVD de la distribution.

L’installateur propose aussi un mode “rescue”, très pratique en cas de perte d’un mot de passe root, ou bien lorsque la machine refuse de démarrer.

Fully Automatic Installation

Après l’installation de la machine, il y a de nombreuses manipulations à
faire, qui ne sont pas prise en charge par l’installateur standard et
qui sont spécifiques au réseau sur lequel se trouve la machine :
configuration du système de backup, certificats SSL, l’emplacement des
diffèrents services (LDAP, Messagerie, Monitoring, Stockage, etc…)

Généralement ces tâches sont faites manuellement ou bien à l’aide d’une
“procédure”.

Mais dans la plus part des cas cette procédure n’existe pas ou bien elle n’est pas à jour ;)

Donc la meilleur chose à faire est donc de centraliser sur le serveur d’installation ces informations.

Pour cela, j’ai mis en place plusieurs modèles de machine à l’aide du logiciel FAI – Fully Automatic Installation.

GParted

Le logiciel GParted est une interface graphique en GTK+ pour parted.

Celui-ci permet de créer, supprimer, redimensionner, déplacer, vérifier et copier les partitions d’un disque dur, comme Partition Magic.

Le logiciel dispose d’un mode “live”, qu’il est possible de démarrer en réseau : GParted Live on PXE server.

Clonezilla

Clonezilla est un logiciel permettant de faire des copies d’un disque dur ou d’une partition comme Norton Ghost.

Il dispose d’un mode “live”, qui fonctionne de la même manière que GParted : Clonezilla Live – Single machine clone system without installation.

Darik’s Boot And Nuke

Darik’s Boot And Nuke (DBAN) est un logiciel permettant d’effacer de manière sécurisée le contenu de tous les disques dur d’une machine.

Je DBAN utilise lors de l’achat d’un nouveau disque dur ou bien la revente d’un disque dur d’occassion.

En effet, lors du premier temps d’utilisation d’un disque dur, vous avez de forte chance de tomber sur un modèle défectueux.

Il est donc conseiller de lui faire subir un teste de stress avant de mettre des données importantes dessus.

Pour la revente, c’est plus un probleme de confidentialité : To keep those secrets safe, beat your computer’s brains out with a hammer.

L’installation de DBAN sur le serveur PXE, n’est pas décrite sur le site du logiciel.

Je vais décrire la procèdure d’installation dans un autre article.

Conclusion

Les possiblités offertes par un serveur PXE sur un réseau local sont nombreuses.

L’installation et la mise en place des outils décrits dans cette article est assez simple (sauf pour FAI )
et vous permettera de simplifier l’administration de vos machines et donc gagnier du temps.

Filed under: Debian — Tags:, — cscm @ 15:19

June 12, 2008

Build NXC programs under Debian GNU/Linux

This document explain how to build and load an Not eXactly C program for the Lego Mindstoms NXT Robot under Debian GNU/Linux.

Introduction

Lego does not provide tools for building programs for the NXT under Linux.
I don’t like Bricxcc, because :

  • It looks like Visual Studio ;
  • runs only on Microsoft Windows ;
  • I’m more familiar with VIM, make and GCC ;0)

Install the compiler

Ths NXC compiler can be downloaded on the Bricxcc web site. The compiler is writen in Pascal.

You need to install the FreePascal Compiler and build the compiler :


$ wget http://downloads.sourceforge.net/bricxcc/nbc-1.0.1.b34.src.tgz
# apt-get install fp-compiler fp-units-fcl fp-units-base
$ mkdir nbc
$ tar xzf nbc-1.0.1.b34.src.tgz -C nbc
$ cd nbc/nxt
$ make -f nbclinux.mak
$ ./nbc
Next Byte Codes Compiler version 1.0.1.b34 (1.0.1.34, built Thu Jun 12 21:21:22 CEST 2008)
Copyright (c) 2006, John Hansen
Use "nbc -help" for more information.
# mv nbc /usr/local/bin/

Hello world

Let’s try to build and send a simple hello world program to the robot :


$ cat > hello.nxc <

USB Transfert

In order to send the program to the robot, you need the Talk 2 NXT program : T2N.

Warning: on amd64, you need to patch the source code.


# apt-get install g++ libusb-dev
$ wget http://www-verimag.imag.fr/~raymond/edu/lego/t2n/t2n-0.2.src.tgz
$ wget https://csquad.org/wp-content/t2n_amd64.diff
$ cd t2n-0.2.src
$ patch -p1 < ../t2n_amd64.diff patching file src/usbmisc.cc patching file src/usbmisc.h $ make # mv obj/t2n /usr/local/bin/

Now you can plug, turn on your NXT and send the program via the USB port.


# t2n -i
#### NXT INFOS ###############
protocol version=1.124 firmware version=1.1
NXT Name: NXT
Blutooth address: 16:53:06:37:ffffffbc:00
Blutooth signal: 0
Free user flash: 44416
# t2n -v -put hello.rxe
nxt brick found, usb initialized
testing for existing file "hello.rxe"
deleting for existing file "hello.rxe"
upload hello.rxe (376 bytes) from /goinfre
that's all folks...

That’s all folks…

Filed under: Debian,Robotics — Tags:, , , — cscm @ 23:50
« Previous PageNext Page »

Powered by WordPress