Ring, Nest Cam, Arlo – każdy z tych systemów pobiera 8–30 dolarów miesięcznie za możliwość przeglądania nagrań sprzed doby. Twoje nagrania trafiają na serwery Amazon, Google i innych gigantów. Czy naprawdę chcesz, żeby obcy serwer wiedział, o której wychodzisz do pracy?
Dobra wiadomość: za jednorazowy koszt sprzętu (200–400 zł) możesz zbudować system, który nigdy nie wysyła danych poza dom, przechowuje nagrania lokalnie i działa nawet bez internetu.
| Komponent | Rekomendacja | Cena |
|---|---|---|
| Komputer | Raspberry Pi 4 (4 GB) lub Pi 5 (4 GB) | ~280–380 zł |
| Karta pamięci | microSD 32 GB (klasa A2) lub SSD przez USB | ~30–80 zł |
| Kamera IP | TP-Link Tapo C310 / Reolink 810A / ESP32-CAM | ~80–250 zł |
| Dysk na nagrania | HDD USB 1 TB (opcjonalnie) | ~150 zł |
| Zasilanie | Oficjalny zasilacz Pi 27W (USB-C) | ~80 zł |
Frigate to otwartoźródłowy serwer NVR z wbudowaną detekcją obiektów. Działa jako kontener Docker i integruje się z Home Assistant, dając pełny system inteligentnego domu.
# Zainstaluj Docker na Raspberry Pi OS
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Utwórz katalog projektu
mkdir ~/frigate && cd ~/frigate
nano docker-compose.yml
version: "3.9"
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:stable
privileged: true
restart: unless-stopped
ports:
- "5000:5000" # Web UI
- "8554:8554" # RTSP
volumes:
- ./config:/config
- ./storage:/media/frigate
- /etc/localtime:/etc/localtime:ro
environment:
FRIGATE_RTSP_PASSWORD: "twoje_haslo"
# Plik config/config.yml
mqtt:
enabled: false
cameras:
kamera_wejscie:
ffmpeg:
inputs:
- path: rtsp://admin:twoje_haslo@192.168.1.100:554/stream1
roles:
- detect
- record
detect:
enabled: true
width: 1280
height: 720
fps: 5
record:
enabled: true
retain:
days: 7
mode: motion
snapshots:
enabled: true
retain:
default: 14
objects:
track:
- person
- car
- dog
detectors:
cpu1:
type: cpu
num_threads: 3
# Uruchomienie
docker compose up -d
# Sprawdź logi
docker compose logs -f frigate
Po 2–3 minutach otwórz w przeglądarce http://adres-raspberry-pi:5000 – zobaczysz panel Frigate z podglądem na żywo i zdarzeniami.
type: edgetpu.# W Home Assistant (jeśli masz) dodaj automatyzację:
# Trigger: Frigate event (person detected)
# Action: Telegram notification z załączonym zdjęciem
Jeśli nie chcesz Home Assistant i wolisz prosty skrypt Pythona, to podejście jest dla Ciebie. Idealne dla ESP32-CAM lub zwykłej kamery USB.
sudo apt update && sudo apt install -y python3-pip python3-venv git
python3 -m venv ~/ai-kamera
source ~/ai-kamera/bin/activate
pip install ultralytics opencv-python-headless requests
from ultralytics import YOLO
import cv2, time, requests, os
from datetime import datetime
MODEL = YOLO("yolov8n.pt") # nano – najszybszy
RTSP_URL = "rtsp://admin:haslo@192.168.1.100:554/stream1"
TELEGRAM_TOKEN = os.getenv("TG_TOKEN", "")
TELEGRAM_CHAT = os.getenv("TG_CHAT", "")
SNOOZE_SEC = 30 # pauza między powiadomieniami
cap = cv2.VideoCapture(RTSP_URL)
last_alert = 0
CLASSES_WATCHED = {"person", "car", "dog"}
def wyslij_telegram(img_path: str, etykiety: list):
if not TELEGRAM_TOKEN:
return
tekst = "🚨 Wykryto: " + ", ".join(etykiety)
with open(img_path, "rb") as f:
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendPhoto",
data={"chat_id": TELEGRAM_CHAT, "caption": tekst},
files={"photo": f},
timeout=10
)
print("Kamera AI uruchomiona…")
while True:
ret, frame = cap.read()
if not ret:
cap = cv2.VideoCapture(RTSP_URL)
time.sleep(1)
continue
wyniki = MODEL(frame, conf=0.45, verbose=False)[0]
etykiety = [MODEL.names[int(b.cls)] for b in wyniki.boxes
if MODEL.names[int(b.cls)] in CLASSES_WATCHED]
if etykiety and (time.time() - last_alert > SNOOZE_SEC):
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
sciezka = f"/tmp/alert_{ts}.jpg"
cv2.imwrite(sciezka, wyniki.plot())
wyslij_telegram(sciezka, list(set(etykiety)))
last_alert = time.time()
print(f"Alert: {etykiety}")
time.sleep(0.2)
# Autostart przy starcie systemu
crontab -e
# Dodaj linię:
@reboot source /home/pi/ai-kamera/bin/activate && python /home/pi/detector.py &
| Cecha | Frigate NVR | Python + YOLOv8 |
|---|---|---|
| Trudność instalacji | Średnia (Docker) | Niska (jeden skrypt) |
| Interfejs webowy | ✅ Wbudowany | ❌ Brak (możesz dodać) |
| Nagrywanie ciągłe | ✅ Wbudowane | ⚠️ Trzeba dopisać |
| Integracja z HA | ✅ Natywna | ⚠️ Przez MQTT |
| Obsługiwanych kamer | Wiele jednocześnie | Jedna (rozszerzalne) |
| Zużycie RAM (Pi 4) | ~600 MB | ~300 MB |
| Szybkość detekcji (CPU) | ~3–5 kl/s | ~2–4 kl/s |
| Personalizacja | Przez YAML | Pełna (kod Python) |
| System lokalny (jednorazowo) | Ring/Nest (miesięcznie) | |
|---|---|---|
| Koszt rok 1 | ~500 zł (sprzęt) | ~360–720 zł abonament |
| Koszt rok 2+ | ~0 zł + prąd (~15 zł/m) | ~360–720 zł/rok |
| Prywatność | ✅ Dane tylko u Ciebie | ❌ Na serwerach korporacji |
| Działanie bez internetu | ✅ Tak | ❌ Nie |
Przy 2 latach użytkowania, system lokalny jest tańszy nawet uwzględniając koszt prądu (Pi 4 = ok. 5W = ~2 zł/miesiąc).