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
| 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
while True :
#Definition de la date sous la forme "MoisAnnee" en francais.
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)
Record_dir = '/home/pi/Domotique/Donnees_Chaudiere/' + current_date
Record_file = Record_dir + f"/{current_date}.txt"
url = "http://192.168.1.78/status.xml"
request = urllib.request.Request(url)
# Ajouter les informations d'authentification
credentials = ("admin:boiler").encode()
encoded_credentials = base64.b64encode(credentials)
request.add_header("Authorization", "Basic " + encoded_credentials.decode())
try:
with urllib.request.urlopen(request) as response:
data = response.read()
# Parser le contenu XML
root = etree.fromstring(data)
# 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")
# Former le nom du fichier en fonction du mois et de l'annee
Record_file = Record_dir + f"/{current_date}.txt"
#print(Record_file)
# Préparer les donnees pour le fichier CSV
current_date = current_datetime.strftime("%d-%m-%Y")
data_to_write = {"Date": current_date, "Heure": current_time}
data_to_write.update({element.tag: element.text for element in root})
#print(data_to_write.update)
# Vérifier si le fichier existe pour ecrire l'en-tete ou non
file_exists = os.path.isfile(Record_file)
#print(file_exists)
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()
# Ãcrire les donnees
writer.writerow(data_to_write)
f.close()
time.sleep(3)
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}") |
Partager