Grundstruktur Repo
parent
43fb28e872
commit
3844dc71ac
|
|
@ -0,0 +1,23 @@
|
||||||
|
# OS / Editor
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Env / Secrets
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
|
||||||
|
# Node
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
.venv/
|
||||||
|
|
||||||
|
# Arduino
|
||||||
|
*.hex
|
||||||
|
*.elf
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
UCPS-Projekt (Gruppe C): Lernklima-Aggregation für Vorlesungsräume. Konzept: `docs/aggregationskonzept.md`; offene Entscheidungen: `docs/offene-punkte.md`.
|
||||||
|
|
||||||
|
## Struktur
|
||||||
|
`firmware/` (Arduino), `backend/` (Aggregation/API), `frontend/` (Web + 3D-Zwilling), `docs/`.
|
||||||
|
|
||||||
|
## Fachliche Kernregeln (nicht verletzen)
|
||||||
|
- Temperatur/Licht: Durchschnitt aller Live-Eingaben.
|
||||||
|
- CO2 ist Hard-Constraint (Standard 1000 ppm): Nutzer können nicht überschreiben.
|
||||||
|
- Sensor-Veto: extremer Außenlärm blockiert offene Fenster; extremer Wind ➔ max. gekippt.
|
||||||
|
- Sprache der Doku/UI: Deutsch.
|
||||||
20
README.md
20
README.md
|
|
@ -1 +1,19 @@
|
||||||
## UCPS Projekt
|
# UCPS Projekt – Gruppe C
|
||||||
|
|
||||||
|
Dynamische, kontextsensitive Steuerung des Lernklimas im Vorlesungsraum: Sensordaten (Arduino) werden mit Live-Präferenzen von Dozierenden und Studierenden aggregiert und in einem Webinterface samt 3D-Digitalem-Zwilling dargestellt.
|
||||||
|
|
||||||
|
Das vollständige Konzept steht in [docs/aggregationskonzept.md](docs/aggregationskonzept.md).
|
||||||
|
|
||||||
|
## Datenfluss
|
||||||
|
Sensoren (Arduino UNO) ➔ WiFi/Bluetooth ➔ Backend (Aggregation & Regeln) ➔ Frontend (Webinterface + 3D-Zwilling)
|
||||||
|
|
||||||
|
## Repo-Struktur
|
||||||
|
| Ordner | Inhalt |
|
||||||
|
|---|---|
|
||||||
|
| `docs/` | Konzept, Architektur- und Entscheidungsdokumente |
|
||||||
|
| `firmware/` | Arduino-Sketches für Sensorik und Übertragung |
|
||||||
|
| `backend/` | Aggregationslogik (Durchschnitt, CO2-Hard-Constraint, Kontext-Sperren), API, Wetterdaten |
|
||||||
|
| `frontend/` | Responsive Webinterface (Live-Werte, Präferenz-Slider) und 3D-Raum |
|
||||||
|
|
||||||
|
## Status
|
||||||
|
Repo-Grundgerüst; noch kein Code. Tech-Stack offen (siehe Offene Entscheidungen in [docs/offene-punkte.md](docs/offene-punkte.md)).
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
# Aggregationskonzept
|
||||||
|
|
||||||
|
## 1. Zielsetzung und Grundannahmen
|
||||||
|
Ziel des Systems ist die dynamische und kontextsensitive Anpassung des Lernklimas im Vorlesungsraum. Objektive (physikalische/medizinische) Messwerte werden mit den subjektiven Präferenzen von Dozierenden und Studierenden aggregiert, um ein optimales Lernklima zu schaffen.
|
||||||
|
|
||||||
|
## 2. Datenerfassung & Erhebung der Nutzerpräferenzen
|
||||||
|
Die Datenerhebung teilt sich in objektive Sensordaten und subjektives Nutzerfeedback auf.
|
||||||
|
|
||||||
|
- **Initialzustand (statische Grundwerte):** Zu Beginn der Vorlesung startet das System mit einem vordefinierten Baseline-Zustand. Dieser berechnet sich aus aktuellen Wetterdaten (Außentemperatur) und festen medizinischen sowie physikalischen Richtlinien (z. B. empfohlene 21 °C Raumtemperatur, 50 % Luftfeuchtigkeit). Eventuell könnten hier gespeicherte Nutzerpräferenzen verwendet werden.
|
||||||
|
- **Dynamische Präferenzerhebung (Live-Feedback):**
|
||||||
|
- Die subjektiven Wünsche der Nutzer werden über ein Webinterface erfasst.
|
||||||
|
- Studierende und Prof können mehrmals pro Vorlesung live ihre aktuellen Präferenzen anpassen (z. B. „Mir ist zu kalt", „Bitte heller" in mehreren Stufen).
|
||||||
|
|
||||||
|
## 3. Hardware und Sensorik (Umgebungserfassung)
|
||||||
|
Das physikalische Modell misst die Raum- und Umweltwerte kontinuierlich. Die Datenübertragung an das Backend erfolgt drahtlos (z. B. per WiFi oder Bluetooth).
|
||||||
|
|
||||||
|
| Messgröße & Ort | Empfohlener Sensor (Arduino UNO) | Anschluss | Funktion im System |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Temperatur & Feuchtigkeit (Innen, Richtung Fenster) | BME680 (All-in-One) | I2C | Erfasst das Innenklima zur Abgleichung mit dem Initialzustand. |
|
||||||
|
| Temperatur & Feuchtigkeit (Außen) | DHT11 oder DHT22 | Digital | Wetter-Baseline für die Heizungs-/Lüftungslogik. Ein Sensor, Mittelwert mit den Werten einer Wetter-App. |
|
||||||
|
| Luftqualität / CO2 (Innenraum) | MH-Z19 oder SCD30 | UART / I2C | Strikte Überwachung der Atemluft (medizinische Baseline). |
|
||||||
|
| Lichtverhältnisse (Tafel & Richtung Fenster) | BH1750 (Lichtsensor) | I2C | Prüft, ob die Tafel blendet oder es zu dunkel zum Schreiben ist. |
|
||||||
|
| Lärm / Lautstärke (Außen) | KY-037 (Mikrofon-Modul) | Analog/Digital | Prüft Störgeräusche von außen (z. B. Straßenverkehr). |
|
||||||
|
| (Optional) Feinstaub / Smog (Außen) | SDS011 / API-Anbindung | UART | Indikator, ob überhaupt gelüftet werden darf (Pollen/Verkehr). Empfehlung, Fenster/Türen zu schließen (z. B. bei Großbränden in der Nähe). |
|
||||||
|
|
||||||
|
## 4. Aggregationslogik & Konfliktauflösung
|
||||||
|
Definiert, wie das System reagiert, wenn Eingaben (Sensoren vs. Nutzer) kollidieren.
|
||||||
|
|
||||||
|
- **Primäre Aggregationsmethode (Durchschnitt):** Bei Parametern wie Temperatur und Licht, die auf persönlichem Empfinden basieren, wird der Durchschnitt aller Live-Eingaben aus dem Webinterface berechnet.
|
||||||
|
- **Medizinische Hard-Constraints (kein Nutzereinfluss):** Die Luftqualität (CO2) wird ausschließlich anhand medizinisch festgelegter Grenzwerte (z. B. max. 1000 ppm) optimiert. Übersteigt der Sensor diesen Wert, erzwingt das System eine Anpassung (z. B. Lüftungsanlage an / Fenster auf). Nutzer können diesen Wert nicht überschreiben – Gesundheit hat Vorrang vor Komfort.
|
||||||
|
- **Kontext-Sperren (Sensordaten-Veto):** Misst der Außen-Lärmsensor extremen Lärm, blockiert das System den Wunsch nach offenen Fenstern und signalisiert dies im Interface. Wird extremer Wind vorhergesagt, wird das Fenster maximal gekippt.
|
||||||
|
|
||||||
|
## 5. Systemarchitektur, Webinterface & Visualisierung
|
||||||
|
Messergebnisse und resultierende Raumveränderungen müssen für Nutzer transparent dargestellt werden.
|
||||||
|
|
||||||
|
- **Datenfluss:** Sensoren (Arduino UNO) ➔ drahtlose Übertragung (WiFi/Bluetooth) ➔ Backend-Logik (Berechnung der Averages) ➔ Frontend (Webinterface).
|
||||||
|
- **Nutzer-Interface:** Responsive Web-Anwendung, die während der Vorlesung aufgerufen werden kann. Zeigt aktuelle Live-Werte (Sensordaten) und bietet Slider oder Buttons zur Anpassung der Präferenzen (Temp/Licht).
|
||||||
|
- **Visualisierung (Digitaler Zwilling):** Interaktiver 3D-Raum im Browser, dessen Zustand sich live ändert.
|
||||||
|
- Fordert die Durchschnittspräferenz mehr Licht, dimmen die digitalen Lichter hoch.
|
||||||
|
- Steigt das CO2, färbt sich der Raum leicht rötlich, bis sich im 3D-Modell die Fenster öffnen und blaue „Frischluft" visualisiert wird.
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Offene Entscheidungen
|
||||||
|
|
||||||
|
- [ ] Backend-Sprache/Framework (z. B. Node.js, Python/FastAPI)
|
||||||
|
- [ ] Transport Sensoren ➔ Backend (HTTP, MQTT, WebSocket; WiFi vs. Bluetooth). Hinweis: Arduino UNO hat kein WiFi – ggf. ESP-Modul/UNO R4 WiFi.
|
||||||
|
- [ ] Live-Updates im Frontend (WebSocket / SSE)
|
||||||
|
- [ ] Frontend-Framework und 3D-Bibliothek (z. B. three.js)
|
||||||
|
- [ ] Wetter-API (Außentemperatur, Windvorhersage, Feinstaub)
|
||||||
|
- [ ] Persistenz (Nutzerpräferenzen, Messverlauf)
|
||||||
|
- [ ] Schwellwerte: CO2-Limit (1000 ppm), „extremer Lärm", „extremer Wind"
|
||||||
|
- [ ] Gewichtung: Dozent vs. Studierende beim Durchschnitt? Zeitfenster/Verfall alter Eingaben?
|
||||||
|
- [ ] Authentifizierung/Anonymität der Nutzer (Mehrfachabgaben verhindern)
|
||||||
|
- [ ] Simulation von Sensordaten für Entwicklung ohne Hardware
|
||||||
Loading…
Reference in New Issue