Carte Domotique "Boomerang 1.0"
pour NSLU2

Cette carte électronique est destinée à être associée à un NSLU2. Le NSLU2 est un petit boitier NAS (Network Attached Storage) vendu par Linksys. Le NSLU2 dispose nativement d'un bus I2C qui lui permet de communiquer avec sa RTC (Real Time Clock), et d'une liaison série bidirectionnelle inutilisée. La carte Boomerang permet d'utiliser ces moyens de communication pour apporter au NSLU2 des fonctionnalités supplémentaires. L'ensemble me permet déjà de piloter plusieurs appareils électriques à distance en manuel ou de façon automatique. La fonction 1-wire implémentée sur cette carte ne fonctionne pas encore. Tout le reste fonctionne depuis plusieurs mois maintenant chez moi non-stop. Cela ne veut pas dire pour autant qu'il ne puisse y avoir de problème de matériel ou de logiciel que je n'ai pas décelé. Je livre les informations qui suivent pour ceux qui voudraient fabriquer ou améliorer cette carte et pour remercier celles et ceux qui fabriquent et publient des produits et documentations libres de droits. Bien souvent la documentation est le maillon faible d'un projet. Un électronicien ou un programmeur, normalement rompus à l'informatique, sont quelquefois de piètres secrétaires. Merci de m'en excuser et de me signaler les erreurs inévitables. J'essaierai d'améliorer cette documentation aussi souvent que possible et au fur et à mesure que j'ajouterai de nouvelles fonctionnalités logicielles à cet engin. Bonne lecture.

Matériel

--> Synoptique

Le bus I2C est utilisé pour piloter un affichage LCD à base de HD44780, 8 commutateurs (switches) à triacs opto-isolés, et 16 entrées/sorties TTL(5V) supplémentaires.

La liaison série bidirectionnelle peut être utilisée comme port série RS232 après adaptation des signaux TTL(3,3V), ou pour contrôler un port 1-Wire(pas encore fonctionnel!).

Enfin, comme le NSLU2 dispose également de 3 ports USB parfaitement fonctionnels mais non câblés, la carte dispose d'un double connecteur USB permettant le câblage de deux de ces ports.

Nombre de ces modifications ont fait l'objet d'articles sur le site :
http://www.nslu2-linux.org



--> Schéma, Typon du Circuit-imprimé

La carte Boomerang 1.0 a été conçue au moyen de l'excellent logiciel libre Kicad qui permet de mener à bien un projet depuis le schéma électronique jusqu'au circuit imprimé. La carte a été conçue pour être fabriquée avec peu de moyens : circuit imprimé simple face, composants faciles à trouver.
Télécharger le Schéma. Télécharger le Typon



--> I2C

Il n'y a pas d'autre moyen pour se raccorder au bus i2c "natif" du NSLU2 que de souder deux fils directement sur le circuit intégré X1205 de la RTC(Real Time Clock). Le fil souple provient d'une nappe de disque dur IDE. Le fil rouge est soudé sur SDA l'autre sur SCL. Un petit arceau soudé entre 2 points de masse maintient un peu le fil.

Pour ceux qui ne souhaitent pas utiliser le bus i2c natif du NSLU2, une alternative consiste à utiliser les lignes d'entrées-sorties du NSLU2 qui contrôlent les LEDs pour créer un deuxième bus I2C. Un module logiciel supplémentaire devra alors être installé.

Le bus I2C du NSLU2 est utilisé pour piloter 4 circuits intégrés PCF8574 utilisant les adresses hexadécimales suivantes:

0x20 : afficheur LCD HD44780
0x21 : commutateur à triacs
0x22 : I/O port 1
0x23 : I/O port 2



--> LCD

