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

+25
View File
@@ -0,0 +1,25 @@
# Brücke von Vogelalbum nach Home Assistant (MQTT-Discovery).
#
# ⚠ Läuft dort, wo die WEB-ANWENDUNG steht — sie holt sich den Zustand
# über deren Schnittstelle. Zieht die Weboberfläche um, zieht diese
# Einheit mit.
#
# Die Zugangsdaten stehen in ~/.config/vogelalbum-ha.env, nicht hier und
# nicht im Repo.
[Unit]
Description=Vogelalbum: Bruecke nach Home Assistant
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/vogelalbum-web
EnvironmentFile=%h/.config/vogelalbum-ha.env
ExecStart=/opt/vogelalbum-web/venv/bin/python homeassistant/bruecke.py
# Stirbt sie, sagt der letzte Wille Home Assistant Bescheid -- und systemd
# holt sie zurueck. Beides zusammen heisst: kein stummer Ausfall.
Restart=always
RestartSec=15
[Install]
WantedBy=default.target