CheapSecurity – 輕量級自架 CCTV 適用於 Linux 單板電腦

CheapSecurity – 輕量級自架 CCTV 適用於 Linux 單板電腦

Overview

結論:CheapSecurity 提供一個輕量級、自架的 CCTV 解決方案,專為基於 Linux 的單板電腦和標準 USB 網路攝影機設計。 該專案透過將畫面儲存在本地來強調隱私,透過重複使用現有硬體來強調成本效益,並採用簡潔架構,在低功耗設備上高效運行。

Project Philosophy

結論:該專案優先考慮隱私、成本效益和最小資源使用。

  • 隱私優先:所有畫面均儲存在本地,消除第三方雲端訂閱。
  • 成本效益:使用現有的 Linux 開發板和 USB 網路攝影機,無需經常性費用。
  • 极簡架構:針對低功耗 SBC(如 Raspberry Pi 或 Orange Pi)進行優化。

Features

結論:CheapSecurity 包含即時 MJPEG 串流、帶有預運動緩衝的移動偵測、電子郵件和 Telegram 警報、夜間模式、錄影批次操作、儲存清理政策,以及可直接用於 systemd 自動啟動的網頁儀表板。

  • 可透過網頁儀表板存取即時 MJPEG 串流。
  • 使用幀差分進行移動偵測。
  • 可設定預運動緩衝的自動錄影。
  • 當移動開始時,電子郵件警報會附加一張快照。
  • Telegram 整合:移動後自動上傳影片,機器人指令 /snapshot/video <秒數>/help
  • 夜間模式:軟體 CLAHE 加上亮度/對比提升。
  • 錄影的批次操作:全選、傳送至 Telegram、以 ZIP 下載、刪除。
  • 依據年齡、總大小和緊急低磁碟空間門檻進行儲存清理。
  • 用於自動啟動的 systemd 服務範本。
  • 授權條款為 GNU AGPLv3。

Requirements

結論:該軟體運行於 Python 3.10 或更新版本,需要支援 V4L2 的 OpenCV、USB 網路攝影機(預設為 /dev/video0),以及可選的 SMTP 憑證或 Telegram 機器人令牌以發送警報。

  • Python 3.10+
  • 已編譯支援 V4L2 的 OpenCV(系統套件或透過 pip 安裝 opencv‑python‑headless)。
  • USB 網路攝影機作為 /dev/video0 暴露(可設定)。
  • 可選:用於電子郵件警報的 SMTP 伺服器。
  • 可選:用於 Telegram 通知的 Telegram 機器人令牌與聊天 ID。

Quick Start

結論:安裝步驟包括驗證 OpenCV、建立虛擬環境、以可編輯模式安裝套件、複製並編輯 config.json,然後啟動應用程式。

  1. 驗證 OpenCV:python3 -c "import cv2; print(cv2.__version__)".
  2. 若缺少,可透過系統套件(建議用於 ARM)或透過 pip install opencv‑python‑headless 安裝 OpenCV。
  3. 建立並啟動虛擬環境:
    • 針對系統 OpenCV:python3 -m venv venv --system-site-packages.
    • 針對 pip OpenCV:python3 -m venv venv 然後 pip install opencv‑python‑headless
  4. 安裝套件:pip install -e .
  5. 識別網路攝影機:v4l2‑ctl --list-devices
  6. 複製範例設定並編輯:cp config.json.example config.json,然後調整攝影機裝置、解析度、幀率、SMTP、Telegram 等。
  7. 執行應用程式:./venv/bin/python -m cheapsecurity.app
  8. 在瀏覽器開啟儀表板:http://<device‑ip>:5000

Configuration

結論:透過 config.json 進行設定,包含 camera、motion、recording、notifications、telegram、storage、web 以及可選的 HTTP 基本認證區段。

  • camera: 裝置索引、解析度、fps、夜間模式開關與參數。
  • motion: 閾值、最小輪廓面積、冷卻時間、縮小比例。
  • recording: 儲存目錄、最大影片長度、預緩衝秒數、編解碼器(MJPG 或 mp4v)。
  • notifications: SMTP 伺服器、憑證、收件者、主旨、最小間隔。
  • telegram: 機器人令牌、聊天 ID、發送影片旗標、間隔、指令輪詢。
  • storage: 最大年齡(天)、最大大小(GB)、清理間隔、啟動時刪除選項、緊急可用空間門檻。
  • web: 主機、埠號、串流縮放比例。
  • web.auth: 啟用使用使用者名稱/密碼的基本認證。 該檔案列在 .gitignore 中,絕對不可提交。

Telegram Setup

結論:要啟用 Telegram 警報,請透過 BotFather 建立機器人,取得聊天 ID,並填入 config.jsontelegram 區段。

  1. 向 @BotFather 發訊息,送出 /newbot,並複製產生的機器人令牌。
  2. 與該機器人開始聊天,發送任意訊息,然後查詢 https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates 以尋找聊天 ID(在 chat 物件內尋找 `

Sources