L'afficheur est un modèle utilisant le chip HD44780. Le connecteur 16 broches sur la carte Boomerang est normalement dans le même ordre que celui de l'afficheur, ce qui facilite le câblage. Vérifier avec le schéma toutefois pour être sûr que votre modèle est identique. Les bornes 7 à 10 ne sont pas utilisées. Le rétro-éclairage est câblé sur les fils 15 et 16. Certains modèles de LCD n'en sont pas équipés. Le contraste se règle avec la résistance variable RV1.



--> Commutateurs à Triacs

L'isolation et le pilotage des triacs est assurée par des opto-triacs faible consommation (MOC3043) avec détection de passage à zéro. A la mise sous tension les sorties du PCF8574 sont ouvertes, donc tous les commutateurs sont normalement coupés (LEDs éteintes). Les LEDs sont en série avec celles contenues dans les MOC3043 ce qui limite la consommation : 5mA par voie, 40mA en tout pour les huit commutateurs en marche. Le redémarrage du NSLU2 sans coupure d'alimentation sur la carte Boomerang ne change pas l'état des commutateurs.

La connexion coté secteur 220V se trouve facilitée en installant une rangée de 9 dominos (ou sucres) électriques. Il y a une dimension qui fait normalement la largeur désirée. Les triacs sont protégés en surcharge par des fusibles 1A. Si l'on charge les sorties avec des charges faibles (moins de 220 Watts), cela devrait suffire. C'est suffisant pour alimenter un routeur ou un disque dur USB. Si l'on a besoin de consommer d'avantage sur les triacs il faudra absolument les refroidir avec des radiateurs sérieux et renforcer les connexions et le circuit imprimé pour qu'ils supportent le courant



--> Liaison Série

La liaison série TTL(3,3V) du NSLU2 est située entre la pile et la mémoire flash. En plus des lignes de données, il y a deux broches qui fournissent le 3,3V et la masse. Le mieux est d'y souder un connecteur. Un connecteur "CD-audio" de carte son fait exactement la bonne dimension. Ne surtout pas laisser des fils "en l'air" car cela constituerait une antenne et pourrait bloquer le démarrage du NSLU2. Cette liaison, une fois reliée à la carte Boomerang est utilisable comme port 1-Wire ou comme port série RS232. On sélectionne ce que l'on veut utiliser avec 2 cavaliers, JP1 et JP2 qui doivent être manoeuvrés hors tension.



--> RS232

Le driver de ligne RS232 peut être un MAX3232 (3,3V, mais cher) ou MAX232 (5V, bien moins cher). L'utilisation du MAX232 cause parfois des blocages de communications au redémarrage du NSLU2 qui nécessite de redémarrer également le terminal. Si l'on démarre toujours le terminal après que le NSLU2 ait démarré, ça ne gêne pas, semble-t-il. Il faut sélectionner la tension d'alimentation du MAX avec le cavalier JP3 avant d'alimenter la carte. Couper l'alimentation et enlever le cavalier avant tout changement de modèle. Bien vérifier la position du cavalier, toujours hors tension, et rebrancher ensuite l'alimentation. Une résistance et une diode zener 3,3V évitent à la ligne entrante (RX) du NSLU2 de recevoir plus de 3,3V.



--> 1-Wire(non encore fonctionnel!)

Le port 1-wire utilise un circuit spécialisé, le DS2480B en version CMS soudé coté cuivre. La protection contre les surtensions sur le bus 1-wire est normalement confiée à un DS9503, mais comme je n'ai pu m'en procurer facilement, j'ai ajouté la place pour une diode zener 7V5 et une diode Schottky en remplacement du DS9503. La prise RJ12 provient d'un vieux modem, mais quand j'en ai cherché une deuxième, je me suis aperçu qu'il y avait beaucoup de modèles différents. Donc il faut faire attention de bien vérifier les brochages des matériels 1-Wire et de la prise RJ12. On peut toujours se brancher directement sur le 1-Wire sans prise RJ12 en repérant soi-même les bonnes pastilles à souder.



--> Alimentation

