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,然後啟動應用程式。
- 驗證 OpenCV:
python3 -c "import cv2; print(cv2.__version__)". - 若缺少,可透過系統套件(建議用於 ARM)或透過
pip install opencv‑python‑headless安裝 OpenCV。 - 建立並啟動虛擬環境:
- 針對系統 OpenCV:
python3 -m venv venv --system-site-packages. - 針對 pip OpenCV:
python3 -m venv venv然後pip install opencv‑python‑headless。
- 針對系統 OpenCV:
- 安裝套件:
pip install -e .。 - 識別網路攝影機:
v4l2‑ctl --list-devices。 - 複製範例設定並編輯:
cp config.json.example config.json,然後調整攝影機裝置、解析度、幀率、SMTP、Telegram 等。 - 執行應用程式:
./venv/bin/python -m cheapsecurity.app。 - 在瀏覽器開啟儀表板:
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.json 的 telegram 區段。
- 向 @BotFather 發訊息,送出
/newbot,並複製產生的機器人令牌。 - 與該機器人開始聊天,發送任意訊息,然後查詢
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates以尋找聊天 ID(在chat物件內尋找 `