Outils pour utilisateurs

Outils du site


brouillon_1-wire

Ceci est une ancienne révision du document !


Debian Etch

Materiel

Clé USB

Capteur de température

Brancher

la clé DS9490R

 $ tail -f /var/log/syslog
Aug 13 23:29:12 k8 kernel: usb 3-2.1.4: new full speed USB device using ehci_hcd and address 11
Aug 13 23:29:12 k8 kernel: usb 3-2.1.4: configuration #1 chosen from 1 choice
Aug 13 23:29:12 k8 kernel: Driver for 1-wire Dallas network protocol.
Aug 13 23:29:12 k8 kernel: usbcore: registered new interface driver DS9490R
Aug 13 23:29:24 k8 kernel: w1_master_driver w1_bus_master1: Family 81 for 81.0000002ab801.87 is not registered.

Ok… bon… et alors?

Les modules chargés:

# diff lsmod-1.txt lsmod-2.txt
1a2,4
> ds2490                  7776  0
> wire                   21764  1 ds2490
> cn                      8032  1 wire
111c114
< usbcore               133004  7 wacom,pl2303,usbserial,usb_storage,ehci_hcd,uhci_hcd
---
> usbcore               133004  8 ds2490,wacom,pl2303,usbserial,usb_storage,ehci_hcd,uhci_hcd 

Mais encore:

# lsusb
Bus 003 Device 014: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter

avant de brancher

Avant de brancher la clé, il faut desactiver le chargement de certains pilotes.

Editer le fichier /etc/modprobe.d/blacklist pour avoir (à la fin par exemple):

# ----
# TJ
blacklist ds9490r
blacklist ds2490
blacklist wire
# ----

Si besoin, forcer aussi le dechargement des pilotes en faisant:

# modprobe -r ds2490
# modprobe -r wire

J'ai aussi ajouté un petit:

# rmmod cn

(c'est koi ce truk?)

Digitemp

Install

# aptitude install digitemp

Test

Et puis:

# digitemp_DS2490 -a -v
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 003/012

Ca a marché ?

# digitemp_DS2490 -a -v -w
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 003/012
Turning off all DS2409 Couplers
.
Devices on the Main LAN
8101B82A00000087 : Unknown Family Code

Hu?

Branchons le capteur DS1820 :

# digitemp_DS2490 -w -v
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 006/012
Turning off all DS2409 Couplers
..
Devices on the Main LAN
1035317F0108005B : DS1820/DS18S20/DS1920 Temperature Sensor
8101B82A00000087 : Unknown Family Code

Chouette, mon petit cablage fonctionne :-)

Configurer

D'aprés le “man”, on initialise un fichier .digitemprc avec -i

# digitemp_DS2490 -i
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 006/012
Turning off all DS2409 Couplers
..
Searching the 1-Wire LAN
1035317F0108005B : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 1035317F0108005B
Wrote .digitemprc

C'est quoi ce fichier:

# cat .digitemprc
TTY USB
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 1
ROM 0 0x10 0x35 0x31 0x7F 0x01 0x08 0x00 0x5B

Examinons le senseur:

# digitemp_DS2490 -t 0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 006/012
Aug 14 23:04:56 Sensor 0 C: 25.25 F: 77.45

Yes ! Il fait chaud.

interrogations

Un autre format de reponse:

# digitemp_DS2490 -t 0 -o 2
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 006/012
0       25.56

Le “0” est juste le nombre de seconde ecoulé…
“25.56” est la température.

Autre chose:

# digitemp_DS2490 -t 0 -o 2 -n 3 -d 5
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 006/012
0       25.50
5       25.50
10      25.50

Explication rapide:
-t 0 interroger le senseur 0 (d'aprés la config)
-o 2 format de réponse
-n 3 interroger 3 fois…
-d 5 delay entre les interrogations

Autoriser user

J'ai fait ça:

# chmod u+s /usr/bin/digitemp_DS2490

Ainsi, titi il peut aussi faire:

$ digitemp_DS2490 -q -t 0 -o 2
Found DS2490 device #1 at 003/007
0       29.12

Etch

Mes tests préliminaires ont été fait sous Lenny (la version Testing de Debian) !

Ca ne fonctionne pas sous Etch !

Même aprés avoir essayé de compiler la dernière version, j'ai la même erreur dans les logs.

Compiler

# aptitude install libusb-dev
$ wget http://www.digitemp.com/software/linux/digitemp-3.5.0.tar.gz
$ tar xvzf digitemp-3.5.0.tar.gz
$ make ds2490 

Fin.

OWFS

Finalement, pour Etch, j'ai installé “OWFS” qui est trés bien !

Cablage maison

Pour mémoire, voila mon plan de cablage… pour ajouter d'autres capteurs plus tard.

Précisions:

  1. j'ai branché l'alimentation +5V (VDD)
  2. N'ayant pas de RJ12, j'ai utilisé un connecteur RJ45 en rabotant les bords: (au ras des pins 1 et 8)
    (3 pins)                (8 pins)              (6 pins)
        3+- (VDD)  <-->       +- 2 (VDD)  <-->       +- 1 <--> (VDD)
 DS1820 2+- (DQ/OW)<-->   RJ45+- 4 (DQ/OW)<-->   RJ12+- 3 <--> (DQ/OW) DS9490
        1+- (GND)  <-->       +- 5 (GND)  <-->       +- 4 <--> (GND)

rrd

Pour mémoire, j'ai créé les bases RRD comme ça:

$ rrdtool create <NOM_DU_SENSOR>.rrd DS:temp:GAUGE:300:-80:+80 RRA:AVERAGE:0.5:1:600 RRA:AVERAGE:0.5:6:700 RRA:AVERAGE:0.5:24:744 RRA:AVERAGE:0.5:72:732 RRA:AVERAGE:0.5:288:730

En gros:

  • 1 temperature toutes les 5 minutes (300 secondes)
  • limite entre -80 et +80 (quand le DS1820 redemarre (reset), il peut retourner +85°C !)
  • 1er base: 600 valeurs toutes les 1*300 secondes (5 minutes) ⇒ 2 jours et quelques minutes…
  • 2ieme base: 700 valeurs toutes les 6*300 secondes (30 minutes) ⇒ 14 jours et quelques heures…
  • 3ieme base: 744 valeurs toutes les 24*300 secondes (2 heures) ⇒ 62 jours pile (2 mois environ)
  • 4ieme base: 732 valeurs toutes les 72*300 secondes (6 heures) ⇒ 183 jours pile (6 mois environ)
  • 5ieme base: 730 valeurs toutes les 288*300 secondes (24 heures) ⇒ 730 jours pile ! (2 ans environ)

Dans les cas extremes, les courbes seront des moyennes sur 6 heures ou 24 heures !
La précision sera médiocre dans ces cas là, mais on devrait pouvoir distinguer l'été de l'hiver. ;-)

brouillon_1-wire.1221423409.txt.gz · Dernière modification : 2008/09/14 20:16 de thierry