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
| import urllib.request
from lxml import etree
from urllib.error import URLError, HTTPError
import base64
import csv
import os
from datetime import datetime
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'année
csv_file = f"Données_Chaudiere_{current_datetime.strftime('%B_%Y')}.txt" # par exemple "Données_Chaudiere_Janvier_2024.txt"
# Préparer les données pour le fichier CSV
data_to_write = {"Date": current_date, "Heure": current_time}
data_to_write.update({element.tag: element.text for element in root})
# Vérifier si le fichier existe pour écrire l'en-tête ou non
file_exists = os.path.isfile(csv_file)
with open(csv_file, "a", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=data_to_write.keys())
# Écrire l'en-tête si le fichier est nouveau
if not file_exists:
writer.writeheader()
# Écrire les données
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}") |
Partager