← Späť na blog

Lokálny AI kamerový systém na Orange Pi 5: Frigate bez cloudu a bez mesačných poplatkov

27. júla 2026 · 12 min čítania

homelabself-hosted

Praktický návod postavený na reálnej, dlhodobo bežiacej prevádzke — nie na víkendovom experimente.

Prečo tento projekt vznikol

Tento systém nevznikol ako technologická hračka ani ako experiment s umelou inteligenciou. Vznikol z praktickej potreby — mať doma prehľad o dianí okolo domu, bez závislosti na cloude, bez mesačných poplatkov a s plnou kontrolou nad vlastnými dátami.

Prvé pokusy prebiehali na klasickom PC bez hardvérovej AI akcelerácie. Systém fungoval, ale v praxi to znamenalo vysokú a neustálu záťaž CPU, kolísanie výkonu pri vyššej aktivite, hlučnosť a nepredvídateľné správanie. AI detekcia bežiaca výlučne na CPU môže fungovať v testovacom prostredí, ale v dlhodobej prevádzke ide o neefektívne riešenie.

Skutočný rozdiel nastal až s Orange Pi 5 a jeho čipom RK3588, ktorý má integrovanú NPU (Neural Processing Unit). Presunutie AI inferencie mimo CPU prinieslo stabilné inference časy, výrazne nižšiu záťaž procesora, nižšie teploty a predvídateľné správanie — presne to, čo systém určený na nepretržitú prevádzku potrebuje.

Orange Pi 5 nebol vybraný kvôli marketingu, ale kvôli RK3588 čipu, integrovanej NPU, dostupnej hardvérovej akcelerácii videa, podpore vendor kernelu a rozumnej cene. Kombinácia Orange Pi 5 + Frigate + rknn detektora sa v reálnej prevádzke ukázala ako veľmi efektívna — nie kompromisné riešenie, ale praktický základ pre lokálny AI systém.

Cieľom tohto textu nie je ukázať „čo všetko sa dá nastaviť". Je to skôr sprievodca tým, ako postaviť systém, ktorý funguje stabilne, má výkonovú rezervu, nevyžaduje každodenný zásah a dá sa jednoducho obnoviť zo zálohy. AI je nástroj. Stabilita je cieľ.

Referenčný systém

  • Orange Pi 5, 8 GB RAM, 128 GB SD karta (OS + Frigate)
  • 5 IP kamier (4× Hikvision, 1× iná značka) — 4× 2560×1440, 1× 1920×1080, 8 FPS
  • Frigate v Dockeri, rknn detektor (RK3588 NPU)
  • priemerný inference čas ~23 ms, CPU záťaž 22–31 %
  • stabilná 24/7 prevádzka

Maximálne zaťaženie s 8 kamerami nebolo testované, keďže na zariadení bežia aj ďalšie služby. Na základe aktuálneho využitia zdrojov je však veľmi pravdepodobné, že systém by zvládol 7–8 kamier, pokiaľ by nebežalo výrazne viac ďalších procesov. Cieľom ale nie je dostať systém na hranicu výkonu — cieľom je mať rezervu.

Frigate live view — 5 kamier naraz

Orientačné náklady: Orange Pi 5 8GB (~120-150 €), SD karta 128GB (~15-25 €), voliteľne NVMe disk (~40-80 €) alebo externý HDD/SSD (~50-120 €). Celý systém sa dá postaviť približne za 150 až 250 €. Veľa ľudí má navyše doma vhodné disky zo starších zariadení (SSD z notebooku, NVMe zo starého PC) — netreba kupovať všetko nové.

Hardvér: rozumný základ namiesto extrémov

Hardvér je základ celého systému. Ak je poddimenzovaný, systém bude nestabilný. Ak je zbytočne predimenzovaný, bude drahý a neefektívny.

Rozhodujúcim faktorom nebola vysoká taktovacia frekvencia CPU, ale prítomnosť NPU. RK3588 obsahuje 8-jadrový CPU, VPU (hardvérové dekódovanie videa), GPU a NPU. Pre Frigate je kľúčová práve NPU — bez nej AI detekcia beží na CPU, výkon kolíše a systém sa správa nepredvídateľne. S NPU je inferencia oddelená od CPU, inference časy sú stabilné a CPU má rezervu na všetko ostatné.

