BirdLense Hub — Typical scenarios
Scenario 1: Minimal setup (video only)
Goal: Bird detection from one camera, no MQTT or notifications.
- Install Go2RTC (standalone or inside Frigate).
- Add the camera in Go2RTC.
- Start BirdLense:
make pullinapp/. - Settings → Video: Go2RTC URL (
http://YOUR_GO2RTC_HOST:1984). - Settings → Cameras: add stream name.
- Trigger: OpenCV motion (default).
Result: Recordings on motion, YOLO classification (EU: birds-525 + iNaturalist, ~491 species).
Scenario 2: European birds (Frigate + Bird Classification)
Goal: Accurate European species (jay, tit, etc.).
- Frigate with Bird Classification enabled (
classification.bird.enabled: true). - MQTT: Frigate publishes to
frigate/eventswithsub_label. - BirdLense: Settings → MQTT — broker, Frigate topic. Motion source: Frigate (record on Frigate events).
- Merge: YOLO + Frigate automatically. One result per species, max confidence.
Result: Eurasian Jay instead of Mourning Dove when Frigate classified the jay.
Scenario 3: Audio (BirdNET-Pi / BirdNET-Go)
Goal: Voice-based recognition alongside video.
- BirdNET-Pi or BirdNET-Go publishes to MQTT topic
birdnet. - BirdLense: Settings → MQTT — broker, BirdNET topic.
- Merge: YOLO + Frigate + BirdNET by time (
merge_window). - Spectrogram is generated only when a BirdNET recognition message arrives in the recording window. Automatic in that case. Audio tab in the player shows the spectrogram.
Result: Audio-derived species add to or boost video detections.
Scenario 4: Telegram notifications
Goal: Push when a bird is detected.
- Create a bot (@BotFather →
/newbot). - Get
chat_id(e.g. via @RawDataBot). - Settings → Notifications: token,
chat_id,base_url(Hub URL for links). - Enable
link_preview_largefor link previews (Bot API 9.4).
Result: Message like “Eurasian Jay Detected” with “Open Live” and page preview.
Scenario 5: Feeder with relay (Tasmota / ESPHome)
Goal: Dispense food on detection.
- Relay on Tasmota or ESPHome.
- Settings → Feeder: source (mqtt/esphome), topic or URL, duration.
- On detection BirdLense publishes to MQTT or calls ESPHome API.
Result: Feed dispenses when a bird appears.
Scenario 6: Server deployment
See INSTALL.md — “Server deployment (make deploy)”. x86_64 / amd64 (Intel or AMD) only; ARM / aarch64 not supported or planned.
Scenario 7: Export to eBird
Goal: Upload species list to eBird.org for citizen science.
- Timeline → pick date and time of day.
- Export menu (download icon) → “Export for eBird”.
- Settings → Advanced: country (US, RU, …), region, location name.
- Import the downloaded CSV into eBird.org (Checklists → Import).
Result: Checklist in eBird Record format.
Scenario 8: Export to iNaturalist
Goal: Send a detection frame to iNaturalist.
- Timeline or video page → Share (Share to iNaturalist) on a detection.
- Frame downloads; inaturalist.org/observations/upload opens.
- Drop the file into the form; confirm or edit species.
Result: Observation on iNaturalist.
Scenario 9: Manual review of “Unknowns”
Goal: Fix low-confidence detections.
- Settings → Advanced: “Unknowns” threshold (default 0.5).
- “Unknowns” page — list below threshold.
- Pick correct species, Apply (settings password required).
- Or open the video for visual check.
Result: Species corrected; stats updated.
Scenario 10: PDF report and Grafana
Goal: Monthly summary and dashboards.
- PDF: Overview → “PDF report” → pick month.
- Grafana: Prometheus datasource, scrape
http://birdlense:8085/api/metrics(orhttp://YOUR_HOST:8085/api/metrics). Metrics: CPU, memory, disk, GPU, detections, species, videos.
Result: Report and activity charts.
Scenario 11: Research and model fine-tuning
See TRAINING.md, DATASETS.md. Scripts: scripts/datasets/, merge → Colab.
Troubleshooting
Frigate saw a bird but BirdLense did not record: see TROUBLESHOOTING.md — missed events, checklist.
See also: OVERVIEW · INSTALL · CONFIGURATION · GLOSSARY · ARCHITECTURE.