Bus 1-wire sur Linksys Wrt54gl
De MicElectroLinGenMet.
(Retour Accueil ou Liste des articles)
Sommaire |
Description
Utilisation d'un routeur Wrt54gl flashé OpenWrt pour piloté un bus 1-wire.
Source: owfs.org (1-Wire Wireless Router WRT54GL)
L'interface
Utilisation du DS2480B relié au port série ttyS1 du Wrt54gl.
Seule une interface simple utilisant un 74HC05 sera utilisée pour adapter les niveaux 3.3V du port série au 5V du DS2480 et bus 1-wire.
Shéma
Circuit monté sur platine d'essais
L'alimentation 5V est obtenu à partir d'accu. dans ce montage.
Il faudrai la prendre sur le Wrt54gl.
Wrt54gl en situation Teleinfo/1-wire
Vue du Wrt54gl connecté à l'interface 1-wire et téléinfo:
Les programmes
owfs
Il suffira de rajouter le dépot propre à la version d'OpenWrt dans le fichier de gestion de packages:
# root@OpenWrt:/# echo "src owfs http://owfs.sourceforge.net/openwrt/packages" >> /etc/ipkg.conf
- Installation
Mise à jour de la base de données des packages et installation de owfs:
root@wrt54gl:~# ipkg update root@wrt54gl:~# ipkg install owfs
Voir les paramètres par defaut dans /etc/default/*, entre autre le port série utilisé:
/etc/default/owserver ... OPTIONS="-d /dev/tts/1 -p 4304" ...
- Lancement du daemon owfs
root@wrt54gl:~# run-owfs
root@wrt54gl:~# ps -ef|grep ow 482 root 688 S owserver -P /var/run/owserver.pid -d /dev/tts/1 -p 4304 497 root 824 S owfs -P /var/run/owfs.pid -s 4304 /tmp/1wire 499 root 824 S owfs -P /var/run/owfs.pid -s 4304 /tmp/1wire 504 root 824 S owfs -P /var/run/owfs.pid -s 4304 /tmp/1wire 510 root 596 S owhttpd -P /var/run/owhttpd.pid -s 4304 -p 3001 511 root 596 S owhttpd -P /var/run/owhttpd.pid -s 4304 -p 3001 512 root 596 S owhttpd -P /var/run/owhttpd.pid -s 4304 -p 3001 513 root 688 S owserver -P /var/run/owserver.pid -d /dev/tts/1 -p 4304 514 root 688 S owserver -P /var/run/owserver.pid -d /dev/tts/1 -p 4304 519 root 688 S owserver -P /var/run/owserver.pid -d /dev/tts/1 -p 4304
- Test avec 3 sondes DS18B20 reliées au bus
root@wrt54gl:~# l /tmp/1wire/ drwxrwxrwx 1 root root 8 May 12 14:34 28.281080010000/ drwxrwxrwx 1 root root 8 May 12 14:34 28.32DD7F010000/ drwxrwxrwx 1 root root 8 May 12 14:34 28.FC1D80010000/ drwxr-xr-x 1 root root 8 May 12 14:27 alarm/ drwxr-xr-x 1 root root 8 May 12 14:27 bus.0/ drwxr-xr-x 1 root root 8 May 12 14:27 settings/ drwxrwxrwx 1 root root 8 May 12 14:34 simultaneous/ drwxr-xr-x 1 root root 8 May 12 14:27 statistics/ drwxr-xr-x 1 root root 30 May 12 14:27 structure/ drwxr-xr-x 1 root root 8 May 12 14:27 system/ drwxr-xr-x 1 root root 8 May 12 14:27 uncached/
root@wrt54gl:~# cat /tmp/1wire/28*/temperature ; echo 25.125 29.0625 29.4375
Commande à mettre en crontab:
root@wrt54gl:~# echo "Temperature piece :$(cat /tmp/1wire/28.281080010000/temperature)" | logger -t owfs
Valeur retrouvée dans la syslog local et distante si configurée:
Jan 3 10:31:01 (none) user.notice owfs: Temperature piece : 9.1875 Jan 3 10:31:02 wrt54gl owfs: Temperature piece : 9.3125
- Lecture sur le réseau
A partir d'un Linux avec utilitaire owfs installés:
dan@vesta:~$ owread -s wrt54gl:4304 28.FC1D80010000/temperature; echo -17.5625
- Mise à jour si necessaire
root@wrt54gl:~# ipkg update root@wrt54gl:~# ipkg install owfs owlib
temploggerd
- Installation
# ipkg install temploggerd
(Note: ntpclient ou rdate doivent être installés pour avoir des graphes correctement horodatés.)
Les 3 DS18B20 déclarés dans le fichier /etc/temploggerd.conf:
... sensor 28.281080010000 Temp1 sensor 28.32DD7F010000 Temp2 sensor 28.FC1D80010000 Temp3 ...
- Lancement du daemon
# run-temploggerd
# ps -ef|grep temp 1088 root 328 S temploggerd -P /var/run/temploggerd.pid -s -c /etc/temploggerd.conf
Pour visualiser les graphes générés, il faut se connecter sur la page suivante sur le Wrt54gl:
http://@Wrt54gl/temploggerd/
Il faudra attendre quelques minutes pour que la base rrd soit mise à jour.
Les fichiers générés (graphes et base RRD) sont stockés dans le répertoire /var/lib/temploggerd/ par defaut et seront perdus à l'arrét/reboot du WRT.
- Graphes obtenus
Lecture des capteurs par xPL
Voir page Acquisition senseurs 1-wire Wrt54gl par messages xPL
DS2438 Temperature, A/D Battery Monitor
Voir page Bus 1-wire sur le DS2438
DS2438 connecté sur le bus 1-wire du Wrt54gl
Lecture sous OWFS
- Le DS2438 apparait sous l'id 26.D050E7000000
root@wrt54gl:~# l 1wire/ drwxrwxrwx 1 root root 8 Apr 27 14:22 26.D050E7000000/ drwxrwxrwx 1 root root 8 Apr 27 14:22 28.281080010000/ drwxrwxrwx 1 root root 8 Apr 27 14:22 28.FC1D80010000/ drwxr-xr-x 1 root root 8 Apr 27 14:08 alarm/ drwxr-xr-x 1 root root 8 Apr 27 14:08 bus.0/ drwxr-xr-x 1 root root 8 Apr 27 14:08 settings/ drwxrwxrwx 1 root root 8 Apr 27 14:22 simultaneous/ drwxr-xr-x 1 root root 8 Apr 27 14:08 statistics/ drwxr-xr-x 1 root root 30 Apr 27 14:08 structure/ drwxr-xr-x 1 root root 8 Apr 27 14:08 system/ drwxr-xr-x 1 root root 8 Apr 27 14:08 uncached/
- Vu des registres du circuit sous OWFS
root@wrt54gl:~/1wire# ls 26.D050E7000000/ CA IAD address endcharge locator r_address type EE MultiSensor crc8 family offset r_id udate HIH4000 VAD date humidity pages r_locator vis HTM1735 VDD disconnect id present temperature
- Lecture des valeurs principales
root@wrt54gl:~/1wire# cat 26.D050E7000000/VDD ; echo 5.01 root@wrt54gl:~/1wire# cat 26.D050E7000000/VAD ; echo 4.46 root@wrt54gl:~/1wire# cat 26.D050E7000000/temperature ; echo 13.9
- Graphe luminosité généré avec la librairie JpGraph
En fin de graphe, la forme "carré" est du à un éclairage de luminaire.
Exemple d'utilisation avec un Capteur de courant
Le capteur est relié à la prise d'un congélateur pour permettre de suivre sa consommation.
- Shéma du montage
La résitance de 4.7M Ohms en "pull-up" à l'entréee VAD a été rajoutée pour éviter des lectures érronée (~10,23V).
- Vu du cablâge
- Graphe température et consommation électrique avec (JpGraph)
La consommation électrique est indiquée en Volts lus sur le capteur, il faudrait calibrer avec un Wattmètre par exemple.
- Alarme température congélateur
Sur la Debian, un script lit sur le Wrt54gl la t° du congélateur situé dans le garage et incruste si t° trop basse un message d'alarme sur le téléviseur.
Celui-ci est piloté avec l'interface i2c et un saa5246.