La carte Boomerang est alimentée par l'alimentation 5V du NSLU2. Il est grandement recommandé d'insérer un fusible ou une résistance fusible dans le fil d'alimentation positif du +5V. L'avantage de la résistance fusible est qu'elle permet, en plus de son rôle de protection, la mesure du courant consommé par la carte Boomerang. J'ai mis 0.1 ohm pour faciliter le calcul et éviter que la tension ne chute trop dans la résistance. Attention de ne pas surcharger les prises USB. L'alimentation du NSLU2 ne peut fournir que 2 Ampères en tout et le NSLU2 en consomme déjà une partie. Le 3,3V du NSLU2 est utilisé pour le port série si l'on choisit d'utiliser un MAX3232. Le 3,3V peut éventuellement être utilisé pour sur-alimenter le bus I2C, s'il était trop bas pour certains modèles de PCF8574, au travers des résistances optionnelles R31 et R32 (chez moi ça marche sans).



--> Autostart

J'ai ajouté un transistor digital DTC124 pour que le NSLU2 démarre de lui-même dès la mise sous tension. Soudé directement sur le circuit intégré U15(74HC74, broches 1 et 4) et la masse. Il y a d'autres moyens de démarrer automatiquement le NSLU2, voir http://www.nslu2-linux.org/wiki/HowTo/ForcePowerAlwaysOn. Certains sont assez compliqués. Ma méthode est une version simplifiée de l'alternative 11 qui utilise un transistor NPN et une résistance de 10k. L'avantage du DTC124 est qu'il incorpore déjà une résistance sur la base et le câblage s'en trouve facilité.



--> USB

Les ports USB non câblés sont situés sous le NSLU2 et nécessitent de souder des fils sur des résistances CMS. Un arceau soudé au bord du circuit-imprimé du NSLU2, sur la masse, maintient les fils et évite l'arrachement accidentel. Comme pour le câblage du bus i2c le fil utilisé provient d'une nappe de disque dur IDE. Le fil rouge correspond à D+ et l'autre à D-. Les fils sont raccordés coté Boomerang avec des connecteurs de LED de carte-mère, un pour chaque port USB.



--> Liens Utiles

http://www.nslu2-linux.org/wiki/HowTo/AddASerialPort
http://www.nslu2-linux.org/wiki/HowTo/EnableExtraUSBPorts
http://www.nslu2-linux.org/wiki/HowTo/AddATextDisplayOnI2CWithLCDproc
http://www.nslu2-linux.org/wiki/HowTo/ForcePowerAlwaysOn



Firmware

Le micro-logiciel(ou firmware) d'origine intégré dans le NSLU2 est basé sur GNU/Linux. Le micro-logiciel d'origine peut donc être modifié et remplacé. Un certain nombre de micro-logiciels alternatifs existants peuvent fonctionner sur le NSLU2. J'ai choisi d'utiliser "OpenWRT" pour piloter la carte Boomerang.

--> Installation d'OpenWRT

Si votre NSLU2 a toujours son firmware d'origine, la première installation s'effectue via l'interface graphique du firmware d'origine. Le dernier firmware OpenWRT supposé stable disponible pour NSLU2 est celui çi: http://downloads.openwrt.org/backfire/10.03/ixp4xx/openwrt-nslu2-squashfs.bin

Une fois téléchargé le firmware:

  • Eteindre le NSLU2
  • Débrancher tout sur les USB
  • Démarrer le NSLU2
  • Se connecter à l'Interface de Configuration Web
  • Cliquer sur "Administration", "Upgrade"
  • Choisir le bon fichier et cliquer sur "Start Upgrade"
  • En attendant, lisez la suite...

Le firmware OpenWRT de base est un firmware minimal qui utilise une partie de la mémoire flash. La mémoire flash restante est disponible en lecture écriture pour rajouter des logiciels. Au premier redémarrage, cette zone de mémoire est formatée. Soyez patients, cela peut durer plusieurs minutes. Le contenu de cette zone mémoire est ensuite monté sur "/overlay" lui même monté par dessus "/". Après l'installation du firmware de base, il reste donc de la place pour installer des outils supplémentaires.

