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 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
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 franc§ais.
current_datetime = datetime.now()
current_date = 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_date = 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_date
Record_file = Record_dir + f"/{current_date}.txt"
print(Record_file)
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)
#print('pas de donnees')
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)
#print(file_exists)
#print(current_datetime.strftime("%d-%m-%Y %H:%M:%S"))
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("%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_date = Q + current_datetime.strftime("%Y")
#definition du repertoire de base qui change chaque mois et ou les donnees sont enregistrees
Record_dir = '/home/pi/Domotique/Donnees_Temperature/' + current_date
Record_file = Record_dir + f"/{current_date}.txt"
# current_date = current_datetime.strftime("%Y-%m-%d")
current_time = current_datetime.strftime("%H:%M:%S")
# Former le nom du fichier en fonction du mois et de l'annee
Record_file = Record_dir + f"/{current_date}.txt"
# csv_file = fbase_dir + "/{current_date}.txt"
print(Record_file)
# Preparer les donees pour le fichier CSV
current_date = current_datetime.strftime("%d-%m-%Y")
# Parser le contenu XML
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)
#print(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