BirdCam is an ESP32 camera firmware that provides:
- 📡 MJPEG live stream
- 📸 Snapshots + snapshot archive
- 🏠 Native Home Assistant integration via MQTT Discovery
- ⚙️ Web settings page (camera + storage + diagnostics)
Security note: this repo ships with
secrets.h.example. Copy it tosecrets.hlocally and never commit your real credentials.
- Live MJPEG streaming endpoint (
/mjpeg) - Live snapshot endpoint (
/snapshot) - Snapshot archive + viewer (
/archive,/view) - Home Assistant MQTT discovery (diagnostics + camera controls)
- Camera controls exposed to HA (brightness/contrast/saturation/sharpness, gain/exposure, manual gain/exposure)
- URLs exposed to HA (stream URL + snapshot URL + last snapshot URLs)
Typical targets:
- ESP32-CAM (AI Thinker or similar)
- A supported camera sensor (OV2640 is common)
- Optional battery + external power (USB)
- Install ESP32 board support in Arduino IDE.
- Copy
secrets.h.example→secrets.h - Edit
secrets.hwith your Wi‑Fi + MQTT broker details. - Open
BirdCam.ino, select your ESP32 board, and upload.
http://<device-ip>/mjpeg— MJPEG streamhttp://<device-ip>/snapshot— live JPEG snapshothttp://<device-ip>/archive— snapshot archivehttp://<device-ip>/view— archive viewer / UI
BirdCam publishes MQTT Discovery config so the device and entities appear automatically in Home Assistant.
Higher resolutions can fail if JPEG frames get too large for the available buffers. If you see missing stream/snapshot at VGA+:
- Increase
jpeg_quality(higher number = more compression, smaller frames) - Use PSRAM for frame buffers when available
- Keep
fb_countreasonable (2 is often a sweet spot) - Prefer grab-latest mode for streaming
MIT — see LICENSE.