Neubau auf Abrufe

This commit is contained in:
chk
2026-06-08 16:53:14 +02:00
parent f3a9f62ecd
commit 204e050ae4
34 changed files with 446 additions and 942 deletions

View File

@@ -1,57 +1,49 @@
# appRobotHoming
Eine kleine Node.js-App mit HTTPS-Frontend (einige Buttons + Textfeld) und Backend, das sich mit einem konfigurierbaren **WSS** (WebSocket Secure) verbindet. Die Buttons senden Befehle an den WSS, und das Textfeld zeigt eingehende Nachrichten/Logs an.
`appRobotHoming` ist eine browserbasierte Benutzeroberfläche für die
WebCam-gestützte Ermittlung der Roboterpose. Der Einstieg bleibt als einfaches
Frontend erhalten, während die Auswertung künftig an den BodyTracker weitergeleitet
wird.
## Features
- **HTTPS**-Server wird automatisch mit **selbstsignierten Zertifikaten** betrieben.
- **Postinstall-Task** erstellt bei `npm install` die Zertifikate unter `./certs`.
- **WSS-Client** mit Auto-Reconnect und optionaler TLS-Validierung (in `.env` steuerbar).
- **SSE** (Server-Sent Events) für Live-Logs im Browser.
## Was das Projekt jetzt macht
- Holt aus der WebCam alle 3 bis 10 Bilder ab (siehe `doc/README_WebCam.md`).
- Zeigt ausgewählte Bilder und die zugehörigen `.npz`-Daten in einer Auswertungsansicht.
- Übergibt diese Daten an den BodyTracker (`doc/README_BodyTracker.md`).
- Ermittelt daraus die Roboterpose und gibt sie aus.
## Schnellstart
```bash
# 1) Abhängigkeiten installieren und Zertifikate erzeugen
npm install
## Aktueller Fokus
- Benutzeroberfläche bleibt der Einstieg.
- Bildanzeige und Poseausgabe sind zentral.
- Der alte HTTPS/WSS-Server wurde entfernt.
- `certs/`, `scripts/` und `server/` sind nicht mehr Teil des aktuellen Projekts.
# 2) (Optional) .env anlegen, basierend auf .env.sample
cp .env.sample .env
# Werte nach Bedarf anpassen
## Integration
- Die WebCam- und BodyTracker-Aufrufe laufen über das Backend, nicht direkt aus dem Browser.
- Das Frontend lädt Snapshot-Daten über `/api/latest-snapshot`.
- Der Browser sendet Pose-Anfragen an `/api/estimate`.
- Das Backend kann dann auf interne Docker-Container zugreifen, z. B. auf den WebCam-Service und den BodyTracker-Service.
- Als Fallback verwendet das Backend lokale `public/snapshots`, wenn keine externe WebCam verfügbar ist.
- Konfigurierbare Umgebungsvariablen:
- `WEBCAM_URL` Basis-URL des internen Webcam-Services.
- `BODYTRACKER_URL` Basis-URL des internen BodyTracker-Services.
# 3) Starten
npm run dev # mit Nodemon
# oder
npm start # ohne Nodemon
```
## Geplante Erweiterungen
1. Pose an `appRobotDriver` weitergeben.
2. Wenn die Hand nicht erkannt wird: Vorschlag für eine bessere Arm-/Foto-Position.
3. Manuelle Eingabe von `x, y, z, a, b, c, e`.
4. Erkennungsergebnis und erkannte Pose klar im UI ausgeben.
Öffne danach: https://localhost:8443
(Da selbstsigniert, musst du dem Zertifikat im Browser einmalig vertrauen.)
## Dateien & Struktur
- `public/` Frontend, UI, Client-Logik und Anzeige.
- `doc/README_WebCam.md` Details zur Webcam-Architektur und Bildabholung.
- `doc/README_BodyTracker.md` BodyTracker-Integration und Poseermittlung.
- `test/` bestehende Tests für die Berechnung und Auswertung.
## Konfiguration (`.env`)
Siehe `.env.sample` für alle verfügbaren Variablen:
- `HTTPS_PORT` (Standard: `8443`)
- `WSS_URL` (z. B. `wss://localhost:9001`)
- `WSS_INSECURE_TLS` (`true|false`) bei selbstsignierten Upstream-Zertifikaten oft `true`
- `HTTPS_HOST` (CN für das Zertifikat, Standard: `localhost`)
- `HTTPS_CERT_DAYS` (Gültigkeitsdauer des selbstsignierten Zertifikats in Tagen)
- `ALLOWED_COMMANDS` (kommasepariert; nur diese Kommandos akzeptiert das Backend)
## Nutzung
1. `npm install`
2. `npm test`
3. Öffne `public/index.html` im Browser oder nutze einen beliebigen statischen Server.
## Sicherheitshinweise
- Die Inhalte des Verzeichnisses `certs/` sowie `.env` sind **absichtlich** in `.gitignore` eingetragen und werden nicht in Gitea eingecheckt.
- In Entwicklungsumgebungen kann `WSS_INSECURE_TLS=true` nötig sein. In Produktion **deaktivieren** und echte Zertifikate verwenden.
## Ordnerstruktur
```
appRobotHoming/
├─ public/ # Statisches Frontend (HTML/JS/CSS)
├─ src/ # Backend-Quellcode
├─ scripts/ # Utility-Skripte (z. B. Zertifikatserzeugung)
├─ certs/ # (auto-generiert) selbstsignierte Zertifikate
├─ .gitignore
├─ .env.sample
├─ package.json
└─ README.md
```
## Gitea-Upload
- Committe den Code **ohne** `certs/` und **ohne** `.env`.
- Nach dem Klonen auf einem anderen System einfach `npm install` ausführen die Zertifikate werden wieder neu erzeugt.
> Hinweis: Die Anwendung ist aktuell als Frontend/Analyse-UI aufgebaut. Die
> Backend-Serverlogik aus früheren Versionen wurde bereinigt, um das Projekt zu
> fokussieren.