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

Image:Interface_Wrt54gl-1Wire.jpg


Circuit monté sur platine d'essais

L'alimentation 5V est obtenu à partir d'accu. dans ce montage.
Il faudrai la prendre sur le Wrt54gl.

Test avec 1 DS18B20
Vu du cablâge


Wrt54gl en situation Teleinfo/1-wire

Vue du Wrt54gl connecté à l'interface 1-wire et téléinfo:

Wrt54gl + cartes 1-wire et teleinfo
Vu de l'interface 1-wire (DS2480B) et carte teleinfo


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

Image:Wrt54GL_1wire_temploggerd.png



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


Vu montage DS2438 à droite de l'image
L'entrée VAD du DS2428 est reliée à une LDR



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


Luminosité d'une pièce mesurée avec la LDR


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
Vu du capteur à gauche


  • Graphe température et consommation électrique avec (JpGraph)
Température (bleu) et conso. (rouge) d'un congélateur.

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.


Incrustation de l'alarme sur TV (CI Circuit Saa5246)