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

  1. Add camera → pick the zone and the kind → fill the host, URL or device.
  2. Test source. You see the frame before anything is saved.
  3. 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.
  4. 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

  1. Plug it in and confirm the host sees it: ls /dev/video*. A webcam is /dev/video0 (and video1 for metadata). /dev/video10 and up are the Pi's own codec nodes, never a camera.
  2. In /opt/dsc-hub/.env set DSC_CAMERA_DEVICE=/dev/video0 and recreate the brain container (docker compose up -d brain). The default maps /dev/null, so a kit without a webcam still starts.
  3. Add camera → USB webcam → pick the node whose Test returns a frame.

Recipe: an old Pi and an old webcam as a vision node

  1. Install motionEye on the spare Pi and add the webcam as camera 1.
  2. 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.
  3. 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.
  4. 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