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.
783 B
783 B
| 1 | # Zwei App-Bereiche, damit sich das Geraet ueber WLAN aktualisieren kann. |
|---|---|
| 2 | # |
| 3 | # 🔑 Grundsatz in diesem Projekt: JEDES Geraet muss OTA koennen. Diese Tabelle ist die |
| 4 | # Voraussetzung dafuer, und sie gehoert von Anfang an so angelegt -- sie |
| 5 | # nachtraeglich zu aendern kostet genau das, was OTA vermeiden soll: einen |
| 6 | # Gang zum Geraet mit dem Kabel. (Am 23.09.2026 genau deshalb nachgeholt.) |
| 7 | # |
| 8 | # Bei 16 MB Flash ist das muehelos: zwei mal 4 MB App, der Rest bleibt frei. |
| 9 | # Das Abbild liegt bei knapp 1 MB, also ist reichlich Luft. |
| 10 | # |
| 11 | # Name, Type, SubType, Offset, Size |
| 12 | nvs, data, nvs, 0x9000, 0x6000 |
| 13 | otadata, data, ota, 0xf000, 0x2000 |
| 14 | phy_init, data, phy, 0x11000, 0x1000 |
| 15 | ota_0, app, ota_0, 0x20000, 4M |
| 16 | ota_1, app, ota_1, , 4M |