Premières constatations après l'installation d'OpenWRT, au redémarrage :

  • L'adresse IP du NSLU2 est devenue 192.168.1.1 quelle que soit celle qui était auparavant.
    Veillez donc, si votre Box ADSL ou votre routeur utilise cette adresse, à la changer immédiatement.
  • Le comportement des LEDs a changé : seule la LED "Ethernet" s'allume(câble réseau branché..).
    Les LED "DISK" restent éteintes même si l'on branche un disque USB.
  • le bouton POWER est inactif.

Configuration

--> Outils de Configuration

Si vous n'êtes pas familier avec la ligne de commande, utilisez l'interface graphique "Luci", accessible avec votre navigateur à l'adresse :
http://192.168.1.1 ou : http://nouvelle_adresse_ip si vous l'avez changée.
On peut s'y connecter sans mot de passe avant qu'il ait été défini. Cliquer à droite sur "Administration" pour avoir plus d'options dans les menus de gauche.


Un autre interface de configuration Web est disponible et peut être installé: "webif". C'est celui que j'utilise. L'éditeur de crontabs(tâches répétitives) est plus facile à utiliser pour un débutant et il a un éditeur de fichiers intégré. En plus il utilise "haserl" que j'utilise pour l'interface de contrôle des commutateurs.

En ligne de commande l'éditeur "vi" est pré-installé et permet de modifier les fichiers de configuration. L'éditeur "vi" est un peu déroutant pour qui ne l'a jamais utilisé. D'autres éditeurs sont disponibles et peuvent être installés. Citons comme éditeurs alternatifs : nano, mc. Ces éditeurs prennent de la place: plus de 200k octets pour nano et plus de 500k octets pour mc qui permet cependant bien plus que l'édition de fichiers.

--> Mot de Passe:

  • Web : System > Admin Password
La première opération consiste à définir le mot de passe du super-utilisateur(root), qui vous servira à vous connecter au NSLU2. Avec un terminal, en ligne de commande, il faut taper la ligne :
telnet 192.168.1.1
puis :
passwd
tapez 2 fois le même mot de passe et souvenez vous en...

Ensuite on peut accéder au NSLU2 en ligne de commande par "ssh", qui est plus sûr que telnet. Pour continuer la configuration tapez :
ssh -l root 192.168.1.1

--> Nom de Machine et du Fuseau Horaire:

  • Web : System > System
  • fichier : /etc/config/system
config system
	option hostname	NSLU2
	option timezone	UTC
ou, après modification pour La France par exemple
config 'system'
	option 'hostname' 'NSLU2'
	option 'zonename' 'Europe/Paris'
	option 'timezone' 'CET-1CEST,M3.5.0,M10.5.0/3'
S'il y a des lignes concernant "rdate", laissez les. C'est pour que l'heure système soit réglée au démarrage.

--> Configuration du Réseau:

  • Web : Network > Interfaces > Lan
  • fichier : /etc/config/network
Il est recommandé d'utiliser l'interface graphique plutôt que de modifier le fichier de configuration à la main si l'on ne sait pas très exactement ce que l'on fait. Si on ne souhaite pas changer d'adresse, il vaut mieux ne toucher à rien. Il est quand même indispensable, si l'on n'est pas en DHCP, d'ajouter l'adresse d'un DNS valide pour pouvoir ensuite installer du logiciel facilement par l'Internet.
# ne pas toucher
config 'interface' 'loopback'
	option 'ifname' 'lo'
	option 'proto' 'static'
	option 'ipaddr' '127.0.0.1'
	option 'netmask' '255.0.0.0'