8 GB RAM je pre 5–8 kamier plne postačujúcich, pokiaľ systém beží bez grafického rozhrania, na minimálnom OS, s Frigate izolovaným v Dockeri a bez zbytočných služieb. Vyššia kapacita RAM má zmysel až pri výrazne vyššom počte kamier alebo väčšom množstve ďalších služieb bežiacich na tom istom zariadení.

Napájanie

Krátka poznámka na záver hardvérovej časti: neignoruj kvalitu napájacieho adaptéra. Odporúčam poriadny 5,1V/5A (27W) USB-C PD zdroj (rovnaký typ ako oficiálny Raspberry Pi 27W adaptér), nie lacný univerzálny nabíjačkový. Prečo to takto zdôrazňujem a čo presne sa mi kvôli slabému adaptéru stalo, si rozoberiem v samostatnom článku.

RTSP a rozdiely medzi značkami kamier

Každá značka kamier používa odlišnú RTSP cestu — toto je jeden z najčastejších zdrojov problémov pri nasadení.

# Hikvision
rtsp://USER:HESLO@IP_KAMERY:554/Streaming/Channels/101

# Dahua a kompatibilné
rtsp://USER:HESLO@IP_KAMERY:554/cam/realmonitor?channel=1&subtype=0

# jednoduchší formát (rôzne značky)
rtsp://IP_KAMERY/ch0_0.h264

Hikvision a Dahua sa v praxi správajú stabilne a predvídateľne. Reolink má často odlišné správanie RTSP a môže byť problematickejší. Pri menej štandardných značkách treba počítať s viac testovania.

Pred konfiguráciou vo Frigate vždy najprv otestuj stream vo VLC. Ak stream nefunguje vo VLC, nebude fungovať ani vo Frigate — a je to najrýchlejší spôsob diagnostiky.

Prečo main stream, 1440p a 8 FPS

Mnohé návody odporúčajú pre AI detekciu používať sub stream (nižšia kvalita, nižšia záťaž). V tomto systéme sa zámerne používa main stream — vďaka NPU a hardvérovej akcelerácii nie je dôvod znižovať kvalitu obrazu kvôli výkonu, a výsledkom sú kvalitnejšie snapshoty, presnejšia detekcia a lepší základ pre prípadné rozšírenia (napr. rozpoznávanie ŠPZ).

1440p poskytuje dostatok detailov pre AI detekciu aj kvalitné snapshoty. 8 FPS je pre detekciu osôb a vozidiel plne postačujúcich — vyššie FPS zvyšuje dátový tok a záťaž, bez toho aby prinášalo dramaticky lepšiu detekciu.

Odporúčaný kodek je H.264 — stabilnejšia HW akcelerácia, lepšia kompatibilita, menej problémov. H.265 funguje, ale môže byť citlivejší na konfiguráciu a mierne zvýšiť záťaž.

Operačný systém: Armbian, vendor kernel

Systém beží na Armbian (Debian) s vendor kernelom — nie mainline. Mainline kernel je vhodný na vývoj a experimentovanie, ale na RK3588 môže mať neúplnú podporu NPU a obmedzenú hardvérovú akceleráciu videa. Vendor kernel obsahuje špecifické úpravy pre RK3588, má lepšiu podporu NPU a je stabilnejší pre produkčné nasadenie. Stabilita má prednosť pred najnovšou verziou jadra.

Odporúča sa Armbian minimal image — bez grafického rozhrania, bez zbytočných služieb, nižšia spotreba RAM. Tento systém nie je určený na prácu priamo na monitore, ale na bežanie na pozadí.

Po prvom prihlásení (SSH, vyzve na zmenu hesla a vytvorenie bežného používateľa) nasleduje bežná aktualizácia:

sudo apt update
sudo apt upgrade -y

Najčastejšie chyby po inštalácii: prepnutie na mainline kernel bez dôvodu, inštalácia grafického prostredia „pre istotu", používanie nightly buildov. Ak systém funguje, nechaj ho tak — zásahy bez dôvodu sú častým zdrojom nestability. To platí aj pre teplotu: nie je to cieľový parameter, je to dôsledok záťaže. Najprv rieš konfiguráciu, až potom prípadné chladenie.

Docker a nasadenie Frigate

