Programmieren für Ingenieure

Einstellungen über xml Datei

In dieser Lektion möchte ich dir zeigen wie du einige Einstellungen deiner Programme anpassen kannst, ohne dafür den Quellcode ändern zu müssen.

Angenommen du möchtest mit dem Beispielprogramm einmal nicht die Daten des Vortages Auswerten, sondern hast für einen Versuch für 3 Stunden einen Parameter an deiner Anlage verändern und möchtest nun gern die Kennzahlen aus diesem Zeitraum auswerten.
Eine gute Möglichkeit auf solche Anpassungen flexible reagieren zu können, ohne jedes Mal den Quellcode anpassen zu müssen ist eine zusätzliche Datei mit Einstellungen.
In dieser kannst du variable Einstellungen wie zum Beispiel den gewünschten Auswertungszeitraum abspeichern und diese während der Ausführung des Programmes auslesen.

Solange du deine Programme nur auf bestimmten Rechnern installiert, auf denen mit Sicherheit Python installiert ist, macht es noch keinen großen Unterschied ob du eine solche Änderung im Quellcode oder einer zusätzlichen Datei vornimmst.
Das ändert sich aber spätestens zu dem Zeitpunkt an dem du deine Programme in .exe Dateien umwandelst, sodass die Problemlos auf jedem Windows Rechner ausgeführt werden können – mehr dazu später.

In dieser Lektion möchten wir beispielhaft den Zeitraum und die Leistungsklassen, in die die Solarzellen eingeteilt werden, variabel machen.
Dafür legen wir eine neue Settings.xml Datei mit dem folgenden Format und Inhalt an:

<?xml version=“1.0″ encoding=“UTF-8″?>
<settings>
<ZeitraumStart>2021-08-03 00:00:00</ZeitraumStart>
<ZeitraumEnde>2021-08-04 00:00:00</ZeitraumEnde>
<Leistungsklassen>0.0, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 9.0</Leistungsklassen>
</settings>


In dem Programm können wir jetzt das xml.etree.ElementTree Modul nutzen um auf die darin abgespeicherten Einstellungen zurückzugreifen:

import xml.etree.ElementTree as ET


### Einstellungen aus Settings.xml Datei einlesen
tree = ET.parse(„Settings.xml“)
settings = tree.getroot()

### Zeitraum einlesen
zeitraumStart = settings.find(„ZeitraumStart“).text
zeitraumEnde = settings.find(„ZeitraumEnde“).text
if zeitraumStart == „“ or zeitraumEnde == „“:
    zeitraumStart = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0) – datetime.timedelta(days=1)
    zeitraumEnde = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
else:
    zeitraumStart = datetime.datetime.strptime(zeitraumStart, „%Y-%m-%d %H:%M:%S“)
    zeitraumEnde = datetime.datetime.strptime(zeitraumEnde, „%Y-%m-%d %H:%M:%S“)


Analog dazu passen wir auch den Teil an, in dem die Leistungsklassen deklariert werden:

leistungsklassen = settings.find(„Leistungsklassen“).text.split(„, „)
leistungsklassen = [float(leistungsklasse) for leistungsklasse in leistungsklassen]


Den kompletten Code findest du in der .\Beispielprogramm_Prozessdaten_Optimiert\DatenProzessieren_2.py Datei.
Sobald jetzt also eine der Einstellungen geändert werden soll, kannst du das einfach in der Settings.xml Datei machen, ohne deinen Quellcode dafür ändern zu müssen.
In den nächsten Lektionen werden wir noch ein paar weitere Einstellungen zu der Datei hinzufügen.

Bitte lass es mich wissen, wenn du zu dieser Lektion Fragen hast!
Vielen Dank fürs Mitmachen, und ich freue mich schon sehr darauf dich gleich in der nächsten Lektion wiederzusehen =)

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert