Licență IGPR nr. 7092/T office@southwest.ro 0765058764

Raspberry Pi ca NVR mic pentru camere IP, cu motionEye

Raspberry Pi într-o carcasă transparentă, două camere de supraveghere și un monitor cu imagini de noapte

Un Raspberry Pi nu înlocuiește un NVR Dahua sau Hikvision într-o instalație serioasă. Dar pentru o casă de vacanță, un garaj sau două camere la poartă, un Pi 4 sau Pi 5 cu motionEye face treaba onorabil, consumă câțiva wați și vă învață destul de multe despre cum funcționează de fapt înregistrarea video. Am montat câteva astfel de sisteme, mai ales ca soluție provizorie sau pentru clienți care voiau să experimenteze singuri.

Ce urmează e o instalare pe Raspberry Pi OS bazat pe Debian 13 (Trixie), cu camere IP existente, prin RTSP.

De ce aveți nevoie

  • Raspberry Pi 4 cu minimum 2 GB RAM sau, mai bine, un Pi 5;
  • sursă oficială de alimentare. Sursele de telefon „de 3 A” sunt cauza numărul unu pentru Pi-uri care se resetează aiurea;
  • card microSD de calitate pentru sistem și un SSD sau HDD pe USB pentru înregistrări. Nu înregistrați video pe card, îl veți omorî în câteva luni;
  • conexiune pe cablu. Wi-Fi-ul pentru câteva fluxuri video în paralel nu e o idee bună;
  • camerele IP, cu adresă fixă și fluxul RTSP activ.

Sistemul de operare

Cu Raspberry Pi Imager scrieți pe card „Raspberry Pi OS Lite (64-bit)”. Nu aveți nevoie de interfață grafică, totul se configurează din browser. În Imager, la opțiunile de personalizare, setați numele de utilizator, parola, fusul orar și activați SSH. Apoi conectați-vă:

ssh admin@192.168.1.50

Prima comandă e mereu aceeași:

sudo apt update && sudo apt full-upgrade -y

Instalarea motionEye

Versiunile actuale de motionEye rulează pe Python 3 și se instalează cu pip. Debian 13 blochează implicit instalarea pachetelor pip la nivel de sistem (mesajul „externally-managed-environment”), așa că trebuie permis explicit. Pe un Pi dedicat doar acestui rol, e acceptabil:

sudo apt install python3-pip -y
grep -q '\[global\]' /etc/pip.conf 2>/dev/null || printf '[global]\n' | sudo tee -a /etc/pip.conf >/dev/null
sudo sed -i '/^\[global\]/a break-system-packages=true' /etc/pip.conf
sudo python3 -m pip install motioneye
sudo motioneye_init

motioneye_init instalează dependențele (inclusiv motion și ffmpeg), creează serviciul systemd și pornește interfața. Verificați:

systemctl status motioneye

Interfața e la http://IP-ul-Pi-ului:8765. Utilizatorul implicit e admin, fără parolă. Primul lucru pe care îl faceți e să setați parolă, din General Settings, pentru admin și pentru utilizatorul „user” (cel cu drept doar de vizualizare).

Discul pentru înregistrări

Conectați SSD-ul, aflați-i UUID-ul și montați-l permanent:

lsblk -f
sudo mkdir -p /mnt/inregistrari
sudo nano /etc/fstab

În fstab adăugați o linie de forma (cu UUID-ul vostru și ext4 ca sistem de fișiere):

UUID=xxxx-xxxx  /mnt/inregistrari  ext4  defaults,noatime,nofail  0  2

Opțiunea nofail contează: dacă discul lipsește, Pi-ul pornește totuși și nu rămâne blocat la boot. Apoi sudo mount -a și verificați cu df -h.

Adăugarea camerelor

În interfață, din meniul de camere alegeți add camera..., tipul Network Camera și introduceți URL-ul RTSP. Pentru cele două mărci pe care le montăm cel mai des, formatele sunt:

# Dahua, substream (canalul 1)
rtsp://utilizator:parola@192.168.1.64:554/cam/realmonitor?channel=1&subtype=1

# Hikvision, substream (canalul 1)
rtsp://utilizator:parola@192.168.1.65:554/Streaming/Channels/102

Folosiți substream-ul. Pi-ul analizează fiecare cadru pentru detecția de mișcare, iar la 4 MP pe mainstream, cu două-trei camere, procesorul ajunge repede la limită. Setați substream-ul din camera însăși la 640x480 sau 704x576, 10-12 cadre pe secundă, H.264. Pentru H.265, verificați întâi că totul merge, fiindcă decodarea pe Pi e mai grea.

O recomandare de securitate: creați în cameră un utilizator separat, doar cu drept de vizualizare, pentru motionEye. Nu puneți parola de admin a camerei în URL.

Detecția de mișcare, fără nebunii

La Motion Detection sunt câteva setări care fac diferența între un sistem util și unul care vă trimite 300 de alerte pe zi:

  • Frame Change Threshold: porniți de la 2-3% și ajustați după o zi de test;
  • Auto Noise Detection: activat, ajută noaptea, când imaginea are mult zgomot;
  • Light Switch Detection: ignoră schimbările bruște de lumină (farurile unei mașini, aprinderea unui bec);
  • Mask: desenați o mască peste copacii care se mișcă în vânt și peste stradă, dacă nu vă interesează.

Fiți realiști, totuși: motionEye detectează mișcare de pixeli, nu oameni. O pisică, o umbră sau ploaia puternică vor declanșa alerte. Dacă vreți detecție de persoane și vehicule, e alt nivel, cu alte unelte.

La Movies setați păstrarea înregistrărilor (de exemplu 14 zile) și calea pe /mnt/inregistrari, ca discul să nu se umple niciodată complet.

Acces din afara casei

Nu deschideți portul 8765 în router spre internet. Am văzut sisteme de felul acesta găsite de scanere automate în câteva zile. Varianta corectă e un VPN: WireGuard pe router, dacă îl suportă, sau pe un alt dispozitiv din rețea. Vă conectați întâi la VPN de pe telefon, apoi deschideți interfața ca și cum ați fi acasă.

Și, ca la orice sistem de supraveghere, nu filmați curtea vecinului sau trotuarul mai mult decât e necesar. Camera trebuie să vă acopere proprietatea, nu strada.