Frigate beží ako Docker kontajner — nie ako „moderný doplnok", ale ako nástroj, ktorý výrazne zvyšuje stabilitu a udržiavateľnosť. Manuálna inštalácia priamo do systému by znamenala riešenie závislostí, konflikty knižníc a komplikované aktualizácie. V Dockeri sa dá kontajner pri probléme jednoducho reštartovať alebo konfigurácia obnoviť, bez toho aby to narušilo zvyšok systému.

sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker $USER
# odhlás sa a znovu prihlás cez SSH

Projektová štruktúra:

opi-frigate/
├── docker-compose.yml
└── config/
    └── config.yml

docker-compose.yml (produkčný príklad pre RK3588)

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable-rk
    privileged: true
    restart: unless-stopped
    shm_size: "2gb"
    ports:
      - "5000:5000"
    environment:
      TZ: Europe/Bratislava
    security_opt:
      - apparmor:unconfined
      - systempaths=unconfined
    devices:
      - /dev/dri:/dev/dri
      - /dev/dma_heap:/dev/dma_heap
      - /dev/rga:/dev/rga
      - /dev/mpp_service:/dev/mpp_service
    volumes:
      - ./config:/config
      - /media/frigate:/media/frigate
      - /sys/:/sys/:ro
    tmpfs:
      - /tmp/cache:size=1000000000

Kľúčová je sekcia devices — mapovanie zariadení potrebných pre hardvérovú akceleráciu videa a NPU inferenciu. Bez nich môže inferencia skončiť na CPU s výrazne nižším výkonom. Port 5000 necháva systém ako štandardný lokálny prístup — neodporúča sa vystavovať priamo na internet (viď sekcia o vzdialenom prístupe nižšie).

docker compose up -d
docker compose ps      # over stav — má byť "running"
docker logs -f frigate # logy sú prvý zdroj informácií pri probléme

config.yml — minimálna funkčná konfigurácia (1 kamera)

Najčastejšia chyba na začiatku je pridať naraz 5 kamier, riešiť zóny, masky a notifikácie skôr, než systém vôbec funguje. Správny postup: 1 kamera → over NPU a stabilnú detekciu → až potom rozšírenie.

mqtt:
  enabled: false

detectors:
  rknn:
    type: rknn
    num_cores: 3

model:
  path: frigate-fp16-yolov9-t
  model_type: yolo-generic
  width: 320
  height: 320
  input_tensor: nhwc
  input_pixel_format: bgr

ffmpeg:
  hwaccel_args: preset-rk-h264

objects:
  track:
    - person
    - car

cameras:
  cam1:
    ffmpeg:
      inputs:
        - path: rtsp://USER:HESLO@IP_KAMERY:554/Streaming/Channels/101
          roles: [detect]
    detect:
      width: 2560
      height: 1440
      fps: 8

Sekcia detectors: rknn zabezpečuje, že inferencia neprebieha na CPU — ak je nesprávne nastavená, inference bude vysoká a CPU preťažené. Rovnako dôležitý je riadok hwaccel_args: preset-rk-h264 — bez neho bude dekódovanie videa prebiehať na CPU namiesto hardvérovej akcelerácie.

Po overení, že jedna kamera funguje stabilne a NPU je aktívna, sa dajú pridávať ďalšie — vždy po jednej, so sledovaním logov a inference po každej zmene. YAML odsadenie je pri tom kritické; jedna zlá medzera dokáže spôsobiť, že kontajner vôbec nenabehne.

Zóny a masky: ako z Frigate spraviť použiteľný systém

Toto je podľa mňa najdôležitejšia časť celého nastavenia — a zároveň tá, ktorú väčšina návodov odbije jednou vetou.

Keď Frigate beží stabilne a detekcia funguje, veľmi rýchlo zistíš jednu vec: nie všetko, čo sa hýbe, je dôležité. Bez správne nastavených zón a masiek sa systém stane príliš hlučným, zahlteným udalosťami a prakticky nepoužiteľným. AI detekcia sama o sebe nestačí — systém potrebuje kontext.

Zóna určuje, v ktorej časti obrazu má detekcia zmysel — odpovedá na otázku „ak sa tu niečo pohne, chcem o tom vedieť?". Bez zón je každé auto na ceste udalosť, každý človek na chodníku je detekcia a systém generuje množstvo zbytočných notifikácií. Správne nastavené zóny výrazne znížia počet udalostí a zvýšia ich relevantnosť. Zóny sa najlepšie vytvárajú priamo vo Frigate UI (vyber kameru → editor zón → zakresli oblasť → ulož). Pravidlo: jedna zóna = jeden význam (napr. „brána", nie „brána + cesta + dvor"), jednoduchý tvar je lepší než extrémne presný.

