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-14 18:55:23 +00:00
commit cc9e0786c2
189 files changed
+29792

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
blank_issues_enabled: true
contact_links:
- name: 🔒 Sicherheitslücke
url: https://gitea.gaertner.onl/christian/vogelalbum/src/branch/main/SECURITY.md
about: Bitte nicht als Issue — Meldeweg steht in SECURITY.md
- name: 📖 Dokumentation
url: https://gitea.gaertner.onl/christian/vogelalbum/src/branch/main/docs
about: Installation, Kameraaufbau, Einstellungen, Betrieb
- name: 🐦 Die laufende Instanz
url: https://vogelalbum.gaertner.onl
about: So sieht es aus, wenn es läuft
+48
View File
@@ -0,0 +1,48 @@
---
name: "🐦 Art falsch bestimmt"
about: "Der Vogel war ein anderer, als Vogelalbum sagt"
title: ""
labels:
- erkennung
---
<!--
Das ist die nützlichste Rückmeldung, die dieses Projekt bekommen kann: Das
Modell ist nordamerikanisch trainiert, und welche heimischen Arten es
verwechselt, lässt sich nur im Garten herausfinden.
-->
## Welche Art war es wirklich
## Was Vogelalbum gesagt hat
<!-- Name und Prozentzahl, beides steht an der Sichtung -->
## Das Bild
<!--
Wenn möglich das Sichtungsfoto anhängen — ohne Bild lässt sich kaum etwas
machen. Es liegt unter `media/sightings/`, der Ausschnitt unter `media/crops/`.
Beide dürfen gern mit.
-->
## Wie oft
- [ ] einmalig
- [ ] kommt immer wieder bei dieser Art
## Deine Einstellungen
| | |
|---|---|
| `VOGELALBUM_REGION` | Vorgabe ist `de` |
| `min_bird_score` | Vorgabe ist 0.05 |
| `detect_threshold` | Vorgabe ist 0.4 |
<!--
Bekannt und nicht meldenswert: Acht heimische Arten kennt das Modell gar nicht
und ordnet sie Verwandten zu — Sumpf-, Weiden- und Haubenmeise,
Gartenbaumläufer, Kleinspecht, Bluthänfling, Kernbeißer, Waldkauz. Siehe
docs/erkennung.md. Eine Meldung lohnt sich trotzdem, wenn die Verwechslung
eine andere ist als die dort genannte.
-->
+60
View File
@@ -0,0 +1,60 @@
---
name: "🐞 Fehler melden"
about: "Etwas tut nicht, was es soll"
title: ""
labels:
- fehler
---
<!--
Danke fürs Melden. Je konkreter, desto eher ist es behoben — Zahlen und
Logzeilen helfen mehr als Adjektive.
-->
## Was passiert
<!-- Was hast du gesehen? -->
## Was du erwartet hättest
## Wie man es auslöst
1.
2.
3.
## Wo es passiert
- [ ] Web-App (die Sammlung)
- [ ] Detector (die Erkennung)
- [ ] Kameraseite Raspberry Pi (`pi/`)
- [ ] Kameraseite ESP32 (`esp32cam/`)
- [ ] Anbindung an Home Assistant
## Dein Aufbau
| | |
|---|---|
| Installiert per | Docker / ohne Docker |
| Stand | Ausgabe von `git rev-parse --short HEAD` |
| Betriebssystem | |
| Kamera | z.B. Pi Zero W + OV5647, ESP32-S3 + OV2640 |
## Ausgaben
<!--
Hilfreich, je nachdem wo es klemmt:
docker compose -f docker-compose.heim.yml logs --tail=50 detector
curl -s http://<kamera>:8080/status # Raspberry Pi
curl -s http://<kamera>:8081/status # ESP32 — eigener Port, siehe esp32cam/README.md
⚠️ Bitte vorher Token und Passwörter herausnehmen.
⚠️ Und: NICHT mit `curl` am laufenden Stream (`/stream`) messen. Ein zweiter
Zuschauer sättigt die Funkstrecke und erzeugt genau die Timeouts, die du
vielleicht gerade suchst. `/status` fasst den Stream nicht an.
-->
```
```
+31
View File
@@ -0,0 +1,31 @@
---
name: "💡 Idee oder Wunsch"
about: "Etwas, das Vogelalbum können sollte"
title: ""
labels:
- idee
---
## Worum geht es
## Was du damit vorhast
<!--
Der wichtigste Teil. Eine Funktion ist leichter zu bauen, wenn klar ist, wofür
sie da ist — oft gibt es für denselben Zweck einen einfacheren Weg.
-->
## Wie du es heute löst
<!-- Falls es einen Umweg gibt: welchen? -->
## Würdest du daran mitarbeiten?
- [ ] Ja, ich würde es selbst bauen
- [ ] Ja, beim Testen
- [ ] Nein, ich melde es nur
<!--
Zur Einordnung, bevor du tippst: Ein Artenkatalog für eine andere Region ist
ausdrücklich erwünscht und reine Datenarbeit — siehe docs/erkennung.md.
-->