GruppeC/backend/README.md

2.1 KiB

Backend (Empfang + Auslieferung des Frontends)

Minimaler Server mit Python-Bordmitteln (Python ≥ 3.8, kein pip install, läuft direkt unter Windows). Er nimmt die Messwerte des ESP8266 entgegen, hält die letzten 100 Messungen im Speicher und liefert zusätzlich das Frontend aus. Die Aggregationslogik (Präferenzen, CO2-Hard-Constraint, Sensor-Veto) ist hier noch nicht enthalten.

ESP8266 ──POST /api/messwerte──▶ backend/server.py ◀──GET /api/messwerte── Browser (frontend/)

Starten

Doppelklick auf start.bat oder:

python backend/server.py          # Port 3000 (oder: python backend/server.py 8080)
python backend/simulator.py       # optional: Fake-Sensordaten ohne Hardware

Frontend: http://localhost:3000, im Hotspot von anderen Geräten: http://<Laptop-IP>:3000

Beim Start zeigt der Server die IP-Adressen des Laptops und prüft, ob SERVER_IP in firmware/dht11_lcd/wifi_config.h dazu passt („OK“ bzw. „ACHTUNG“). Jeder empfangene Messwert erscheint mit Absender-IP im Fenster (127.0.0.1 = Simulator, 172.20.10.x = ESP im Hotspot).

Firewall (einmalig)

Windows stuft den Handy-Hotspot meist als „öffentliches Netz“ ein und blockiert eingehende Verbindungen. firewall_freigeben.bat per Rechtsklick → „Als Administrator ausführen“ gibt Port 3000 frei.

Schnittstelle (Datenvertrag)

POST /api/messwerte, Content-Type: application/json, reines HTTP (kein TLS):

{"temperatur": 22.5, "luftfeuchte": 45.0, "eco2": 612, "tvoc": 30}
Feld Einheit Quelle
temperatur °C DHT11
luftfeuchte % DHT11
eco2 ppm CCS811
tvoc ppb CCS811

Alle Felder sind Zahlen; ein Feld darf fehlen oder null sein (z. B. CCS811 noch nicht bereit). Den Zeitstempel setzt der Server beim Empfang.

GET /api/messwerte liefert {"aktuell": {...} | null, "verlauf": [...]}.

Test ohne Hardware (PowerShell):

Invoke-RestMethod -Method Post -Uri http://localhost:3000/api/messwerte -ContentType "application/json" `
  -Body '{"temperatur":22.5,"luftfeuchte":45,"eco2":1150,"tvoc":30}'