Files
Halloween/UPLOAD.md
T
2026-10-14 05:07:07 +02:00

92 lines
4.0 KiB
Markdown

# Projektdateien auf einen Raspberry Pi kopieren
Das Skript `tools/upload_to_pi.sh` kopiert den gewählten lokalen Ordner per
SSH und `rsync` auf **einen** Pi. Ohne `--source` ist das Projektverzeichnis
die Quelle. Es löscht keine Dateien auf dem Pi. Benutzer, Host und absoluter
Zielpfad werden beim Aufruf angegeben. Der Nutzer-Screenshot vom 14. Oktober
2026 zeigt einen erfolgreichen SSH-Login als `marcinator_2` auf
`raspi5wlan.local` und Projektdateien unter `~/halloween`.
## Voraussetzungen
- Auf dem Laptop: `ssh` und `rsync`.
- Auf dem Pi: aktivierter SSH-Zugang und `rsync`.
- Der Benutzer muss im Zielpfad schreiben dürfen.
- Für den optionalen Autostart: Pi-Software laut `SOFTWARE.md` vorbereiten,
insbesondere `.venv` im Zielordner; `sudo` muss auf dem Pi nutzbar sein.
- Vor dem ersten Upload den Pi per `ssh BENUTZER@HOST` erreichen und den
angezeigten Hostschlüssel anhand des eigenen Geräts prüfen. Bei einem
geänderten Hostschlüssel die Ursache klären, nicht die Prüfung abschalten.
## Ablauf
`BENUTZER`, `HOST` und `ZIEL` durch die geprüften Werte ersetzen. `ZIEL`
muss ein absoluter Pfad ohne Leerzeichen sein.
```bash
BENUTZER='BENUTZER'
HOST='HOST'
ZIEL='/home/BENUTZER/halloween'
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL"
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --apply
```
Der erste Aufruf zeigt nur die geplanten Befehle. Der zweite legt den
Zielordner an und überträgt die Dateien. Ein anderer Quellordner kann mit
`--source /absoluter/pfad` angegeben werden. Anschließend auf dem Pi prüfen:
```bash
ssh "$BENUTZER@$HOST" "ls -la '$ZIEL'"
```
Soll die WebUI auf dem Pi nach jedem Neustart automatisch laufen, beim
Upload `--install-service` ergänzen:
```bash
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --install-service
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --install-service --apply
```
Der erste Befehl ist wieder nur eine lokale Vorschau. Der zweite überträgt
die Dateien, installiert/aktualisiert die systemd-Unit mit `sudo` auf dem Pi
und startet den Dienst. Bei späteren Updates startet der Dienst so mit dem
neuen Code neu. Er bindet weiterhin nur an `127.0.0.1` des Pi; vom Laptop
aus ist der SSH-Tunnel aus `SOFTWARE.md` nötig. Es öffnet sich kein
Browserfenster von selbst.
Das Skript lässt `.git`, `.venv`, `data`, `preview`, `references`,
`__pycache__`, `.env` und übliche Schlüsseldateien aus. So bleiben
Laufzeiteinstellungen auf dem Pi und die großen Konzeptdateien lokal.
Es synchronisiert vorhandene Dateien, löscht aber
keine alten Dateien auf dem Pi. Zugangsdaten und andere Geheimnisse gehören
nicht in den Quellordner. Für zwei Pis den Upload mit den jeweils geprüften
Zielwerten separat ausführen.
## Bestätigter Stand
Der Nutzer-Screenshot vom 14. Oktober 2026 bestätigt SSH-Zugang und vorhandene
Projektdateien auf dem Pi: unter anderem `run.py`, `halloween/`, `tools/`,
`tests/` und die Requirements-Dateien. Zeitpunkt und Methode der bisherigen
Übertragung sowie die Übereinstimmung mit dem aktuellen lokalen Stand sind
offen. Installation der Python-Pakete, WebUI-Start, Kamera, SSH-Tunnel und
systemd-Autostart sind damit noch nicht bestätigt.
## Personenerkennung nach dem Upload einrichten
Die Modellgewichte und Erkennungseinstellungen liegen unter `data/` und bleiben
beim Upload erhalten. Bei der ersten Einrichtung nach Code-Übertragung auf dem
Pi die zusätzlichen Pakete und das geprüfte Modell ausdrücklich installieren:
```bash
cd ~/halloween
sudo apt update
sudo apt install python3-opencv python3-numpy
python3 -m venv --system-site-packages .venv
.venv/bin/python -c "import cv2, numpy; print(cv2.__version__, cv2.__file__); print(numpy.__version__)"
.venv/bin/python tools/install_detection_model.py
```
Danach den Server neu starten und Linie, Richtung, Bereich und Aktivierung in
der WebUI speichern. Details und Fehlerbehandlung in `SOFTWARE.md`.