Masky naopak definujú oblasti, kde sa detekcia nemá vykonávať vôbec — typicky stromy hýbajúce sa vo vetre, rušné cesty mimo záujmu, reflexné plochy. Znižujú falošné poplachy a šetria výkon. Najčastejšia chyba je maskovať veľké plochy „pre istotu" — správnejší postup je nechať systém najprv bežať bez masiek, sledovať kde vznikajú falošné detekcie, a maskovať len problémové miesta.

V reálnom používaní najväčší posun neprinesie výkon ani lepší model. Prinesú ho práve zóny.

Ako spoznať, že systém je v poriadku

Pri SBC riešeniach má veľa ľudí tendenciu sledovať každý graf, každé percento CPU a každú zmenu teploty. V praxi je dôležitejšie vedieť čo sledovať, čo ignorovať a kedy má zmysel zasiahnuť. Stabilita nie je o maximálnych číslach — je o predvídateľnosti.

Základné informácie nájdeš priamo vo Frigate UI:

  • Inference čas — najdôležitejší parameter. Referenčný systém drží ~23 ms, normálne pásmo je 20–40 ms. Dlhodobo nad 80–100 ms alebo postupný nárast v čase znamená problém — najčastejšie neaktívnu NPU, chybu v konfigurácii alebo príliš veľa kamier/vysoké FPS.
  • CPU záťaž — pri správnej konfigurácii CPU nerieši AI inferenciu, len dekóduje video (s HW akceleráciou) a riadi systém. Referenčný systém drží 22–31 %. Krátkodobé špičky pri štarte kontajnera alebo nárazovej aktivite sú normálne; problém nastáva pri dlhodobom vyťažení nad 70–80 %.
  • Teplota — dôsledok, nie cieľ. Ak CPU nie je dlhodobo preťažené a inferencia beží na NPU, teploty zostávajú v rozumných medziach aj bez extrémneho chladenia.

Zdravý systém má stabilné inference časy, CPU má rezervu, kontajner sa nereštartuje a zvláda nárazovú aktivitu bez spomalenia. Zásah má zmysel, ak inference dlhodobo rastie, CPU je neustále vysoko vyťažené, alebo sa kontajner reštartuje. Mierne kolísanie grafov je normálne — nestabilita nie.

Frigate stats panel — inference, CPU, GPU/NPU záťaž

Snapshoty vs. nonstop nahrávanie

V reálnej prevádzke sa ukázalo, že snapshoty sú najpoužiteľnejší výstup z celého systému — vznikne v momente detekcie, poskytuje okamžitý prehľad, nezaberá veľa miesta a dá sa jednoducho archivovať. 90 % udalostí sa rieši v ten istý deň; staré záznamy sa väčšinou neprezerajú, takže dlhá retencia videa je zväčša zbytočná záťaž na úložisko.

Ak máš samostatný NVR, nechaj ho nahrávať nonstop a Frigate používaj len na AI detekciu a snapshoty — systémy sa navzájom nerušia. Ak NVR nemáš, Frigate môže nahrávať aj video, ale odporúča sa nahrávať len pri detekcii, nie nonstop, s rozumnou retenciou (napr. snapshoty 1 deň, krátka retencia klipov).

Pre úložisko platí podobný princíp ako pri OS: operačný systém na SD karte, záznamy/cache ideálne na NVMe alebo externom disku — znižuje to opotrebenie SD karty a zvyšuje I/O výkon.

Frigate — zoznam detekcií, filter Person

Frigate — zoznam detekcií, filter Car (ŠPZ v badgeoch prekrytá)

Zálohy: „svätý pokoj"

Veľa funkčných systémov skončí nie preto, že by boli zlé, ale preto, že sa časom niečo pokazí a neexistuje bod návratu. Správny moment na zálohu je vtedy, keď Frigate beží, detekcie fungujú a systém je stabilný — nie po experimente alebo keď je už niečo rozbité.

Existujú dve úrovne:

  1. Záloha konfigurácie (minimum) — docker-compose.yml, config.yml, prípadné skripty. Umožní rýchle obnovenie alebo migráciu na iné zariadenie.
  2. Bitová kópia celej SD karty (odporúčané) — najbezpečnejší spôsob, okamžitý návrat do funkčného stavu bez rekonfigurácie.
