home / skills / openclaw / skills / camera-watch

camera-watch skill

/skills/henrikback/camera-watch

This skill performs real-time object detection from IP cameras using YOLOv8 and sends snapshots when events occur, enhancing security monitoring.

npx playbooks add skill openclaw/skills --skill camera-watch

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
3.5 KB
---
name: camera-watch
description: YOLOv8-based camera surveillance with object detection. Works with any IP camera supporting RTSP streams or HTTP snapshots (Hikvision, Dahua, Reolink, Amcrest, Unifi, and more). Detects 80+ object types (person, car, dog, etc.) and sends notifications with snapshots. Use for motion detection, night watch routines, or security monitoring.
---

# Camera Watch

Real-time object detection on IP cameras using YOLOv8. Works with any camera supporting RTSP or HTTP snapshots. Detects people, vehicles, animals, and 80+ object types. Sends notifications with snapshots when objects are detected.

## Features

- HTTP snapshot mode (reliable) or RTSP streaming
- YOLOv8 object detection (80 COCO classes)
- WhatsApp/iMessage notifications with snapshots
- Configurable confidence threshold and cooldown
- Multi-camera support

## Setup

### 1. Create project directory

```bash
mkdir -p ~/camera-watch && cd ~/camera-watch
python -m venv venv
source venv/bin/activate
pip install opencv-python ultralytics pyyaml requests
```

### 2. Copy scripts

Copy `scripts/camera_watch.py` to your project directory.

### 3. Create config.yaml

```yaml
notifications:
  enabled: true
  whatsapp: "+1234567890"  # Your phone number
  cooldown_seconds: 60

recordings:
  snapshots_dir: "./snapshots"
  keep_days: 7

logging:
  file: "./logs/detections.log"
  level: "INFO"

cameras:
  front-door:
    name: "Front Door"
    ip: "192.168.1.100"      # Your camera IP
    channel: 1               # Hikvision channel number
    user: "admin"            # Camera username
    password: "yourpassword" # Camera password
    poll_interval: 2
    enabled: true
    track:
      - person
      - car
    confidence: 0.5

model:
  name: "yolov8s"  # Options: yolov8n (fast), yolov8s (balanced), yolov8m (accurate)
  device: "cpu"    # Use "mps" for Apple Silicon, "cuda" for NVIDIA
```

### 4. Run

```bash
# Test cameras
python camera_watch.py --test

# Run in foreground
python camera_watch.py

# Run in background
nohup python camera_watch.py > /tmp/camera-watch.log 2>&1 &
```

## Detectable Objects (YOLOv8 COCO)

**People & Animals:**
person, bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe

**Vehicles:**
bicycle, car, motorcycle, airplane, bus, train, truck, boat

**Common objects:**
backpack, umbrella, handbag, suitcase, bottle, cup, chair, couch, bed, laptop, cell phone, tv

**Full list:** 80 classes including sports equipment, food items, furniture, and more.

## Integration with Night Watch

For automated night routines, create a separate script that:
1. Starts camera-watch at night (e.g., 00:00)
2. Stops camera-watch in morning (e.g., 07:00)
3. Sends report with detections and snapshots

Example cron integration:
```bash
# Start at midnight
0 0 * * * cd ~/camera-watch && source venv/bin/activate && nohup python camera_watch.py > /tmp/camera-watch.log 2>&1 &

# Stop at 7am and send report
0 7 * * * pkill -f camera_watch.py
```

## Notifications

The script sends notifications via Clawdbot gateway API. Ensure Clawdbot is running and configure the gateway URL in the script if needed.

## Troubleshooting

**Camera not connecting:**
- Verify IP address and credentials
- Check if camera supports ISAPI (Hikvision) or try RTSP
- Ensure camera is on same network

**False positives:**
- Increase confidence threshold (0.5 → 0.7)
- Clean camera lens (spider webs, insects)
- Adjust detection area if possible

**High CPU usage:**
- Increase poll_interval (2 → 5 seconds)
- Use smaller model (yolov8n instead of yolov8s)

Overview

This skill runs YOLOv8-based, real-time object detection on IP cameras and HTTP snapshot feeds. It detects 80+ COCO classes (people, vehicles, animals, common objects) and sends snapshot notifications when configured targets are seen. Multi-camera support, configurable confidence and cooldown, and lightweight deployment options make it suitable for home and small-site monitoring.

How this skill works

The skill polls cameras via RTSP streams or HTTP snapshot endpoints and runs a YOLOv8 model on each frame or snapshot. Detections are filtered by configured classes and confidence thresholds; matching events generate saved snapshots and outbound notifications via the configured gateway. You can choose model size (yolov8n/s/m) and compute device (cpu, mps, cuda) to balance speed and accuracy.

When to use it

  • Continuous monitoring of entry points (front door, garage) for people and vehicles
  • Night-watch routines that run only during set hours
  • Pet or wildlife detection in yards and gardens
  • Lightweight security for small businesses without full NVR infrastructure
  • Triggering alerts or automation when specific objects appear

Best practices

  • Use HTTP snapshot mode if RTSP is unreliable for your camera model
  • Start with yolov8n for low CPU systems, switch to yolov8s/m for higher accuracy
  • Set a sensible cooldown to avoid notification floods (e.g., 60s)
  • Raise confidence threshold to reduce false positives in busy scenes
  • Store snapshots with retention policy and rotate logs to manage disk usage

Example use cases

  • Front-door watch: detect people and cars, send phone notifications with snapshots
  • Night watch: run between midnight and 7am with scheduled start/stop and daily report
  • Backyard animal monitor: detect dogs, cats, and wildlife and archive sightings
  • Resource-limited deployment: use yolov8n on CPU with longer poll intervals to save CPU

FAQ

What camera types are supported?

Any IP camera that provides RTSP streams or periodic HTTP snapshots is supported (Hikvision, Dahua, Reolink, Amcrest, Unifi, etc.).

How do I reduce false positives?

Increase the model confidence threshold, restrict tracked classes, clean the camera lens, or adjust the polling area if your camera supports masking.