Vogelalbum 1.0.0
Eine Kamera am Vogelhaus, ein Rechner der erkennt wer da war — und eine Sammlung, die sich von allein fuellt. Zwei neuronale Netze: eines findet den Vogel im Bild, eines bestimmt die Art. 148 heimische Arten, auf Deutschland eingeschraenkt und neu normiert — ohne diese Einschraenkung wird aus einer Kohlmeise eine nordamerikanische Schwesterart. Daraus entsteht ein Sammelalbum: nummerierte Seiten, gefundene Arten in Farbe, fehlende als Schatten, dazu Erstfang, Punkte, Stufen und 15 Abzeichen. Laeuft vollstaendig auf eigener Hardware. Kein Cloud-Dienst, kein Konto, keine Telemetrie; die Bilder verlassen das eigene Netz nicht. Zwei getrennt deploybare Teile: die Sammlung als Django-Anwendung, die Erkennung als eigener Dienst. Der Erkennungs-Dienst fragt selbst an und braucht deshalb weder eine erreichbare Adresse noch einen offenen Port — er laeuft hinter einem gewoehnlichen Router. Dabei: Firmware fuer Raspberry Pi und ESP32-S3, Anbindung an Home Assistant ueber MQTT, Oberflaeche auf Deutsch und Englisch, Einstellungen je Kamera aus dem Browser, und ein Weg fuer Fotos von unterwegs. AGPL-3.0.
This commit is contained in:
commit
cc9e0786c2
189 files changed
+29792
No files matched your search
@@ -0,0 +1,66 @@
|
||||
# Nur die Erkennung: der Rechner mit Sichtverbindung zur Kamera, der an eine
|
||||
# Sammlung woanders liefert.
|
||||
#
|
||||
# cp .env.beispiel .env # Abschnitt "Nur der Detector" ausfuellen
|
||||
# docker compose -f docker-compose.detector.yml up -d
|
||||
#
|
||||
# Der typische Fall: Die Sammlung steht oeffentlich im Internet, die Kameras
|
||||
# stehen zu Hause. Dieser Container gehoert ins Heimnetz, in dasselbe Netz wie
|
||||
# die Kamera.
|
||||
#
|
||||
# 🔑 **Nach aussen muss dafuer kein Port offen sein.** Die Verbindung geht nur
|
||||
# in eine Richtung: Der Detector meldet ausgehend an die Sammlung, die
|
||||
# Sammlung erreicht ihn nie. Kein Portforwarding, kein Tunnel, kein DynDNS.
|
||||
#
|
||||
# ⚠️ Architektur: ai-edge-litert gibt es als Wheel fuer x86_64 und arm64. Ein
|
||||
# Raspberry Pi 4/5 mit 64-Bit-System traegt den Detector, ein Pi Zero nicht —
|
||||
# dem fehlt nicht das Wheel, sondern die Rechenleistung.
|
||||
#
|
||||
# Fuer mehrere Kameras: diese Datei je Kamera mit eigenem Projektnamen und
|
||||
# eigenem Token starten, siehe docs/betrieb.md.
|
||||
|
||||
name: vogelalbum-detector
|
||||
|
||||
services:
|
||||
detector:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.detector
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
VOGELALBUM_SOURCE: ${VOGELALBUM_SOURCE:?Stream-URL der Kamera, siehe .env.beispiel}
|
||||
# Wohin gemeldet wird. Anders als bei docker-compose.heim.yml steht die
|
||||
# Sammlung hier NICHT im selben Compose-Netz, also die volle Adresse —
|
||||
# mit https://, wenn sie oeffentlich steht.
|
||||
VOGELALBUM_API: ${VOGELALBUM_API:?Adresse der Sammlung, z.B. https://vogelalbum.example.org}
|
||||
# Der Token DIESER Kamera, angelegt mit 'manage.py camera add'. Auf
|
||||
# einer oeffentlichen Instanz hat jede Kamera ihren eigenen; der
|
||||
# gemeinsame VOGELALBUM_INGEST_TOKEN bleibt dort leer.
|
||||
VOGELALBUM_TOKEN: ${VOGELALBUM_TOKEN:?Token dieser Kamera, siehe manage.py camera add}
|
||||
VOGELALBUM_GATE: ${VOGELALBUM_GATE:-detector}
|
||||
VOGELALBUM_SAVE_TO: /daten/rohdaten
|
||||
VOGELALBUM_PROTOKOLL: /daten/protokoll.csv
|
||||
VOGELALBUM_NACHTSICHT: ${VOGELALBUM_NACHTSICHT:-}
|
||||
VOGELALBUM_REGION: ${VOGELALBUM_REGION:-de}
|
||||
# Schwellwerte und Artenliste holt sich der Detector von der Sammlung.
|
||||
# Faellt sie aus, laeuft er mit dem letzten Stand weiter und warnt nur.
|
||||
VOGELALBUM_KONFIG_ALLE: ${VOGELALBUM_KONFIG_ALLE:-300}
|
||||
VOGELALBUM_LIVE_PORT: ${VOGELALBUM_LIVE_PORT:-0}
|
||||
command:
|
||||
- watch
|
||||
- --classify-every=2
|
||||
- --cooldown=5
|
||||
- --min-bird-frames=1
|
||||
- --verbose
|
||||
# Gueltige Portnummer als Vorgabe, nicht 0 — Compose weist "0:0" ab, siehe
|
||||
# die ausfuehrliche Begruendung in docker-compose.heim.yml. Ob etwas
|
||||
# lauscht, entscheidet VOGELALBUM_LIVE_PORT oben.
|
||||
ports:
|
||||
- "${VOGELALBUM_LIVE_PORT:-8131}:${VOGELALBUM_LIVE_PORT:-8131}"
|
||||
volumes:
|
||||
# Rohbilder und Protokoll. Die Rohbilder sind spaeter das Material fuer
|
||||
# ein Nachtraining — deshalb ein Volume und kein tmpfs.
|
||||
- vogelalbum-rohdaten:/daten
|
||||
|
||||
volumes:
|
||||
vogelalbum-rohdaten:
|
||||
Reference in new issue
Block a user