1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
   |  
import glob
import urllib.request
from lxml import etree
from urllib.error import URLError, HTTPError
import base64
import csv
import os
import time
from datetime import datetime
from pathlib import Path
 
 
 
 
sonde_chambre = '/28-00000c86ab42'
sonde_ecs = '/28-04168632a0ff'
sonde_salon = '/28-00000c376062'
 
base_dir = '/sys/bus/w1/devices'
sonde_chambre = base_dir + '/28-00000c86ab42/w1_slave'
sonde_salon = base_dir + '/28-00000c376062/w1_slave'
sonde_ecs = base_dir + '/28-04168632a0ff/w1_slave'
    #Definition de la date sous la forme "MoisAnnee" en français.
current_datetime = datetime.now()
current_month_year = current_datetime.strftime("%B%Y")
#print(current_date)
Mois=['janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre']
mois = current_datetime.date().month
    #print(Mois[mois])
Q = Mois[mois-1]
    #print(Q)
current_month = Q + current_datetime.strftime("%Y")
#print(current_date)
 
 
#definition du repertoire de base qui change chaque mois et ou les donnees sont enregistrees
Record_dir = '/home/pi/Domotique/Donnees_Temperature/' + current_month
Record_file = Record_dir + f"/{current_month}.txt"
#print(Record_file)
#print(Record_dir)
def Ouverture_Lecture_Fichiers_Temp(sonde):
    #    while not os.path.exists("sonde"):
    #        time.sleep(10)    
    f_sonde = open(sonde, 'r')
    lines_sonde = f_sonde.readlines()
    return lines_sonde
    f_sonde.close()
 
def extraire_temperature (sonde):
    lines = Ouverture_Lecture_Fichiers_Temp(sonde)
    while lines == []:
        time.sleep(0.5)
        lines = Ouverture_Lecture_Fichiers_Temp(sonde)
    donnees_temperature = lines[1].split(" ")[9]
    Temp = float(donnees_temperature[2:]) / 1000
    return Temp
 
#print(Record_dir)
#print(Record_file)
file_exists = os.path.isfile(Record_file)
 
while True :
    Temp_Salon = extraire_temperature (sonde_salon)
    Temp_Chambre = extraire_temperature (sonde_chambre)
    Temp_ECS = extraire_temperature (sonde_ecs)
 
    print(Temp_Salon)
    print(Temp_Chambre)
    print(Temp_ECS)
    try:
 #       # Obtenir la date et l'heure actuelles
        current_datetime = datetime.now()
        current_date = current_datetime.strftime("%Y-%m-%d")
        current_time = current_datetime.strftime("%H:%M:%S")
        print(current_time)
#        Verification du dossier 
        if not os.path.exists(Record_dir):
             os.makedirs(Record_dir)
 
 
 
 
        root = {"Temp_Salon": Temp_Salon,"Temp_Chambre": Temp_Chambre,"Temp_ECS": Temp_ECS}
        data_to_write = {"Date": current_date, "Heure": current_time}
        print(data_to_write)
        data_to_write.update(root)
 
        # Verifier si le fichier existe pour ecrire l'en-tete ou non
        file_exists = os.path.isfile(Record_file)
        with open(Record_file, "a", newline="", encoding="utf-8") as f:
            writer = csv.DictWriter(f, fieldnames=data_to_write.keys())
 
            # ecrire l'en-tete si le fichier est nouveau
            if not file_exists:
                writer.writeheader()
 
            # ecrire les donnees
            writer.writerow(data_to_write)
 
    except HTTPError as e:
        print(f"Erreur HTTP : {e.code} {e.reason}")
 
    except URLError as e:
        print(f"Erreur d'URL : {e.reason}")
 
    except etree.XMLSyntaxError as e:
        print(f"Erreur de syntaxe XML : {e}")
 
    f.close()
    time.sleep(30) | 
Partager