# zisti zariadenie
lsblk

# vytvor zálohu (POZOR: zlé zariadenie môže prepísať iný disk)
sudo dd if=/dev/sdX of=opi_backup.img bs=4M status=progress

# obnova
sudo dd if=opi_backup.img of=/dev/sdX bs=4M status=progress

Nie je potrebné zálohovať každý týždeň — stačí mať jeden stabilný bod návratu po prvom úspešnom nastavení alebo po väčšej zmene konfigurácie. A ak systém funguje, neaktualizuj bez dôvodu — stabilita má prednosť pred novinkami.

Najčastejšie chyby

Zhrnutie toho, čo v praxi najčastejšie spôsobuje problémy:

  1. NPU nebeží, inference je príliš vysoká — skontroluj sekciu detectors v config.yml, over že používaš vendor kernel a že máš správne mapovanie zariadení v docker-compose.yml.
  2. Mainline kernel bez dôvodu — drž sa vendor kernelu, pokiaľ nemáš konkrétny dôvod experimentovať.
  3. Príliš vysoké FPS — 8 FPS je pre väčšinu scenárov plne postačujúcich.
  4. H.265 bez potreby — ak má kamera možnosť výberu, používaj H.264.
  5. Nesprávna RTSP cesta — otestuj vždy najprv vo VLC.
  6. Chyba v odsadení YAML — používaj konzistentné medzery, nikdy tabulátory.
  7. Pridanie viacerých kamier naraz — pridávaj po jednej a sleduj logy po každej zmene.
  8. Aktualizácia bez zálohy — pred väčšou zmenou vždy zálohuj aspoň konfiguráciu.
  9. Riešenie teplôt namiesto konfigurácie — chladenie rieši dôsledok, nie príčinu zlej konfigurácie.
  10. Ignorovanie logovdocker logs -f frigate je prvý a najdôležitejší zdroj informácií. Najprv čítaj, potom upravuj.

Vzdialený prístup

Frigate je v tomto nastavení dostupný len v lokálnej sieti (http://IP_ADRESA:5000). Vystavovanie portu priamo na internet sa neodporúča. Pre prístup mimo domu je bezpečnejšie použiť VPN (napr. WireGuard) — nízka záťaž, rýchle a spoľahlivé riešenie aj na SBC zariadeniach.

Frigate sa dá tiež integrovať s Home Assistant — push notifikácie s náhľadom, automatizácie (napr. spustenie svetiel pri detekcii osoby), prepojenie s ďalšími zariadeniami. Nie je to nutné pre základné fungovanie, je to rozšírenie pre pokročilejších používateľov.

Právne upozornenie

Kamerový systém je určený na ochranu majetku a bezpečnosti, nie na neoprávnené sledovanie osôb. Pri prevádzke kamerového systému je potrebné dodržiavať zákony o ochrane osobných údajov (GDPR), právo na súkromie a povinnosť informovať o monitorovaní priestoru. Pri použití rozšírených funkcií ako rozpoznávanie tvárí, ŠPZ alebo audio detekcia je potrebné o to viac rešpektovať miestnu legislatívu. Za spôsob použitia systému nesie plnú zodpovednosť ten, kto ho prevádzkuje.

Záver

Referenčný systém — 5 kamier, 1440p + 1080p, 8 FPS, rknn detektor — beží stabilne 24/7, s inference časom okolo 23 ms a CPU záťažou 22–31 %. To je dôkaz, že Orange Pi 5 je schopný spoľahlivého lokálneho AI kamerového systému bez cloudu a bez mesačných poplatkov.

Cieľom nebolo vytvoriť najkomplexnejší návod na Frigate. Cieľom bolo ukázať, ako postaviť systém, ktorý funguje, má rezervu, generuje relevantné udalosti a nevyžaduje každodennú kontrolu. Ak systém po čase prestaneš vnímať ako niečo, čo treba riešiť, splnil svoj účel — technika má prinášať pokoj, nie ďalšiu starosť.

Riešite podobný problém?

Toto je presne typ práce, ktorú riešim aj pre iných — Linux servery, Docker nasadenia, zálohovanie a bezpečné nastavenie prístupu.

Pozrieť Linux & Docker služby