GruppeC/backend
Matias Mas Viehl 7cb0bb66d0 Wifi Module and frontend 2026-10-20 10:38:48 +02:00
..
.gitkeep Grundstruktur Repo 2026-10-08 11:10:15 +02:00
README.md Wifi Module and frontend 2026-10-20 10:38:48 +02:00
server.js Wifi Module and frontend 2026-10-20 10:38:48 +02:00
simulator.js Wifi Module and frontend 2026-10-20 10:38:48 +02:00

README.md

Backend (Empfang + Auslieferung des Frontends)

Minimaler Server mit Node-Bordmitteln (Node ≥ 18, kein npm install). 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.js ◀──GET /api/messwerte── Browser (frontend/)

Starten

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

Frontend: http://localhost:3000

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:

curl -X POST localhost:3000/api/messwerte -H 'Content-Type: application/json' \
     -d '{"temperatur":22.5,"luftfeuchte":45,"eco2":1150,"tvoc":30}'

ESP8266 erreicht den Server nicht? (WSL2)

Läuft der Server in WSL2, hat er eine eigene IP, die im WLAN nicht erreichbar ist. Der ESP muss die Windows-IP des Rechners ansprechen (ipconfig), und der Port muss durchgereicht werden (PowerShell als Administrator):

netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=<WSL-IP>
New-NetFirewallRule -DisplayName "Lernklima 3000" -Direction Inbound -Protocol TCP -LocalPort 3000 -Action Allow

Die WSL-IP zeigt wsl hostname -I. Alternativ in %UserProfile%\.wslconfig den Modus networkingMode=mirrored setzen und die Firewall-Regel anlegen.