| 12
 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