Afficher la température d’une sonde DS18B20 en python sur le Raspberry – Partie 2

La série d’articles :

  • Partie 1 : Installation capteur DS18B20 et lecture en ligne de commande
  • Partie 2 : Lecture des valeurs avec un script Python basique
  • Partie 3 : Lecture des valeurs avec un script Python avancé et stockage dans une base MySQL
  • Partie 4 : Visualisation des données sur une page web

python-logoCe simple script python est prévu pour lire 3 sondes de température DS18B20 et afficher le résultat à l’écran. Vous pouvez facilement ajouter ou retirer une sonde en modifiant les lignes 23 à 28

il sera facile ensuite d’adapter ce script pour créer vos propres programmes

#!/usr/bin/python
# -*- coding: utf-8 -*-
#####################################################
## lecture de sondes de temperature 1-wire DS18B20 ##
## 15/07/2014 Jahislove                            ##
## lancement : sudo python ...                     ##
#####################################################

from os import system
from time import sleep

## module GPIO 1-wire et capteur de temperature #####
system('modprobe w1-gpio')
system('modprobe w1-therm')

## chemin vers les sondes ###########################
base_dir = '/sys/bus/w1/devices/'

## Remplacez les repertoires 28-xxxxxxxxxxx #########
## par vos propres repertoires . ####################
## Et si vous avez un nombre de sonde different #####
## supprimer (ou ajouter) les lignes ci dessous #####
sonde1 = "/sys/bus/w1/devices/w1_bus_master1/28-000005f2424d/w1_slave"
sonde2 = "/sys/bus/w1/devices/w1_bus_master1/28-000005f2764e/w1_slave"
sonde3 = "/sys/bus/w1/devices/w1_bus_master1/28-000005f396a0/w1_slave"
## et ajuster aussi les 2 lignes ci dessous #########
sondes = [sonde1, sonde2, sonde3]
sonde_value = [0, 0, 0]

## fonction ouverture et lecture d'un fichier #######
def lire_fichier(fichier):
    f = open(fichier, 'r')
    lignes = f.readlines()
    f.close()
    return lignes

## code principal ###################################
for (i, sonde) in enumerate(sondes):
    lignes = lire_fichier(sonde)
    while lignes[0].strip()[-3:] != 'YES': # lit les 3 derniers char de la ligne 0 et recommence si pas YES
        sleep(0.2)
        lignes = lire_fichier(sonde)

    temp_raw = lignes[1].split("=")[1] # quand on a eu YES, on lit la temp apres le signe = sur la ligne 1
    sonde_value[i] = round(int(temp_raw) / 1000.0, 2) # le 2 arrondi a 2 chiffres apres la virgule

    print "sonde",i,"=",sonde_value[i] # affichage a l'ecran

dans la partie 3 nous verrons comment stocker les valeurs dans une base MySQL , toujours avec Python.

2 réflexions sur “Afficher la température d’une sonde DS18B20 en python sur le Raspberry – Partie 2

Laisser un commentaire