# configuration réseau
# la ligne option bridge peut être retirée...
config 'interface' 'lan'
	option 'ifname' 'eth0'
	option 'type' 'bridge'
	option 'proto' 'static'
	option 'netmask' '255.255.255.0'
	option 'ipaddr' '192.168.1.77'
	option 'defaultroute' '0'
	option 'peerdns' '0'
	option 'gateway' '192.168.1.254'
	option 'dns' '212.27.40.240'

--> Configuration des Noms de Machines:

  • Web : Network > Hostnames
  • fichier : /etc/config/dhcp
Il faut au moins ajouter le nom et l'adresse IP du NSLU2, cela peut être important. Pour Samba, en particulier, qui peut carrément refuser de fonctionner. :
NSLU2, 192.168.1.77, dans mon cas.
# extrait du fichier /etc/config/dhcp
config 'domain'
	option 'name' 'NSLU2'
	option 'ip' '192.168.1.77'
Ajouter autant de sections "config 'domain'" que l'on veut, en gardant la syntaxe.

--> Redémarrage:

  • Web : System > Reboot
Une fois configurés le mot de passe, le système et le réseau, il est sage de redémarrer:
reboot
Au redémarrage, si on a changé l'adresse IP du NSLU2, pour se reconnecter, il faudra taper par exemple :
http://192.168.1.77
dans son navigateur ou :
ssh -l root 192.168.1.77
en ligne de commande.

Ajout et Suppression de Logiciels

Le firmware de base livré par OpenWRT est un firmware minimal. Il ne sait pas faire grand-chose tel-quel. Heureusement, OpenWRT est personnalisable à souhait. L'installation et la désinstallation des logiciels peuvent s'effectuer par l'interface Web ou en ligne de commande avec un utilitaire facile d'emploi : "opkg". Les logiciels sont téléchargés depuis l'Internet sous forme de paquets et installés automatiquement par opkg. Il faut donc avoir préalablement configuré le réseau. Si l'on n'utilise pas le DHCP, il faut penser à donner l'adresse d'un serveur DNS et de la passerelle(gateway) pour accéder à l'Internet. Les logiciels peuvent être composés d'un ou de plusieurs paquets. Les paquets dont le nom commence par "kmod-" sont des modules du noyau.

- Par l'interface Web

  • Web : System > Software
Cliquez sur "Update package lists" pour rafraichir la liste des logiciels disponibles. Si vous n'êtes pas à l'aise avec l'anglais, vous pouvez installer immédiatement le paquet "luci-i18n-french" pour l'avoir en français. D'autres paquets linguistiques sont disponibles : luci-i18n-german, luci-i18n-greek, luci-i18n-italian, luci-i18n-japanese, luci-i18n-portuguese_brazilian, luci-i18n-russian.

- En ligne de commande avec opkg

# Mini-manuel d'opkg
# avant toute opération sur les paquets et pour
# rafraichir la liste des logiciels disponibles :
opkg update

# installer un paquet logiciel :
opkg install nom-du-paquet

# enlever un paquet logiciel :
opkg remove nom-du-paquet

# enlever un paquet logiciel et ses dependances orphelines:
opkg remove --autoremove package_name

# obtenir la liste des paquets installables :
opkg list

# obtenir la liste des paquets installés :
opkg list_installed

# obtenir le contenu d'un paquet installé :
opkg files nom-du-paquet

#pour plus d'aide sur opkg :
opkg

--> Clés et disques USB

il est indispensable d'installer des paquets logiciels supplémentaires si vous souhaitez utiliser des clés ou des disques USB sur le NSLU2. Les lignes de commandes ci-dessous vous permettrons d'installer les paquets requis pour les différents types de supports utilisés. Elles sont regroupées par blocs. Les paquets USB (kmod-usb-...) sont indispensables. Les paquets systèmes de fichiers (kmod-fs-...) dépendent de la façon dont les clés ou disques USB que vous comptez utiliser ont été formatées. Les pages de codes (kmod-nls-...) sont nécessaires pour que le système puisse interpréter correctement les noms des fichiers contenus sur les disques. Pour certains alphabets, il faudra aussi installer les autres codepages.
# pour OpenWRT version Backfire.
# inutiles pour Kamikaze.
opkg install block-mount
opkg install block-hotplug

