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:
christian committed 2026-10-15 14:30:02 +00:00
commit c11fe9ab04
189 files changed
+29806

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
# Änderungen
Format in Anlehnung an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
Versionen nach [SemVer](https://semver.org/lang/de/).
## 1.0.0 — 2026-10-18
Erste Veröffentlichung.
### Dabei
- **Arterkennung** aus einem Kamerastrom: ein Netz findet den Vogel im Bild,
ein zweites bestimmt die Art. Katalog mit 148 heimischen Arten, auf
Deutschland eingeschränkt und neu normiert — ohne diese Einschränkung wird
aus einer Kohlmeise eine nordamerikanische Schwesterart.
- **Sammlung** im Stil eines Klebebildchen-Albums: nummerierte Seiten,
gefundene Arten in Farbe, fehlende als Schatten. Erstfang, Punkte, Stufen
und 15 Abzeichen.
- **Läuft auf eigener Hardware.** Kein Cloud-Dienst, kein Konto, keine
Telemetrie. Die Bilder verlassen das eigene Netz nicht.
- **Zwei Teile, getrennt deploybar:** 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.
- **Kameras:** alles, was MJPEG oder Einzelbilder über HTTP liefert. Fertige
Firmware für Raspberry Pi (`pi/`) und ESP32-S3 (`esp32cam/`) liegt bei,
beide mit `/status` für die Diagnose, ohne den Bildstrom anzufassen.
- **Fotos von unterwegs:** Bilder lassen sich hochladen und werden von
derselben Erkennung bestimmt wie die der Kamera.
- **Home Assistant** über MQTT mit Autodiscovery.
- **Zweisprachig**, Deutsch und Englisch. Quelltext und Kommentare sind
deutsch.
- **Einstellungen je Kamera** aus der Oberfläche — Schwellwerte, Lebensräume,
Artenliste. Der Erkennungs-Dienst holt sie sich im Betrieb ab und übernimmt
sie, ohne das Modell neu zu laden.
- **Fehlalarme**: ein Mindestwert je Besuch verwirft Spiegelungen und
Bewegungen ohne Vogel, bevor daraus eine Sichtung wird.
### Sicherheit
- Je Kamera ein eigener Token (als SHA-256 gespeichert), damit ein
kompromittierter Standort einzeln stillgelegt werden kann.
- Getrennte Token für Schreiben und Lesen.
- Hochgeladene Bilder werden **neu geschrieben statt nur geprüft**: Nur die
Pixel überleben, Metadaten fallen dabei weg. Das betrifft vor allem den Ort
in EXIF-Daten von Handyfotos.
- Im Betrieb: Cookies nur über HTTPS, HSTS, `nosniff` auf den Medien.
### Bekannte Grenzen
- Acht heimische Arten kennt das Modell nicht und ordnet sie Verwandten zu:
Sumpf-, Weiden- und Haubenmeise, Gartenbaumläufer, Kleinspecht,
Bluthänfling, Kernbeißer, Waldkauz.
- Der Vogel braucht **5 bis 8 % der Bildfläche**, sonst findet ihn die
Erkennung nicht. Das ist eine Frage des Bildwinkels, nicht der Auflösung —
näher montieren hilft, mehr Megapixel nicht.
- Der unterste Bildrand ist eine tote Zone. Die Landefläche gehört in die
untere Bildmitte, nicht an die Kante.