# Einstellungen [← zurück zum Überblick](../README.md) · [alle Kapitel](README.md) Alles, was Detector und Web-App über Umgebungsvariablen annehmen — und was man stattdessen im Admin einstellen kann, ohne einen Prozess anzufassen. ### Detector | Schalter | Standard | Zweck | |---|---|---| | `--source` | — | Stream-URL, RTSP-URL oder Ordner | | `--api` / `--token` | — | Wohin gemeldet wird | | `--save-to` | — | Ordner für Rohbilder je Sichtung | | `--gate` | `motion` | `detector` ignoriert Bewegung — nötig bei unruhigem Hintergrund | | `--habitats` | `garten` | Lebensräume, die in Frage kommen | | `--min-bird-score` | `0.05` | Darunter gilt die Art als unbestimmt | | `--detect-threshold` | `0.4` | Ab wann etwas als Vogel gilt | | `--classify-every` | `3` | Nur jedes n-te Bild durchs Modell | | `--cooldown` | `4.0` | Sekunden Ruhe, bis ein Besuch endet | | `--min-bird-frames` | `2` | Weniger Treffer → verworfen | | `--min-confidence` | `0.45` | Darunter „unbestimmt" statt geraten | | `--nachtsicht` | aus | Nie bei Dunkelheit pausieren | | `--dunkel-unter` / `--hell-ueber` | `15` / `30` | Helligkeitsschwellen 0–255 | | `--motion-ratio` | `0.012` | Anteil bewegter Pixel für einen Besuch | Alles auch als Umgebungsvariable mit Präfix `VOGELALBUM_`, etwa `VOGELALBUM_SOURCE`, `VOGELALBUM_TOKEN`, `VOGELALBUM_HABITATS`. ### Web-App | Variable | Zweck | |----------|-------| | `DJANGO_SECRET_KEY` | **Pflicht**, sobald `DJANGO_DEBUG=0`. Ohne startet die App nicht. | | `DJANGO_DEBUG` | `0` im Betrieb | | `DJANGO_ALLOWED_HOSTS` | kommagetrennt | | `DJANGO_CSRF_TRUSTED_ORIGINS` | kommagetrennt, mit Schema | | `VOGELALBUM_INGEST_TOKEN` | Sammel-Token; leer lassen, wenn jede Kamera einen eigenen hat | | `SQLITE_DIR` | Datenbank auf ein Volume legen | | `MEDIA_ROOT` | Fotos auf ein Volume legen | ## Einstellungen im Admin statt auf der Kommandozeile Bis vor kurzem stand die Konfiguration des Detectors nur auf seiner Kommandozeile: Stream-Adresse, Schwellen, Lebensräume. Wer eine Kamera umstellen wollte, brauchte eine Shell auf dem Rechner, auf dem der Detector läuft. Jetzt fragt der Detector die Web-App: ```bash python -m detector watch --api http://vogelalbum:8000 --token ``` Damit holt er sich bei `/api/config/` alle 300 Sekunden, was für *seine* Kamera gilt — und übernimmt Änderungen **ohne Neustart**. Einstellbar im Django-Admin unter der Kamera: | Feld | Wirkung | |---|---| | Stream-Adresse | Woher die Bilder kommen. `--source` hat Vorrang. | | Lebensräume | Welche Arten der Klassifikator erwägt (`garten`, `wald`, `offenland`, `wasser`, `gebirge`) | | Schwelle Vogelerkennung | Ab welcher Sicherheit etwas als Vogel gilt | | Mindestanteil heimischer Arten | Darunter gilt die Sichtung als unbestimmt | Die **Artenliste kommt mit** — sie ist eine inhaltliche Entscheidung und gehört in den Admin, nicht in eine Python-Datei. Der wissenschaftliche Name ist dabei der Schlüssel ins Label-File des Modells; ein zweites Mapping braucht es nicht. Zwei Eigenschaften sind wichtiger als die Funktion selbst: - **Die Kommandozeile bleibt gültig.** Ohne `--token` ändert sich nichts, und ein ausdrücklich gesetztes `--source` gewinnt immer. - **Ein Ausfall ändert nichts.** Antwortet die Web-App nicht, läuft die Erkennung mit dem letzten bekannten Stand weiter. Wer zwei Wochen auf den ersten Vogel wartet, will ihn nicht verpassen, weil ein Webserver neu gestartet wurde. `--konfig-alle 0` schaltet das Nachfragen ab. ### Regionen Das iNat-Modell kennt 965 Arten und ist **auf Nordamerika trainiert** — ohne Einschränkung wird aus einer Kohlmeise eine Carolina Chickadee. Welche Arten gelten, entscheidet deshalb `VOGELALBUM_REGION` (Standard `de`) gegen das Feld `regions` der Art. Eine weitere Region ist damit kein Umbau mehr, sondern ein Katalog: Arten mit dem passenden Kürzel anlegen und die Variable umstellen. Für Nordamerika arbeitet das Modell sogar in seiner Trainingsverteilung, also besser als hier.