Smart Video Monitoring System

This project is an smart video monitoring system developed based on the Quectel Pi H1 Smart Single-Board Computer. The system integrates the Frigate NVR (Network Video Recorder) platform and leverages computer vision technology to provide core functionalities including object detection, face recognition, and event recording.

In terms of device compatibility, the system supports flexible integration of multiple camera types:

  • USB cameras: locally loaded.
  • IPC (IP cameras): standardized device control via ONVIF protocol, with low-latency video streaming through RTSP protocol.

The system features a web-based visual management interface, enabling users to conveniently perform real-time monitoring and data management operations, making it suitable for applications such as home security and commercial surveillance.

Development Resources Summary

The listed development accessories are provided for reference only. Different development environments may vary. For example, if you are developing via SSH remote connection, the USB expansion dock may not be necessary, and the display monitor can also be replaced as needed.

Development Accessories List

Accessory Name Quantity Specifications
Quectel Pi H1 Smart Single-Board Computer 1 -
Power Adapter 1 27W USB Type-C Interface Charger 1.2m Cable Length China Standard Power PD Power Suitable for Raspberry Pi 5
HDMI Cable 1 Specification: HDMI 2.0; Length: 1m; Connector: HDMI-A (Male)-HDMI-D (Male)
Ethernet Cable 1 Length: 1m; Transmission Rate: Gigabit;
CPU Cooling Fan 1 Raspberry Pi 5 Official Active Cooler with Thermal Pad
USB Hub 1 UGREEN USB3.0 Hub
Network Camera 1 Tenda Indoor Home Surveillance Camera
USB Camera 1 OV5693 5MP USB Camera Module
Display 1 24-inch HDMI Monitor

Reference Images of Accessories

Quick Start

Development Preparation

The Quectel Pi H1 Smart Single-Board Computer comes pre-installed with the Debian 13 system image by default, so there's no need to flash a new image. Simply follow the steps below.

Hardware Connection

Cooling Fan Installation

First, insert the cooling fan's ribbon cable into the FAN slot on the single-board computer, then secure both ends of the cooler into the reserved holes on the single-board computer, as shown below:

Display Connection

Connect one end of the HDMI cable to the HDMI port on the single-board computer and the other end to the HDMI port on the monitor.

image-20251017144027933

Input Device Connection

Connect the USB keyboard and mouse to the USB ports on the hub, then connect the hub to the USB port on the single-board computer. For wireless input devices, simply insert the receiver into a USB port on the hub.

image-20251017144124363

Network Connection

Connect one end of the Ethernet cable to the Gigabit Ethernet port on the single-board computer and the other end to a port on your router (ensure the router is connected to the internet).

Jumper Cap Connection

Ensure the jumper cap is properly shorting the pins labeled AUTO_POWER_ON at the top-left corner of the single-board computer.

image-20251017144330473

Power Connection

Connect the USB-A end of the power cable to the power adapter and the USB-C end to the power port on the single-board computer (usually labeled POWER IN).

image-20251017172353513

Network Camera Connection

Simply connect the network camera to its power source.

USB Camera Connection

Connect the OV5693 camera module to a USB port on either the single-board computer or the USB hub.

Completed Connection Reference

Project Implementation

Preparation Steps

For the first-time network connection of the network camera, you need to connect it to Wi-Fi or a router, and your smartphone must also be connected to the same router/hotspot Wi-Fi. Then add the camera device through the Tenda app. Please refer to the network camera's quick installation guide for details.

Note: Ensure that both the single-board computer and the network camera are on the same local network; otherwise, you won't be able to access the camera's RTSP video stream.

Docker Installation

# Remove all conflicting packages
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)
# Set up Docker apt repository
sudo apt-get update
sudo apt-get install curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker packages
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Start Docker Service

# Enable Docker service to start automatically
sudo systemctl start docker
# Verify that Docker is running
sudo systemctl status docker

If you see the following output, Docker has started successfully:

image-20260224180131606

Deploy Frigate System

# Create a frigate folder in the home directory and create configuration files
mkdir ~/frigate
cd frigate/
mkdir storage config 

Click here to download the configuration files, then use the SCP command to upload the files to the ~/frigate directory. Refer to the Remote Access SCP File Copy section. Execute the following command to install Frigate.

Note: Ensure the docker-compose.yml file is in the ~/frigate directory; otherwise, the commands below cannot be executed.

sudo docker compose up -d

Install Project Dependencies

Run the following command in the system terminal to install project dependencies.

pip install --upgrade pip
pip install onvif-zeep wsdiscovery opencv-python pyyaml

Camera Device Discovery and Configuration

In the ~/frigate directory, grant execute permissions to the camera_discover.py file. Running it will automatically scan and generate a config.yml file to configure USB cameras and network cameras supporting the ONVIF protocol.

chmod +x ~/frigate/camera_discover.py
python3 camera_discover.py

Note: If you cannot run the camera_discover.py file, please check if the CONFIG_PATH in the file correctly points to ~/frigate/config/config.yml.

Camera Backend Settings

In the single-board computer system, open the Firefox browser and enter the "IP address of the webcam". Use the default username: admin and password: admin123456 to enter the backend and set the video encoding type to H.264 and the audio encoding type to AAC.

Note: The IP address of the network camera can be found in the device information section of the Tenda app.

Start Frigate Service

Execute the following startup command in the system terminal:

sudo docker compose -f  ~/frigate/docker-compose.yml down && sudo docker compose -f ~/frigate/docker-compose.yml up -d

After successful startup, open a browser and enter "IP address of the single-board computer:5000" to access the Frigate service.

Application Demonstration

Real-time Monitoring Function Demonstration

On the Live page, you can view real-time monitoring footage from the system, supporting simultaneous display from multiple cameras:

image-20260227100902976

Review Function Demonstration

The Review page allows you to view security event alerts from different time periods. The system automatically detects and records objects (people, vehicles, etc.) that meet the specified conditions:

image-20260227143238666

Object Tracking Function Demonstration

The Explore page displays the tracking objects configured in the configuration file, such as people, vehicles, etc., showing detection boxes and confidence levels:

image-20260227151721826

Video Export Function Demonstration

  • On the Review page → Right-click (computer) or long-press (mobile) on a playback entry → Export;
  • Or on the camera's History page → Click the export button.

image-20260227144558806

Exported videos can be managed and downloaded from the Export page in the main navigation bar.

image-20260227144414851

Facial Recognition Function Demonstration

The facial recognition feature matches detected faces against pre-added facial data to identify known individuals. When a known person is recognized, their name is added as a sub-label.

On the Face Library page → Add Face → Enter Face Name → Upload Face Image → Next → Done to add a face. When Frigate detects and attempts to recognize a face, it appears in the Training tab of the face library, along with the associated recognition confidence level.

image-20260227151754662

Note: For more features and usage examples, please refer to the Frigate official website.

Technical Support and Contributions

If you encounter any issues during use, please submit technical inquiries on the Quectel Official Forum. Our technical support team will respond promptly.