**Dies ist eine alte Version des Dokuments!**
Data Processing
Data Collection
Keine Batterie hält ewig - nun möchten wir wissen, wie lange unsere Batterie Strom liefert, und wieviel Energie wir praktisch nutzen konnten, bis sie leer ist. Aus der Physik wissen wir, dass $Spannung\cdot{}Strom$ die Leistung unserer Batterie (bzw. die Leistungsaufnahme der Leuchte) ergibt. Wenn wir die Leistung über die ganze Lebensdauer unseres Systems aufzeichnen, wissen wir, wieviel Arbeit die Batterie insgesamt geleistet hat.
TODO je nach verwendeter Sensortechnik unterscheidet sich dieser Block.
TODO: wollen wir wirklich Spannung & Strom messen, oder nur $U$, da $R$ bekannt ist?
Ziel
Schreibe Python-Code wie folgt. Falls die nötigen Python-Kenntnisse noch nicht vorhanden sind, folgst du den untenstehenden Tutorials.
- Datei
batterie.csv
im Schreibmodus öffnen. - Eine Schleife ausführen, die alle zehn Sekunden die Strom- und Spannungswerte ausliest.
- Für jede Lesung wird eine Zeile (en. record) in die Datei geschrieben im folgenden Format:
<timestamp>, <spannung>, <strom>
- also zum Beispiel (für eine Messung von $U = 1.37V$ und $I = 300mA$):
2024-06-13 14:08:37.375, 1.37, 0.3
Tutorials
Python: Datei Ein- und Ausgabe
Wie lesen wir Daten in einer Text-Datei?
# Opens a file for writing (and closes it again after the 'with'). with open('dateiname.csv', 'w') as outfile: for i in range(10): line = 'Zeile ' + str(i) + '\n' outfile.write(line)
Beachte:
- Wenn Dateien gelesen oder geschrieben werden, müssen sie beim Betriebssystem reserviert werden. Mit
with
wird sichergestellt, dass die Datei nicht offen bleibt sondern nach dem Lesevorgang wieder geschlossen wird. - Die Datei (hier 'dateiname.csv') muss sich im gleichen Ordner befinden wie die Python-Datei.
'w'
bedeutet write, dass die Textdatei nur gelesen und nicht verändert wird.str()
verwandelt die Zahl in einen Text.'\n'
ist der ASCII-Code für einen Zeilenumbruch.
Aufgabe
Beschreibe eine Datei mit einigen Zeilen. Es ist ungünstig, mehr als einige zehntausend Zeilen zu schreiben…
Python: Zeitstempel formatieren
Zeitstempel können aus der datetime
Bibliothek geholt werden:
from datetime import datetime print(datetime.now())
Mit Python f-Strings können mehrere Argumente praktisch in einen String gepackt werden:
from datetime import datetime timestamp = datetime.now() planet = 'Alderaan' magnitude = 'great' print(f'At {timestamp}, there was a {magnitude} disturbance in the Force on planet {planet}!')
(Du weisst nicht, was mit Alderaan hier gemeint ist? → Star Wars schauen bis zur nächsten Lektion!)