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
Ce 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.
bravo pour ce post très claire, c’est justement le sujet de mes travaux du moment, une date pour la partie 3 ?
J’aimeJ’aime
Merci , ça ne devrait plus tarder , je suis en train de préparer l’article et je poste ça cette semaine
J’aimeJ’aime