# usb
opkg install kmod-usb-core
opkg install kmod-usb-ohci
opkg install kmod-usb2
opkg install kmod-scsi-core
opkg install kmod-usb-storage

# systemes de fichiers locaux ext2/3/4 (Linux et Unices)
opkg install kmod-fs-ext2
opkg install kmod-fs-ext3
opkg install kmod-fs-ext4

# systemes de fichiers locaux Microsoft
opkg install kmod-fs-vfat
opkg install kmod-fs-ntfs

# systemes de fichiers locaux Apple
opkg install kmod-fs-hfs
opkg install kmod-fs-hfsplus

# codepages
opkg install kmod-nls-base
opkg install kmod-nls-cp437
opkg install kmod-nls-cp850
opkg install kmod-nls-iso8859-1
opkg install kmod-nls-iso8859-15
opkg install kmod-nls-iso8859-2
opkg install kmod-nls-utf8

# autres codepages
# Codepage 1250 (Eastern Europe)
opkg install kmod-nls-cp1250
# Codepage 1251 (Russian)
opkg install kmod-nls-cp1251
# KOI8-R (Russian)
opkg install kmod-nls-koi8r

--> I2C

Le noyau, qui utilise l'i2c pour discuter avec l'horloge, a déjà le pilote pour communiquer sur le bus i2c. Le périphérique associé au bus est :
root@NSLU2:/# ls -l /dev/i2c*  
crw-r--r--    1 root     root      89,   0 Feb 21 01:05 /dev/i2c-0

--> Commutateurs à Triacs

Pour actionner les commutateurs à triacs ou les entrées-sorties en ligne de commande, il faut installer un petit logiciel.
# installation des outils i2c
opkg install i2c-tools

# detection du bus i2c
root@NSLU2:/# i2cdetect -l
i2c-0   i2c             i2c-gpio0                               I2C adapter

# detection des adresses i2c utilisées sur le bus
root@NSLU2:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 21 22 23 -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 
70: -- -- -- -- -- -- -- --                         
# manoeuvre des commutateurs
root@NSLU2:/# i2cset -y 0 0x21 0xaa 0xaa
No size specified (using byte-data access)
Value 0xaa written, readback matched

# lecture des commutateurs
root@NSLU2:/# i2cget -y 0 0x21
0xaa

Pour manoeuvrer les commutateurs plus aisément, j'ai programmé une interface Web et une interface en ligne de commande. J'ai fait un paquet installable de ces outils. Ce paquet s'appelle "domus" et il est disponible dans les Téléchargements. Les deux interfaces s'appuient sur un fichier de configuration qui permet de choisir un nom, une image et d'autoriser ou interdire certaines actions pour chaque commutateur. Trois actions sont disponibles: on, off, et reboot. Le délai pour le reboot est ajustable jusqu'à 99 secondes. Par défaut c'est 7 secondes.

- Installation de domus sur le NSLU2

L'installation s'effectue au moyen de ces lignes de commande:
cd /tmp
wget http://berlioux.com/electronique/boomerang/downloads/domus_0.0.1-1_ixp4xx.ipk
opkg install domus_0.0.1-1_ixp4xx.ipk
Détails des fichiers installés :
# fichier de configuration
/etc/domus/switches.conf

# script de démarrage pour fixer ou restaurer la position des commutateurs après une coupure de courant
/etc/init.d/domus

# interface en ligne de commande
/usr/sbin/domus
# traductions pour l'interface en ligne de commande
/usr/share/domus/domus.en
/usr/share/domus/domus.fr

