DSC-BRAIN USER GUIDE · SETUP
Cameras — adding a camera
Source kinds (USB, snapshot, MJPEG, RTSP, motionEye), test-before-save, framing, webcam controls and the old-Pi recipe.
● verified for 9.0.0 · firmware train 8.2.0.0
● last verified 2026-09-17 · mirrored 2026-09-15
A camera is a brain-owned device bound to a zone. The brain captures one frame per interval (default every 10 minutes, lights-on only), stores frames on the Pi, shows the latest frame on the zone card and assembles timelapses. Nothing streams continuously and nothing leaves the LAN. Cameras are configured in one place: Settings › Devices › Cameras (#/settings/devices#cameras).
Source kinds
| Kind | What the brain does | Needs |
|---|---|---|
| USB webcam on the brain | Reads /dev/videoN with ffmpeg |
The webcam passed through to the container (see below) |
| HTTP snapshot URL | GETs a URL that returns one JPEG | Nothing extra |
| MJPEG stream URL | Opens the stream, takes the first frame, hangs up | Nothing extra |
| RTSP stream | Grabs one frame over TCP | ffmpeg (in the image) |
| motionEye satellite Pi | Reads camera N's stream port (8080 + N) as MJPEG | motionEye with streaming on |
Credentials are stored by the brain and only ever reported as set. They are not part of a setup-profile export.
Adding one
- Add camera → pick the zone and the kind → fill the host, URL or device.
- Test source. You see the frame before anything is saved.
- Set the interval, lights-on only, and retention (days and a GB cap per camera). Daily photo (on by default) puts the day's first lit frame after midday into the zone's tent journal.
- Add camera (the button reads Save when you edit an existing camera).
Framing
Every camera has a Framing block: Mirror, Flip vertical, Rotate a quarter turn, and a Digital zoom of 1–8× with two centre sliders for the crop window. The transform is baked into the stored frame, so the timelapse and any plant regions always agree with what you see. On an HTTP source, framing needs ffmpeg and the capture fails rather than storing half a run untransformed.
USB webcam controls
A USB webcam exposes its own controls in the drawer: auto or manual exposure (with time and gain), auto focus and focus position, white balance, brightness, contrast, saturation, sharpness, backlight compensation, anti-flicker, and the camera's own pan, tilt and zoom. Values are re-applied before every capture, because a replug resets a UVC camera. Manual values whose auto gate is on are disabled with the reason. Warm-up frames discards the first N frames so auto exposure and focus can settle.
Recipe: a webcam on the brain Pi
- Plug it in and confirm the host sees it:
ls /dev/video*. A webcam is/dev/video0(andvideo1for metadata)./dev/video10and up are the Pi's own codec nodes, never a camera. - In
/opt/dsc-hub/.envsetDSC_CAMERA_DEVICE=/dev/video0and recreate the brain container (docker compose up -d brain). The default maps/dev/null, so a kit without a webcam still starts. - Add camera → USB webcam → pick the node whose Test returns a frame.
Recipe: an old Pi and an old webcam as a vision node
- Install motionEye on the spare Pi and add the webcam as camera 1.
- In its Video Streaming settings turn streaming on, keep port 8081 for camera 1, set Basic auth (or none on a trusted LAN), 1–2 fps, modest resolution.
- Mount it so the frame covers the tent and will not move. Plant regions are pixel regions in that frame; if the camera is knocked or re-aimed, the brain notices, holds the region numbers and starts a new timelapse clip.
- Add camera → motionEye satellite → host, camera number, credentials → Test → Save.
If you prefer snapshots, use motionEye's snapshot URL with the HTTP snapshot kind. Plain motion (no motionEye) works with the MJPEG kind on its stream port.
DSC-Brain user guide · Cameras — adding a camera · this page is edited on the site; the Notion original was retired after the mirror
