| name | office-cam |
| description | Multi-camera system for office/home monitoring. Supports USB webcams (Logitech), WiFi Wyze cameras (RTSP), and ESP32 cameras. Use to check rooms, capture photos on demand, or monitor multiple spaces. |
| metadata | {"clawdbot":{"emoji":"🎥"}} |
Office Cam - Multi-Camera System
Whole-house camera network supporting multiple camera types.
Supported Cameras
| Type | Reliability | Setup | Best For |
|---|
| 🖥️ USB Webcam | ⭐⭐⭐⭐⭐ Instant | Plug & play | Desk, office |
| 📹 Wyze PTZ/v3 | ⭐⭐⭐⭐⭐ Reliable | RTSP stream | Rooms, garage, shed |
| 📡 ESP32-CAM | ⭐⭐⭐ Experimental | ESP-NOW wireless | DIY, battery-powered |
Quick Start
~/clawd/skills/office-cam/scripts/capture.sh
~/clawd/skills/office-cam/scripts/wyze-dashboard add
~/clawd/skills/office-cam/scripts/wyze-dashboard capture shed
🖥️ USB Webcam (Logitech)
Most reliable - works instantly.
Basic Capture
cd ~/clawd/skills/office-cam
./scripts/capture.sh /tmp/office.jpg
Motion Detection ⭐ NEW
./scripts/motion-detect.sh
🔥 OVERWATCH Mode (AI Monitoring) ⭐⭐⭐
./scripts/overwatch start
./scripts/overwatch status
./scripts/overwatch stop
What Overwatch does:
- 👀 Monitors webcam 24/7 in background
- 🚨 Detects motion and saves alert
- 🔔 Can trigger notifications (integrate with OpenClaw)
- 💾 Saves motion captures to
~/.clawdbot/overwatch/
Or say: "Start overwatch" or "Keep overwatch"
🤖 SMART OVERWATCH (AI-Escalated) ⭐⭐⭐⭐⭐
./scripts/smart-overwatch start
How it works:
- 👀 Local motion detection (file size comparison, zero API cost, runs always)
- 🚨 Motion detected → creates trigger file in
~/.clawdbot/overwatch/triggers/
- 🤖 I detect the trigger → analyze image with vision model (only when motion happens)
- 👤 Person found? → Send alert & optionally continue watching
- 📊 No person? → Delete trigger, back to local monitoring
What you can say:
- "Start smart overwatch"
- "Keep watch and tell me if you see anyone"
- "Monitor for people only"
- "Check overwatch triggers" (to manually check for pending analysis)
Cost: Zero until motion detected, then only when I analyze the image
📸 Instant Telegram Photo ⭐⭐⭐⭐⭐
Quick capture and send - the simplest way to check your camera
Just say:
- "Show me the office"
- "What's on camera?"
- "Send me a photo"
What happens:
- I instantly capture from your webcam
- Analyze for clear faces/activity
- Send best image directly to your Telegram
No stream needed - just instant photos when you want them.
🔥 OVERWATCH PRO (Full Control System) ⭐⭐⭐⭐⭐⭐
The complete solution - Telegram alerts, live stream, remote control
./scripts/overwatch-pro start
./scripts/overwatch-pro setup
./scripts/overwatch-pro stream
./scripts/overwatch-pro capture
./scripts/overwatch-pro status
./scripts/overwatch-pro log
./scripts/overwatch-pro stop
Features:
- 🚨 Instant Telegram alerts when motion detected
- 🌐 Live MJPEG stream at http://localhost:8080
- 📱 Auto-refreshes every 2 seconds
- 📸 Saves all captures to ~/.clawdbot/overwatch/
- 🤖 Telegram bot replies - respond to alerts with commands
- 🌅 Morning report (8 AM daily via cron)
Telegram Commands (reply to motion alert):
analyze - I'll check the image and tell you what I see
stream - I'll send you the live stream link
capture - I'll take a fresh photo right now
Network Access:
http://localhost:8080
http://$(hostname -I | awk '{print $1}'):8080
Morning Report (with Photo):
- Auto-generated at 8 AM (America/Denver timezone)
- Sends a fresh morning photo of your office
- Summarizes overnight motion events
- Offers to analyze captures
- Provides quick command reference
Requirements for motion detection:
brew install imagemagick
📹 Wyze Cameras
One-Time Setup:
-
Enable RTSP in Wyze App:
- Open Wyze app → Camera Settings → Advanced Settings
- Enable RTSP, set password
- Copy the RTSP URL
-
Add to system:
~/clawd/skills/office-cam/scripts/wyze-dashboard add
-
Capture:
~/clawd/skills/office-cam/scripts/wyze-dashboard capture shed
~/clawd/skills/office-cam/scripts/wyze-dashboard capture-all
~/clawd/skills/office-cam/scripts/wyze-capture shed
📡 ESP32-CAM (ESP-NOW Wireless)
No WiFi router needed! Direct wireless between ESP32s.
Architecture:
┌─────────────────┐ ESP-NOW ┌─────────────────┐
│ ESP32-CAM │ ═══════════════► │ ESP32 Base │◄── USB ──► Mac
│ (Camera Node) │ (100m range) │ (Receiver) │
└─────────────────┘ └─────────────────┘
Battery powered Plugged into computer
Flashing:
Base Station (plain ESP32, plugged into Mac):
cd ~/clawd/skills/office-cam/firmware/espnow-base
pio run --target upload
Camera Node (ESP32-CAM with camera):
cd ~/clawd/skills/office-cam/firmware/espnow-cam-auto
pio run --target upload
How it works:
- Base station broadcasts "beacon" every 2 seconds
- Camera auto-discovers base station
- Camera captures and sends photo wirelessly
- Base receives and saves to SD/outputs to serial
Range: 100+ meters (no WiFi needed!)
Files
| Script | Purpose |
|---|
capture.sh | USB webcam |
wyze-capture | Quick Wyze capture |
wyze-dashboard | Multi-cam management |
firmware/espnow-base/ | ESP32 receiver |
firmware/espnow-cam-auto/ | ESP32-CAM transmitter |
Troubleshooting
Wyze "Connection refused":
- Verify RTSP enabled in Wyze app
- Check username/password
- Ensure same WiFi network
ESP32-CAM not connecting:
- Keep within 10 feet for testing
- Check LED: blinking = searching, solid = capturing
- Try resetting both boards
USB webcam not working:
brew install imagesnap
- System Settings → Privacy → Camera