# interface web
/www/domus/index.html
/www/domus/css/angles.css
/www/domus/css/sw.css
/www/domus/js/sw_ajax.js
/www/domus/js/sw_display.js
/www/domus/js/sw_vars.js
/www/cgi-bin/switches/index.sh
/www/cgi-bin/switches/switches.sh
# traductions pour l'interface web
/www/cgi-bin/switches/en.lng
/www/cgi-bin/switches/fr.lng
# images des  boutons et des commutateurs
/www/domus/images/off.gif
/www/domus/images/on.gif
/www/domus/images/reboot.gif
/www/domus/images/default-64-cyan.gif
Le script invoqué après l'installation ajoute deux lignes pour protéger l'accès à l'interface Web par un mot de passe dans le fichier de configuration de uhttpd:
/etc/httpd.conf

- Configuration

Editer le fichier de configuration
vi /etc/domus/switches.conf
la configuration de chaque commutateur ou ligne d'entrée/sortie tient sur une seule ligne. Syntaxe:

adresse-i2c-en-hexa;numéro-ligne;nom-commutateur;icone-commutateur;position-par-défaut-au-démarrage;options

les options:
no_all : interdit toutes actions sur le commutateur ou la ligne d'entrée/sortie
no_on : interdit l'action "on"
no_off : interdit l'action "off"
no_reboot : interdit l'action "reboot"

exemple:
0x21;2;Disque;hdd-64.gif;off;no_reboot

Les icones des commutateurs sont stockées dans /www/domus/images et elles doivent être de dimension 64x64 pixels. Certains vieux navigateurs ne gèrent pas la transparence des images PNG. C'est préférable d'utiliser des images au format GIF à la place.
Une fois la configuration effectuée, stocker la position par défaut des commutateurs avec:
/etc/init.d/domus reload
positionner les commutateurs en utilisant la dernière position stockée:
/etc/init.d/domus start
pour activer la restauration de la position des commutateurs au démarrage:
/etc/init.d/domus enable
puis redémarrer ou relancer uhttpd:
/etc/init.d/uhttpd restart

- Usage: actions manuelles

Par l'interface Web: http://192.168.1.77/domus



Par l'interface en ligne de commande:
usage   : /usr/sbin/domus nom-commutateur action [delai] # (action=on|off|reboot)
exemple : /usr/sbin/domus Routeur reboot 10
or      : /usr/sbin/domus adresse-i2c numero-ligne action [delay]
exemple : /usr/sbin/domus 0x21 7 off

- Usage: actions automatiques

Les actions automatisées et répétitives utilisent le programme en ligne de commande et "crond". Dans les crontabs, c'est toujours mieux d'indiquer le chemin complet vers domus:
55 23 * * * /usr/sbin/domus Routeur reboot 10
La ligne crontab ci-dessus rebootera le Routeur chaque jour à 23h55 avec un délai en position OFF de 10 secondes.

La carte Boomerang associée au NSLU2 constitue ainsi un ensemble domotique qui peut être piloté à distance en manuel ou de façon automatique sur un an.

--> LCD

Pour faire fonctionner le LCD, on peut utiliser lcd4linux. Malheureusement, le pilote nécessaire au HD44780-I2C n'est pas intégré dans la version pré-compilée d'OpenWRT pour le NSLU2. Il faut donc re-compiler le paquet lcd4linux pour y inclure les pilotes nécessaires. Petite difficulté supplémentaire : les pilotes sont "blacklistés" et ils n'apparaîssent pas dans la liste proposée par le menu de la chaine de compilation (make menuconfig > Utilities > lcd4linux).
Pour qu'ils y apparaîssent, il faut modifier le fichier :
feeds/packages/utils/lcd4linux/Config.in
Il faut mettre un "#" en début des lignes "depends BROKEN" des configs HD44780 et HD44780-I2C.
# extrait du fichier Config.in
config LCD4LINUX_DRV_HD44780
        bool
        prompt "HD44780"
        select LCD4LINUX_HAS_AT_LEAST_ONE_DRIVER
