Outils pour utilisateurs

Outils du site


brouillon_1-wire

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 !

Passage sous Squeeze, il faut recompiler OWFS !!!

Allons-y.

Installation

Recupérer les sources par là: http://sourceforge.net/projects/owfs/

$ mv owfs-2.8p6.tar.gz /usr/local/src
$ cd /usr/local/src
$ tar xvzf owfs-2.8p6.tar.gz
$ cd owfs-2.8p6

Pré-requis:

# aptitude install make gcc
# aptitude install libfuse-dev libusb-dev
# aptitude install ed
$ ./configure --enable-debian --prefix=/usr/local

C'est bon ?

  Current configuration:

    Deployment location: /usr/local

Compile-time options:
                  Caching is enabled
                      USB is enabled
                      I2C is enabled
                   HA7Net is enabled
                       W1 is enabled
           Multithreading is enabled
    Parallel port DS1410E is enabled
        TAI8570 barometer is enabled
             Thermocouple is enabled
         Zeroconf/Bonjour is enabled
             Debug-output is enabled
                Profiling is DISABLED
Tracing memory allocation is DISABLED
1wire bus traffic reports is DISABLED

Module configuration:
                  owlib is enabled
                owshell is enabled
                   owfs is enabled
                owhttpd is enabled
                 owftpd is enabled
               owserver is enabled
                  ownet is enabled
               ownetlib is enabled
                  owtap is enabled
                  owmon is enabled
                 owcapi is enabled
                   swig is DISABLED
                 owperl is DISABLED
                  owphp is DISABLED
               owpython is DISABLED
                  owtcl is DISABLED
$ make
$ make check
$ su
# make install

Pour que ça trouve les nouvelles lib:

# ldconfig

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. ;-)

Solar

Voila que j'ai recu le produit suivant:

HTS3-R1-A

de chez www.hobby-boards.com

Pour la temperature et l'humidité, ca va.

Pour le “solar”, j'ai cru comprendre qu'il faut lire la valeur dans “vis”.

$ owread /26.516A81000000/vis
         0

J'ai eu, le temps d'un bref instant de lumière (?), la valeur:

0.00002441

Et si je croise cette info avec ce qu'il est dit , alors je dois être sur la bonne voie…

En gros, c'est le composant “DS2438” qui est interfacé avec le capteur “CLD240”…

Quelques discutions dans un forum d'initiés ! http://www.cocoontech.com/index.php?showtopic=4072&st=0

brouillon_1-wire.txt · Dernière modification : 2012/01/04 15:06 de thierry