Initial commit: Vigilar DIY home security system
Phase 1 (Foundation): project skeleton, TOML config + Pydantic validation, MQTT bus wrapper, SQLite schema (9 tables), Click CLI, process supervisor. Phase 2 (Camera): RTSP capture via OpenCV, MOG2 motion detection with configurable sensitivity/zones, adaptive FPS recording (2fps idle/30fps motion) via FFmpeg subprocess, HLS live streaming, pre-motion ring buffer. Phase 3 (Web UI): Flask + Bootstrap 5 dark theme, 6 blueprints, Jinja2 templates (dashboard, kiosk 2x2 grid, events, sensors, recordings, settings), PWA with service worker + Web Push, full admin settings UI with config persistence. Remote Access: WireGuard tunnel configs, nginx reverse proxy with HLS caching + rate limiting, bandwidth-optimized remote HLS stream (426x240 @ 500kbps), DO droplet setup script, certbot TLS. 29 tests passing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
711
docs/camera-hardware-guide.md
Normal file
711
docs/camera-hardware-guide.md
Normal file
@@ -0,0 +1,711 @@
|
||||
# Vigilar Camera Hardware Guide
|
||||
|
||||
Practical guide for selecting, purchasing, and installing cameras for the Vigilar
|
||||
DIY home security system. All recommendations are for PoE IP cameras with native
|
||||
RTSP support -- no cloud dependency, no subscription fees.
|
||||
|
||||
Last updated: April 2026
|
||||
|
||||
---
|
||||
|
||||
## 1. Camera Recommendations
|
||||
|
||||
### Selection Criteria
|
||||
|
||||
Every camera below meets these requirements:
|
||||
- Native RTSP stream output (works directly with OpenCV + FFmpeg)
|
||||
- PoE (IEEE 802.3af) -- single cable for power and data
|
||||
- ONVIF Profile S compliance (interoperability, auto-discovery)
|
||||
- H.265 or H.264 encoding
|
||||
- No cloud account required for local operation
|
||||
- MicroSD slot for on-camera fallback recording
|
||||
|
||||
### Recommended Models
|
||||
|
||||
#### Reolink RLC-810A -- Best Overall Outdoor ($90)
|
||||
|
||||
| Spec | Value |
|
||||
|------|-------|
|
||||
| Resolution | 3840x2160 (8MP/4K) @ 25fps |
|
||||
| Lens | 2.8mm fixed, 101deg horizontal FOV |
|
||||
| Night vision | 100ft / 30m IR (18x 850nm LEDs) |
|
||||
| Weatherproofing | IP67 |
|
||||
| AI detection | Person / Vehicle / Pet |
|
||||
| Encoding | H.265 / H.264 |
|
||||
| Power draw | ~12W max (PoE 802.3af) |
|
||||
| ONVIF | Yes (Profile S) |
|
||||
| Audio | Built-in microphone |
|
||||
| Storage | MicroSD up to 512GB |
|
||||
|
||||
**Why this camera:** 4K resolution at a sub-$100 price point. The 8MP sensor
|
||||
provides enough detail for facial identification at 15-20ft and license plate
|
||||
reading at 25-30ft. Person/vehicle AI detection reduces false alerts from animals,
|
||||
swaying branches, etc. Widely used with Frigate, ZoneMinder, Blue Iris, and
|
||||
Home Assistant -- enormous community support for troubleshooting.
|
||||
|
||||
**RTSP URLs:**
|
||||
```
|
||||
Main stream (4K): rtsp://admin:<password>@<ip>/Preview_01_main
|
||||
Sub stream (D1): rtsp://admin:<password>@<ip>/Preview_01_sub
|
||||
```
|
||||
|
||||
Default port is 554. The sub stream is typically 640x360 and ideal for
|
||||
Vigilar's motion detection pipeline (`resolution_motion` setting).
|
||||
|
||||
**Vigilar config:**
|
||||
```toml
|
||||
[[cameras]]
|
||||
id = "front_door"
|
||||
display_name = "Front Door"
|
||||
rtsp_url = "rtsp://admin:yourpassword@192.168.1.101:554/Preview_01_main"
|
||||
resolution_capture = [1920, 1080] # downscale from 4K to save storage
|
||||
resolution_motion = [640, 360]
|
||||
motion_fps = 25
|
||||
idle_fps = 2
|
||||
```
|
||||
|
||||
Note: You can capture at the native 4K (3840x2160) if storage allows, but
|
||||
1080p is the sweet spot for Vigilar's HLS streaming and storage constraints.
|
||||
|
||||
---
|
||||
|
||||
#### Reolink RLC-520A -- Best Budget Dome Outdoor ($55)
|
||||
|
||||
| Spec | Value |
|
||||
|------|-------|
|
||||
| Resolution | 2560x1920 (5MP) @ 25fps |
|
||||
| Lens | 4.0mm fixed, 80deg horizontal FOV |
|
||||
| Night vision | 100ft / 30m IR (18x 850nm LEDs) |
|
||||
| Weatherproofing | IP67 |
|
||||
| AI detection | Person / Vehicle |
|
||||
| Encoding | H.265 / H.264 |
|
||||
| Power draw | ~10W max (PoE 802.3af) |
|
||||
| ONVIF | Yes (Profile S) |
|
||||
| Audio | Built-in microphone |
|
||||
| Storage | MicroSD up to 512GB |
|
||||
|
||||
**Why this camera:** The dome form factor is more discreet and vandal-resistant
|
||||
than bullet cameras. At $55, it is the cheapest option that still has confirmed
|
||||
RTSP/ONVIF support and AI-based person/vehicle detection. The 5MP resolution is
|
||||
more than sufficient for most positions. Slightly narrower FOV than the 810A
|
||||
(80deg vs 101deg), which makes it better suited for focused areas like a side
|
||||
gate or driveway where you want more zoom.
|
||||
|
||||
**RTSP URLs:** Same format as all Reolink PoE cameras:
|
||||
```
|
||||
Main stream (5MP): rtsp://admin:<password>@<ip>/Preview_01_main
|
||||
Sub stream: rtsp://admin:<password>@<ip>/Preview_01_sub
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Amcrest IP5M-T1179EW-AI-V3 -- Best Alternative Outdoor ($50-60)
|
||||
|
||||
| Spec | Value |
|
||||
|------|-------|
|
||||
| Resolution | 2592x1944 (5MP) @ 20fps |
|
||||
| Lens | 2.8mm fixed, 132deg horizontal FOV |
|
||||
| Night vision | 98ft / 30m IR |
|
||||
| Weatherproofing | IP67 |
|
||||
| AI detection | Person / Vehicle |
|
||||
| Encoding | H.265 / H.264 |
|
||||
| Power draw | ~9W max (PoE 802.3af) |
|
||||
| ONVIF | Yes (Profile S) |
|
||||
| Audio | Built-in microphone |
|
||||
| Storage | MicroSD up to 256GB |
|
||||
|
||||
**Why this camera:** Widest FOV of any camera in this price range at 132 degrees.
|
||||
Officially recommended by the Frigate NVR project. Amcrest has more granular
|
||||
RTSP configuration options than Reolink via their web interface. Confirmed
|
||||
working with Home Assistant ONVIF integration, Frigate, and any RTSP consumer.
|
||||
|
||||
**RTSP URLs:**
|
||||
```
|
||||
Main stream: rtsp://admin:<password>@<ip>:554/cam/realmonitor?channel=1&subtype=0
|
||||
Sub stream: rtsp://admin:<password>@<ip>:554/cam/realmonitor?channel=1&subtype=1
|
||||
```
|
||||
|
||||
Alternative simplified URL (also works):
|
||||
```
|
||||
rtsp://admin:<password>@<ip>:554/live
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Reolink E1 Outdoor Pro (or RLC-520A indoors) -- Best Indoor ($55-80)
|
||||
|
||||
For indoor use, you have two good options:
|
||||
|
||||
**Option A: Reolink RLC-520A used indoors ($55)**
|
||||
The same dome camera listed above works perfectly indoors. Mount it in a corner
|
||||
near the ceiling. The dome form factor looks clean in a living space. The 100ft
|
||||
IR range is overkill for a room but means the IR LEDs run at low power, reducing
|
||||
that red-glow annoyance.
|
||||
|
||||
**Option B: Reolink E1 Outdoor Pro (~$80)**
|
||||
If you want pan-tilt for a large open area (living room, basement, warehouse):
|
||||
- 4MP with 355deg pan / 50deg tilt
|
||||
- Auto-tracking follows detected people
|
||||
- Works as fixed camera when tracking is disabled
|
||||
- Same RTSP URL format as other Reolink cameras
|
||||
|
||||
For most Vigilar setups, a fixed dome (Option A) is simpler and more reliable --
|
||||
no moving parts, no auto-tracking logic to debug.
|
||||
|
||||
---
|
||||
|
||||
### Models to AVOID
|
||||
|
||||
| Model | Reason |
|
||||
|-------|--------|
|
||||
| Reolink Argus / Go series | Battery-powered, no RTSP/ONVIF support |
|
||||
| Any Reolink E1 (non-Pro) | Requires Home Hub for RTSP; not standalone |
|
||||
| Wyze Cam v3/v4 | No native RTSP (requires firmware hack, breaks easily) |
|
||||
| Ring / Nest / Arlo | Cloud-locked, no RTSP access |
|
||||
| TP-Link Tapo C200/C310 | RTSP added via firmware but flaky; ONVIF missing |
|
||||
| Generic Aliexpress "4K" | Often fake resolution, unstable RTSP, no firmware updates |
|
||||
|
||||
---
|
||||
|
||||
## 2. PoE Network Setup
|
||||
|
||||
### PoE Switch Selection
|
||||
|
||||
For 4 cameras you need a switch with at least 5 PoE ports (4 cameras + headroom).
|
||||
An 8-port switch is the right buy -- room to grow.
|
||||
|
||||
#### Recommended: NETGEAR GS308PP ($70)
|
||||
|
||||
| Spec | Value |
|
||||
|------|-------|
|
||||
| Ports | 8x Gigabit (all PoE+) |
|
||||
| PoE budget | 83W (FlexPoE upgradeable to 123W) |
|
||||
| Management | Unmanaged (plug and play) |
|
||||
| Noise | Fanless (silent) |
|
||||
| Warranty | Lifetime with next-business-day replacement |
|
||||
|
||||
**Why:** 83W is more than enough for 4 cameras drawing ~10-12W each (total ~48W
|
||||
with headroom). Fanless means zero noise in a utility closet. Unmanaged means
|
||||
zero configuration -- plug in cables and it works.
|
||||
|
||||
**Power budget math:**
|
||||
```
|
||||
4 cameras x 12W each = 48W
|
||||
Switch headroom: 83W - 48W = 35W remaining
|
||||
(enough for 2-3 more cameras later)
|
||||
```
|
||||
|
||||
#### Budget alternative: TP-Link TL-SG1005P ($35)
|
||||
|
||||
5 ports (4 PoE + 1 uplink). 65W budget. Sufficient for exactly 4 cameras with
|
||||
no room to grow. Only buy this if you are certain you will never add a 5th camera.
|
||||
|
||||
#### If you want management: TP-Link TL-SG108PE ($60)
|
||||
|
||||
8 ports (4 PoE), 64W budget, basic web management with VLAN support. Useful if
|
||||
you want to isolate cameras on their own VLAN for security (recommended but not
|
||||
required for Vigilar).
|
||||
|
||||
### Cable Types
|
||||
|
||||
| Scenario | Cable Type | Why |
|
||||
|----------|-----------|-----|
|
||||
| Indoor runs (attic, walls, basement) | Cat6 UTP CMR-rated | Standard indoor riser-rated cable |
|
||||
| Outdoor exposed runs | Cat6 UTP outdoor-rated (UV/water resistant) | PE jacket resists sun and moisture |
|
||||
| Underground burial | Cat6 direct-burial rated | Gel-filled, no conduit needed |
|
||||
| Short patch runs (<10ft) | Pre-made Cat6 patch cables | Not worth crimping for short runs |
|
||||
|
||||
**Maximum cable run:** 328 feet (100 meters) per the Ethernet spec. Beyond that
|
||||
you need a PoE extender or switch relay.
|
||||
|
||||
### Cable Routing Tips
|
||||
|
||||
**Through exterior walls:**
|
||||
1. Drill from inside out at a slight downward angle (5-10 degrees) so water
|
||||
runs away from the interior
|
||||
2. Use a 3/4" drill bit -- large enough for an RJ45 connector to pass through
|
||||
3. After running cable, fill the hole with silicone caulk or use a weatherproof
|
||||
cable gland/grommet
|
||||
4. Consider a weatherproof junction box on the exterior to make the connection
|
||||
point maintainable
|
||||
|
||||
**Through attic:**
|
||||
1. The cleanest install routes cable up into the attic, across the attic, and
|
||||
down through the soffit to the camera
|
||||
2. Use a flex drill bit (also called an installer bit, 3/4" x 54") to drill
|
||||
through top plates from inside the attic
|
||||
3. Attach cables to joists/rafters with cable staples (not tight -- leave slack)
|
||||
4. Keep ethernet cables 12+ inches away from electrical wiring to avoid
|
||||
interference
|
||||
|
||||
**Through basement/crawlspace:**
|
||||
1. Route along floor joists using J-hooks or cable staples
|
||||
2. Drill up through the sole plate where you need to reach an exterior wall
|
||||
3. Use fire-stop caulk when penetrating between floors (code requirement)
|
||||
|
||||
**Tools needed for cable routing:**
|
||||
- Stud finder
|
||||
- 3/4" installer flex bit (54" long) for drilling through top/sole plates
|
||||
- Fish tape or glow rods for pulling cable through walls
|
||||
- Drywall saw (for cutting low-voltage wall plate holes)
|
||||
- Cable staple gun or J-hooks
|
||||
- Headlamp (for attic work)
|
||||
|
||||
---
|
||||
|
||||
## 3. Mounting Guide
|
||||
|
||||
### Outdoor Mounting
|
||||
|
||||
#### Soffit Mount (Recommended for most positions)
|
||||
|
||||
This is the cleanest outdoor install. The camera mounts under the roof overhang,
|
||||
protected from direct rain and sun.
|
||||
|
||||
1. Hold the camera mounting plate against the soffit and mark screw holes
|
||||
2. If soffit is vinyl: drill through vinyl into the wood backing behind it.
|
||||
Use toggle bolts if there is no solid backing
|
||||
3. If soffit is aluminum: use self-tapping sheet metal screws into the wood
|
||||
behind
|
||||
4. Route cable up through the soffit (drill a 3/4" hole) into the attic space
|
||||
5. Apply silicone sealant around the cable entry point
|
||||
6. Attach camera to mounting plate
|
||||
|
||||
**Advantages:** Weather protection from the overhang, clean hidden cable routing,
|
||||
difficult for intruders to reach/tamper with.
|
||||
|
||||
#### Wall Mount
|
||||
|
||||
1. Use a junction box mounted to the exterior wall with Tapcon concrete screws
|
||||
(for brick/stucco) or lag screws (for wood siding)
|
||||
2. Route cable through the wall behind the junction box
|
||||
3. Make the wall penetration inside the junction box so the box covers and
|
||||
weatherproofs it
|
||||
4. Seal all entry points with silicone
|
||||
5. Mount camera to junction box
|
||||
|
||||
#### Fascia/Eave Mount
|
||||
|
||||
Similar to soffit but on the vertical face of the eave. Use an angled mounting
|
||||
bracket (15-30 degrees) to tilt the camera downward. This is ideal for getting
|
||||
a wider view of a yard or driveway.
|
||||
|
||||
### Mounting Heights and Angles
|
||||
|
||||
| Position | Recommended height | Tilt angle | Why |
|
||||
|----------|-------------------|------------|-----|
|
||||
| Front door | 8-10 ft | 15-20deg down | Captures faces of people approaching |
|
||||
| Driveway/yard | 10-12 ft | 20-30deg down | Wide area coverage, hard to tamper |
|
||||
| Side gate | 7-9 ft | 10-15deg down | Narrow passage, closer subjects |
|
||||
| Indoor room | 7-8 ft (corner, near ceiling) | 10-15deg down | Covers most of the room diagonally |
|
||||
|
||||
**Key principles:**
|
||||
- Higher = harder to tamper with, but faces become less identifiable
|
||||
- 8-10ft is the sweet spot for face identification
|
||||
- Aim cameras so the horizon line is in the upper third of the frame
|
||||
- Avoid pointing cameras directly at the sky or strong light sources
|
||||
- For night vision: the IR range (100ft) is the max, but usable identification
|
||||
distance is more like 30-50ft depending on subject reflectivity
|
||||
|
||||
### Indoor Mounting
|
||||
|
||||
**Corner ceiling mount** (best coverage):
|
||||
- Mount in the corner diagonally opposite the main entry point to the room
|
||||
- This maximizes the visible area and captures faces of anyone entering
|
||||
- Use the dome camera's built-in mount or a small L-bracket
|
||||
- Cable can run up through the ceiling or along the wall with paintable cable
|
||||
raceway
|
||||
|
||||
**Shelf/furniture placement** (no drilling):
|
||||
- Place camera on top of a bookshelf or cabinet
|
||||
- Angle slightly downward
|
||||
- Run cable behind furniture to a wall plate or directly to a switch
|
||||
- Less ideal than ceiling corner mount but zero damage to walls
|
||||
|
||||
### Weatherproofing Cable Entry Points
|
||||
|
||||
For every exterior cable penetration:
|
||||
|
||||
1. **Cable gland** (best): Threaded waterproof fitting, ~$2 each. Drill the
|
||||
exact hole size, thread the gland, pass cable through, tighten the
|
||||
compression nut. Watertight seal.
|
||||
|
||||
2. **Silicone caulk** (good enough): Fill the hole around the cable with
|
||||
exterior-grade silicone. Cheap and effective but harder to service later.
|
||||
|
||||
3. **Weatherproof junction box** (most maintainable): Mount a small outdoor
|
||||
junction box over the wall penetration. Cable enters the box from inside the
|
||||
wall and connects to the outdoor cable run inside the protected box. Easiest
|
||||
to service but adds cost and visual bulk.
|
||||
|
||||
Always ensure the drill hole angles slightly downward toward the exterior so
|
||||
gravity pulls water away from the interior.
|
||||
|
||||
---
|
||||
|
||||
## 4. Four-Camera Placement Strategy
|
||||
|
||||
### The Four Positions
|
||||
|
||||
For a typical single-family home, these four positions provide the best coverage
|
||||
with no blind spots on approach routes:
|
||||
|
||||
```
|
||||
STREET
|
||||
____________
|
||||
| |
|
||||
[CAM 2]---->| FRONT |<----[CAM 1]
|
||||
Side gate | DOOR | Front door / porch
|
||||
| |
|
||||
| |
|
||||
| HOUSE |
|
||||
| |
|
||||
| |
|
||||
[CAM 3]---->| BACK |<----[CAM 4]
|
||||
Side yard | YARD | Backyard / patio
|
||||
|____________|
|
||||
|
||||
BACKYARD
|
||||
```
|
||||
|
||||
#### Camera 1: Front Door / Porch (PRIORITY 1)
|
||||
- **Model:** Reolink RLC-810A (4K for face identification)
|
||||
- **Mount:** Soffit above front door, 8-9ft high
|
||||
- **Aim:** Straight out from the door, capturing anyone approaching
|
||||
- **FOV needed:** ~100deg horizontal catches porch and walkway
|
||||
- **Why 4K here:** This is your primary identification camera. Police need clear
|
||||
face shots. The 8MP sensor lets Vigilar crop and zoom in recordings.
|
||||
|
||||
#### Camera 2: Side Gate / Driveway (PRIORITY 2)
|
||||
- **Model:** Reolink RLC-520A (5MP dome, discreet)
|
||||
- **Mount:** Soffit or wall mount at the corner, 8-10ft high
|
||||
- **Aim:** Along the side of the house toward the street
|
||||
- **FOV needed:** 80deg is sufficient for a narrow side passage
|
||||
- **Why dome here:** Vandal-resistant dome is harder to knock off or spray-paint.
|
||||
Side gates are common break-in approach routes.
|
||||
|
||||
#### Camera 3: Back Door / Patio (PRIORITY 3)
|
||||
- **Model:** Amcrest IP5M-T1179EW (132deg wide angle)
|
||||
- **Mount:** Eave or soffit at rear of house, 10-12ft high
|
||||
- **Aim:** Across the full backyard
|
||||
- **FOV needed:** The 132deg wide angle covers the most yard area with a single
|
||||
camera
|
||||
- **Why wide angle here:** Backyards are large. The Amcrest's 132deg FOV covers
|
||||
more area than the Reolink's 80-101deg, reducing blind spots.
|
||||
|
||||
#### Camera 4: Garage / Interior (PRIORITY 4)
|
||||
- **Model:** Reolink RLC-520A (5MP dome) used indoors
|
||||
- **Mount:** Corner ceiling mount in garage, or inside a high-value room
|
||||
- **Aim:** Diagonal across the space toward the main entry point
|
||||
- **Why indoors:** If someone gets past the exterior cameras, this catches them
|
||||
inside. Garage is the most common interior break-in entry after doors.
|
||||
|
||||
### Coverage Analysis
|
||||
|
||||
With this layout:
|
||||
- **100% of approach routes are covered**: front, both sides, rear
|
||||
- **Front door gets 4K identification**: the most important camera position
|
||||
- **Backyard gets wide-angle**: maximum area with one camera
|
||||
- **Interior fallback**: catches intruders who bypass or disable exterior cameras
|
||||
- **Overlap between cameras 1 and 2** at the front corner provides redundancy
|
||||
on the most common approach
|
||||
|
||||
### Night Vision Considerations
|
||||
|
||||
All recommended cameras have 100ft (30m) IR range. In practice:
|
||||
|
||||
| Distance | Identification quality |
|
||||
|----------|----------------------|
|
||||
| 0-15ft | Excellent (clear facial features, text on clothing) |
|
||||
| 15-30ft | Good (face recognizable, body details visible) |
|
||||
| 30-50ft | Fair (person detectable, gender/build visible, no face detail) |
|
||||
| 50-100ft | Movement detection only (shape visible, no identification) |
|
||||
|
||||
**Tips for better night performance:**
|
||||
- Mount cameras where existing outdoor lights provide supplemental illumination
|
||||
- Avoid aiming cameras at reflective surfaces (white walls, parked cars with
|
||||
chrome) as IR reflection causes glare/washout
|
||||
- If possible, add a dusk-to-dawn LED floodlight near cameras 3 and 4 (backyard)
|
||||
-- this enables color night vision on cameras that support it and dramatically
|
||||
improves identification range
|
||||
- Keep camera lenses clean; dust and spider webs scatter IR light and create haze
|
||||
|
||||
---
|
||||
|
||||
## 5. Complete Shopping List
|
||||
|
||||
### Cameras
|
||||
|
||||
| Item | Model | Qty | Unit Price | Total |
|
||||
|------|-------|-----|-----------|-------|
|
||||
| Front door camera | Reolink RLC-810A (4K) | 1 | $90 | $90 |
|
||||
| Side gate camera | Reolink RLC-520A (5MP dome) | 1 | $55 | $55 |
|
||||
| Backyard camera | Amcrest IP5M-T1179EW-AI-V3 (5MP wide) | 1 | $55 | $55 |
|
||||
| Garage/indoor camera | Reolink RLC-520A (5MP dome) | 1 | $55 | $55 |
|
||||
| | | | **Subtotal** | **$255** |
|
||||
|
||||
**Budget alternative:** Replace the RLC-810A with a third RLC-520A ($55) and save
|
||||
$35. You lose 4K on the front door but 5MP is still decent.
|
||||
|
||||
**All-same-brand alternative:** 4x Reolink RLC-810A at $90 each = $360. Simpler
|
||||
to manage (one RTSP URL format, one firmware update process, one web UI).
|
||||
|
||||
### Networking
|
||||
|
||||
| Item | Model / Description | Qty | Unit Price | Total |
|
||||
|------|-------------------|-----|-----------|-------|
|
||||
| PoE switch | NETGEAR GS308PP (8-port, 83W) | 1 | $70 | $70 |
|
||||
| Bulk ethernet cable | Cat6 UTP CMR 23AWG 500ft pull box | 1 | $55-75 | $65 |
|
||||
| RJ45 connectors | Cat6 pass-through connectors (50-pack) | 1 | $12 | $12 |
|
||||
| Crimping tool | RJ45 pass-through crimper with stripper | 1 | $25 | $25 |
|
||||
| Cable tester | Basic RJ45 continuity tester | 1 | $12 | $12 |
|
||||
| Short patch cables | Cat6 1ft patch cable (for switch end) | 4 | $3 | $12 |
|
||||
| | | | **Subtotal** | **$196** |
|
||||
|
||||
**Note on bulk cable vs pre-made:** For runs over 25ft through walls/attic, bulk
|
||||
cable + crimping is far cheaper and you can make exact-length cables. For
|
||||
anything under 10ft (switch to patch panel), buy pre-made.
|
||||
|
||||
**Bulk cable brands:** Monoprice, Cable Matters, or trueCABLE are all reliable
|
||||
for Cat6 CMR-rated cable. Expect ~$55-75 for a 500ft box. A 500ft box is
|
||||
sufficient for a typical home with 4 cameras (average run 50-80ft each, plus
|
||||
waste from mistakes and test pulls).
|
||||
|
||||
### Mounting Hardware
|
||||
|
||||
| Item | Description | Qty | Unit Price | Total |
|
||||
|------|------------|-----|-----------|-------|
|
||||
| Junction boxes | Weatherproof outdoor camera junction box | 3 | $8 | $24 |
|
||||
| Cable glands | PG9 waterproof cable glands | 6 | $1 | $6 |
|
||||
| Tapcon screws | 3/16" x 1-3/4" (for brick/stucco) | 1 box | $8 | $8 |
|
||||
| Lag screws | #10 x 2" stainless (for wood) | 1 box | $6 | $6 |
|
||||
| Wall anchors | Plastic expansion anchors (assorted) | 1 pack | $5 | $5 |
|
||||
| Silicone sealant | GE outdoor silicone caulk | 1 | $7 | $7 |
|
||||
| | | | **Subtotal** | **$56** |
|
||||
|
||||
### Cable Routing Supplies
|
||||
|
||||
| Item | Description | Qty | Unit Price | Total |
|
||||
|------|------------|-----|-----------|-------|
|
||||
| Flex drill bit | 3/4" x 54" installer bit | 1 | $18 | $18 |
|
||||
| Cable staples | Coax/ethernet cable staples (100pk) | 1 | $6 | $6 |
|
||||
| Fish tape | 25ft steel fish tape | 1 | $15 | $15 |
|
||||
| Low-voltage wall plates | 1-gang brush-style pass-through | 4 | $3 | $12 |
|
||||
| Cable raceway | Paintable adhesive raceway 1" (for indoor runs) | 2 packs | $8 | $16 |
|
||||
| Velcro cable ties | Reusable 8" ties (50-pack) | 1 | $6 | $6 |
|
||||
| Electrical tape | For marking cable ends by camera | 1 | $3 | $3 |
|
||||
| | | | **Subtotal** | **$76** |
|
||||
|
||||
### Optional but Recommended
|
||||
|
||||
| Item | Description | Qty | Unit Price | Total |
|
||||
|------|------------|-----|-----------|-------|
|
||||
| UPS for switch | APC BE425M (small UPS for PoE switch) | 1 | $45 | $45 |
|
||||
| Keystone jacks | Cat6 keystone jacks (for wall plates) | 8 | $3 | $24 |
|
||||
| Keystone wall plate | 1-gang single-port plate | 4 | $2 | $8 |
|
||||
| Punch-down tool | 110 punch-down (for keystone jacks) | 1 | $10 | $10 |
|
||||
| Label maker | Brother P-Touch for cable labeling | 1 | $20 | $20 |
|
||||
| | | | **Subtotal** | **$107** |
|
||||
|
||||
### Grand Total
|
||||
|
||||
| Category | Cost |
|
||||
|----------|------|
|
||||
| Cameras | $255 |
|
||||
| Networking | $196 |
|
||||
| Mounting hardware | $56 |
|
||||
| Cable routing | $76 |
|
||||
| **Required total** | **$583** |
|
||||
| Optional extras | $107 |
|
||||
| **Total with all options** | **$690** |
|
||||
|
||||
---
|
||||
|
||||
## 6. RTSP URL Quick Reference
|
||||
|
||||
For Vigilar's `config/vigilar.toml`, use these RTSP URLs:
|
||||
|
||||
### Reolink Cameras (RLC-810A, RLC-520A)
|
||||
|
||||
```
|
||||
# Main stream (full resolution, for recording)
|
||||
rtsp://admin:<password>@<ip>:554/Preview_01_main
|
||||
|
||||
# Sub stream (low resolution, for motion detection)
|
||||
rtsp://admin:<password>@<ip>:554/Preview_01_sub
|
||||
```
|
||||
|
||||
- Default username: `admin`
|
||||
- Default password: set during initial camera setup via Reolink app or web UI
|
||||
- Default RTSP port: 554
|
||||
- ONVIF port: 8000 (for auto-discovery)
|
||||
- Web UI: `http://<ip>` (port 80)
|
||||
|
||||
**Important:** Do not use special characters in the RTSP password. Stick to
|
||||
alphanumeric characters. Special characters in URLs cause encoding issues with
|
||||
some RTSP clients including OpenCV.
|
||||
|
||||
### Amcrest Cameras (IP5M-T1179EW)
|
||||
|
||||
```
|
||||
# Main stream (full resolution, for recording)
|
||||
rtsp://admin:<password>@<ip>:554/cam/realmonitor?channel=1&subtype=0
|
||||
|
||||
# Sub stream (low resolution, for motion detection)
|
||||
rtsp://admin:<password>@<ip>:554/cam/realmonitor?channel=1&subtype=1
|
||||
```
|
||||
|
||||
- Default username: `admin`
|
||||
- Default password: set during initial setup via Amcrest web UI
|
||||
- Default RTSP port: 554
|
||||
- ONVIF port: 80
|
||||
- Web UI: `http://<ip>` (port 80, requires IE/Edge or Amcrest app for full features)
|
||||
|
||||
### Vigilar Configuration Example (all 4 cameras)
|
||||
|
||||
```toml
|
||||
[[cameras]]
|
||||
id = "front_door"
|
||||
display_name = "Front Door"
|
||||
rtsp_url = "rtsp://admin:SecurePass1@192.168.1.101:554/Preview_01_main"
|
||||
enabled = true
|
||||
record_on_motion = true
|
||||
motion_sensitivity = 0.7
|
||||
motion_min_area_px = 500
|
||||
pre_motion_buffer_s = 5
|
||||
post_motion_buffer_s = 30
|
||||
idle_fps = 2
|
||||
motion_fps = 25
|
||||
retention_days = 30
|
||||
resolution_capture = [1920, 1080]
|
||||
resolution_motion = [640, 360]
|
||||
|
||||
[[cameras]]
|
||||
id = "side_gate"
|
||||
display_name = "Side Gate"
|
||||
rtsp_url = "rtsp://admin:SecurePass1@192.168.1.102:554/Preview_01_main"
|
||||
enabled = true
|
||||
record_on_motion = true
|
||||
motion_sensitivity = 0.7
|
||||
retention_days = 30
|
||||
resolution_capture = [1920, 1080]
|
||||
resolution_motion = [640, 360]
|
||||
|
||||
[[cameras]]
|
||||
id = "backyard"
|
||||
display_name = "Backyard"
|
||||
rtsp_url = "rtsp://admin:SecurePass2@192.168.1.103:554/cam/realmonitor?channel=1&subtype=0"
|
||||
enabled = true
|
||||
record_on_motion = true
|
||||
motion_sensitivity = 0.6
|
||||
retention_days = 30
|
||||
resolution_capture = [1920, 1080]
|
||||
resolution_motion = [640, 360]
|
||||
|
||||
[[cameras]]
|
||||
id = "garage"
|
||||
display_name = "Garage"
|
||||
rtsp_url = "rtsp://admin:SecurePass1@192.168.1.104:554/Preview_01_main"
|
||||
enabled = true
|
||||
record_on_motion = true
|
||||
motion_sensitivity = 0.8
|
||||
retention_days = 30
|
||||
resolution_capture = [1920, 1080]
|
||||
resolution_motion = [640, 360]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Bandwidth Planning
|
||||
|
||||
With your 22 Mbps upload, here is how the 4-camera system fits:
|
||||
|
||||
### Local Network (LAN)
|
||||
|
||||
Each camera at 1080p 25fps H.265 generates approximately 4-6 Mbps. Four cameras
|
||||
= ~20-24 Mbps total ingest. A Gigabit PoE switch handles this trivially.
|
||||
|
||||
### Remote Viewing (WAN)
|
||||
|
||||
Vigilar's remote config in `vigilar.toml` is already tuned for your upload:
|
||||
|
||||
```toml
|
||||
[remote]
|
||||
upload_bandwidth_mbps = 22.0
|
||||
remote_hls_resolution = [426, 240]
|
||||
remote_hls_fps = 10
|
||||
remote_hls_bitrate_kbps = 500
|
||||
max_remote_viewers = 4
|
||||
```
|
||||
|
||||
At 500 kbps per remote HLS stream, 4 simultaneous viewers = 2 Mbps. Even if
|
||||
all 4 cameras stream remotely at once (4 x 500 kbps = 2 Mbps per viewer, 4
|
||||
viewers = 8 Mbps), you stay well within the 22 Mbps upload limit.
|
||||
|
||||
### Storage Estimates
|
||||
|
||||
At 1080p H.265 with motion-only recording (typical 2-4 hours of actual motion
|
||||
per day per camera):
|
||||
|
||||
| Retention | Storage per camera | Total (4 cameras) |
|
||||
|-----------|-------------------|-------------------|
|
||||
| 7 days | ~15-25 GB | ~60-100 GB |
|
||||
| 30 days | ~60-100 GB | ~240-400 GB |
|
||||
| 90 days | ~180-300 GB | ~720 GB - 1.2 TB |
|
||||
|
||||
The `max_disk_usage_gb = 200` default in vigilar.toml will hold approximately
|
||||
30 days of motion-triggered recordings from 4 cameras. Increase to 500 GB for
|
||||
comfortable 30-day retention with buffer, or 1 TB for 90 days.
|
||||
|
||||
---
|
||||
|
||||
## 8. Initial Camera Setup Checklist
|
||||
|
||||
After mounting cameras and connecting cables:
|
||||
|
||||
1. **Assign static IPs** to each camera via your router's DHCP reservation
|
||||
(use the camera's MAC address). Suggested range: 192.168.1.101-104.
|
||||
|
||||
2. **Access each camera's web UI** at `http://<ip>` and:
|
||||
- Change the default password to something strong (alphanumeric only)
|
||||
- Set the time zone and enable NTP sync
|
||||
- Disable cloud features / P2P (saves bandwidth, improves security)
|
||||
- Enable RTSP (usually under Network > Advanced > RTSP)
|
||||
- Set the main stream to 1920x1080 @ 25fps H.265 (or 4K if you prefer)
|
||||
- Set the sub stream to 640x360 @ 15fps H.264
|
||||
|
||||
3. **Test RTSP with VLC** before configuring Vigilar:
|
||||
```bash
|
||||
vlc rtsp://admin:password@192.168.1.101:554/Preview_01_main
|
||||
```
|
||||
If VLC shows video, the stream works and Vigilar will pick it up.
|
||||
|
||||
4. **Test RTSP with ffprobe** for detailed stream info:
|
||||
```bash
|
||||
ffprobe -rtsp_transport tcp rtsp://admin:password@192.168.1.101:554/Preview_01_main
|
||||
```
|
||||
|
||||
5. **Update Vigilar config** (`config/vigilar.toml`) with the RTSP URLs.
|
||||
|
||||
6. **Start Vigilar** and verify all cameras appear in the web UI:
|
||||
```bash
|
||||
vigilar start
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Sources
|
||||
|
||||
- [Reolink RLC-810A Product Page](https://reolink.com/product/rlc-810a/)
|
||||
- [Reolink RLC-520A Product Page](https://reolink.com/product/rlc-520a/)
|
||||
- [Amcrest IP5M-T1179EW-AI-V3 Product Page](https://amcrest.com/5mp-poe-camera-turret-ip5m-t1179ew-ai-v3.html)
|
||||
- [Reolink RTSP/ONVIF Support](https://support.reolink.com/articles/900000617826-Which-Reolink-Products-Support-CGI-RTSP-ONVIF/)
|
||||
- [Reolink RTSP URL Format (VLC Guide)](https://support.reolink.com/articles/360007010473-How-to-Live-View-Reolink-Cameras-via-VLC-Media-Player/)
|
||||
- [Amcrest RTSP URL Format](https://support.amcrest.com/hc/en-us/articles/360052688931-Accessing-Amcrest-Products-Using-RTSP)
|
||||
- [Reolink PoE Tier List (The Hook Up)](https://www.thesmarthomehookup.com/reolink-poe-tier-list-testing-every-reolink-wired-security-camera/)
|
||||
- [Amcrest IP5M-T1179EW Frigate Config](https://github.com/blakeblackshear/frigate/discussions/15938)
|
||||
- [Best Low-Cost PoE Switches (Data Wire Solutions)](https://datawiresolutions.com/blog/best-low-cost-poe-switches)
|
||||
- [Reolink vs Amcrest Comparison](https://webcam.org/blog/reolink-vs-amcrest.html)
|
||||
- [Amcrest IP5M-T1179EW on Amazon](https://www.amazon.com/Amcrest-5-Megapixel-NightVision-Weatherproof-IP5M-T1179EW-28MM/dp/B083G9KT4C)
|
||||
- [Reolink RLC-810A on Amazon](https://www.amazon.com/REOLINK-Detection-Timelapse-Recording-RLC-810A/dp/B07K74GWX5)
|
||||
- [NETGEAR GS308PP PoE Switch](https://www.amazon.com/s?k=NETGEAR+GS308PP)
|
||||
Reference in New Issue
Block a user