#       depends BROKEN

config LCD4LINUX_DRV_HD44780-I2C
        bool
        prompt "HD44780-I2C"
        select LCD4LINUX_HAS_AT_LEAST_ONE_DRIVER
#       depends BROKEN
Le fichier :
feeds/packages/utils/lcd4linux/files/lcd4linux.conf
contient la configuration par défaut du pilote. Il convient de remplacer l'adresse i2c donnée par défaut (Device '70') dans la section correspondant à l'afficheur. Il ne faut pas la mettre en hexadécimal(0x20), mais en décimal(32). Voici ce qui fonctionne pour un afficheur de 2 lignes de 16 charactères :
# extrait du fichier lcd4linux.conf

Display HD44780-I2C {
    Driver 'HD44780'
    Model 'generic'
    Bus 'i2c'
    Port '/dev/i2c-0'
    Device '32'
    Bits '4'
    Size '16x2'
    asc255bug 0
    Icons 1
    Wire {
        RW     'DB5'
        RS     'DB4'
        ENABLE 'DB6'
        GPO    'GND'
    }
}
Comme ces manipulations sont assez fastidieuses, je mets en ligne un paquet lcd4linux modifié avec le pilote intégré dans lequel je n'ai laissé que le strict minimum dans le fichier de configuration.
Télécharger lcd4linux déjà modifié
Autre chose à savoir, c'est que lcd4linux ne fonctionne pas si son fichier de configuration "/etc/lcd4linux.conf" est lisible/modifiable par tous. Une fois que vous l'avez modifié, changez ses permissions:
chmod 600 /etc/lcd4linux.conf
et relancez lcd4linux ou rebootez.

--> 1-Wire

Comme je l'ai mentionné plus haut, je n'ai pas réussi à faire marcher la partie 1-wire pour l'instant. Quand j'essaie de l'utiliser, le NSLU2 se bloque. Le probléme n'est pas avec le matériel que j'ai fabriqué, mais avec le port série. Le bootloader(RedBoot) l'utilise. Puis le noyau Linux. S'il est facile de changer la ligne de commande du noyau Linux pour qu'il évite d'utiliser le port série au démarrage, en revanche pour Redboot c'est plus compliqué et en plus on perd le bénéfice du port série pour flasher aisément de nouveau firmwares ou pour le dépannage, etc. J'ai donc abandonné l'idée d'utiliser la liaison série pour l'interface 1-wire. Je travaille sur un petit ajout matériel pour qu'il utilise l'I2C à la place. Ce sera décrit dès que je me serai procuré les pièces et que je l'aurai mis en oeuvre. Revenez régulièrement.

Dons

Ce travail de conception a été fait à l'aide de logiciels libres et gratuits. Il est offert gratuitement et sans limitation. Malgré tout certaines choses ont un coût : l'hébergement de ces pages est réalisé pour l'instant sur mes pages personnelles, mais à terme, j'aimerais les faire héberger sur un espace dédié ; et puis il faut aussi nourrir la bête pendant qu'elle travaille à mettre au point et tester les nouveaux logiciels et à écrire une documentation claire et lisible, ce qui manque souvent. C'est pourquoi j'ai ajouté les magnifiques boutons PayPal ci-dessous afin que ceux qui profitent de mon travail et qui ne pourraient s'empêcher de vouloir me payer un café, une bière ou une pizza puissent le faire. Faire un don sur le site Paypal est aussi le moyen de me contacter et d'obtenir une réponse rapide. Même les plus petits dons sont les bienvenus. Merci.


Il est bon d'avoir à soi quelque chose, pour le donner. [Paul Claudel]

Téléchargements

Télécharger le Schéma
Télécharger le Typon
Télécharger lcd4linux modifié pour la carte Boomerang
Télécharger le paquet domus pour la carte Boomerang