commit 4cbf8d72f8ebef2ebddf05614824f338c0a93f91 Author: Mika Date: Sun Jan 11 04:11:40 2026 +0000 Add data_logging/src/data_logging/core.py diff --git a/data_logging/src/data_logging/core.py b/data_logging/src/data_logging/core.py new file mode 100644 index 0000000..a085d94 --- /dev/null +++ b/data_logging/src/data_logging/core.py @@ -0,0 +1,41 @@ +import json +import os +from pathlib import Path +from typing import Optional + + +def log_data(timestamp: str, temperature: float, signal_noise_ratio: float) -> None: + """Schreibt einen Datenpunkt mit Zeitstempel, Temperatur und SNR in ein JSON-Logfile.""" + # Validierung der Eingabewerte + if not isinstance(timestamp, str) or not timestamp: + raise ValueError("timestamp muss ein nicht-leerer String sein.") + if not isinstance(temperature, (int, float)): + raise ValueError("temperature muss numerisch sein.") + if not isinstance(signal_noise_ratio, (int, float)): + raise ValueError("signal_noise_ratio muss numerisch sein.") + + datapoint = { + "timestamp": timestamp, + "temperature": float(temperature), + "signal_noise_ratio": float(signal_noise_ratio) + } + + log_dir = Path("output") + log_dir.mkdir(parents=True, exist_ok=True) + log_file = log_dir / "log_data.json" + + if log_file.exists(): + try: + with log_file.open("r", encoding="utf-8") as f: + existing_data = json.load(f) + if not isinstance(existing_data, list): + existing_data = [] + except (json.JSONDecodeError, OSError): + existing_data = [] + else: + existing_data = [] + + existing_data.append(datapoint) + + with log_file.open("w", encoding="utf-8") as f: + json.dump(existing_data, f, indent=2, ensure_ascii=False)