voir le lien :
Communication 1 wire
Liste des composants 1 wire

Branchement du DS18B20, sonde de température 1 fils, avec uniquement une résistance de 4,7kΩ en parallèle entre Data et Vcc.
Désignation des fils :


Passons à la partie logicielle qui est ici très simple.
En effet, il suffit de charger les modules 1-wire nécessaires pour voir apparaitre un nouveau périphérique dans le répertoire
/sys/bus/w1/devices :

modprobe w1-gpio
modprobe w1-therm
avec
ls -l /sys/bus/w1/devices/
total 0
lrwxrwxrwx 1 root root 0 Dec  3 21:02 28-04146b20f8ff -> ../../../devices/w1_bus_master1/28-04146b20f8ff
lrwxrwxrwx 1 root root 0 Dec  3 20:59 w1_bus_master1 -> ../../../devices/w1_bus_master1

28-04146b20f8ff est le numéro de composant unique
Si vous lisez le contenu de ce nouveau périphérique, vous devriez obtenir quelque chose de ce type :

cat /sys/bus/w1/devices/w1_bus_master1/28-04146b20f8ff/w1_slave 
7a 01 4b 46 7f ff 06 10 0b : crc=0b YES
7a 01 4b 46 7f ff 06 10 0b t=23625

La température est directement affichée en degré Celsius t=23625, il faut tout de même diviser cette valeur par 1000.
Voici donc un petit script ds18b20.py dont le rôle est de lire le contenu de ce fichier et d’en extraire la température. Dans tous les cas, on ne peut qu’espérer une précision à 0,5°C.
Pour le branchement de plusieurs composant, n'oubliez pas qu'ils ont une adresse différente (unique).
Programme:
#!/usr/bin/python

import os, glob, time, datetime

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

device_file='/sys/bus/w1/devices/28-000005305b19/w1_slave'

# lit le contenu du peripherique et extrait la temperature puis la divise par 1000
def read_temp():
  f = open(device_file, 'r')
  lines = f.readlines()
  f.close()
  temp_string = lines[1].strip()[-5:]
  temp_c = float(temp_string)/1000.0
  return temp_c

# boucle principale qui affiche la température toutes les 5 secondes
while True:
  try:
    tC = read_temp()
    print(tC)
    time.sleep(5)
  except KeyboardInterrupt:
    quit()