Kamera CSI na Raspberry Pi, MediaMTX jako serwer RTSP i podłączenie obrazu do Home Assistant. Całość działa automatycznie po starcie systemu. Metoda opisana tu jest prostsza niż w wielu starszych poradnikach — MediaMTX potrafi dziś przechwytywać obraz z kamery natywnie, bez osobnego procesu ffmpeg po drodze.
Co musisz mieć
| element | uwagi |
|---|---|
| Raspberry Pi z Raspberry Pi OS | Bullseye lub nowszy; ten przewodnik zakłada Bookworm (aktualne nazwy komend) |
| Kamera CSI (np. OV5647, Camera Module v1/v2/v3) | podłączona do złącza CSI, wykrywana przez system |
| Home Assistant w tej samej sieci | obraz trafi tam jako kamera przez RTSP |
| Połączenie SSH z Raspberry Pi | cała konfiguracja robiona zdalnie, bez monitora |
Sprawdzenie kamery
Upewnij się, że kamera jest poprawnie podłączona i wykrywana. Od Raspberry Pi OS Bookworm narzędzia libcamera-* nazywają się rpicam-* (stare nazwy wciąż działają jako dowiązania symboliczne, ale są przestarzałe — warto od razu przyzwyczaić się do nowych):
Jeśli widzisz podgląd (w oknie na pulpicie albo w logu bez błędów), kamera działa poprawnie.
MediaMTX metoda zalecana
MediaMTX (dawniej rtsp-simple-server) to lekki serwer RTSP/RTMP/HLS/WebRTC. Ma wbudowaną, natywną obsługę kamery Raspberry Pi — nie trzeba osobno uruchamiać rpicam-vid i przepychać obrazu przez ffmpeg. Wystarczy jeden serwis.
1. Pobierz najnowszą wersję
Projekt żyje na GitHubie jako bluenviron/mediamtx — nie z linków-mirrorów, które łatwo się dezaktualizują. Poniższy fragment sam dociąga aktualny numer wydania:
2. Konfiguracja — źródło natywne rpiCamera
Edytuj ~/mediamtx.yml i w sekcji paths dodaj ścieżkę ze źródłem rpiCamera. To ono każe MediaMTX samemu otworzyć kamerę przez libcamera — bez pośredników:
Wymagania: Raspberry Pi OS Bullseye lub nowszy, pakiet libcamera0 w wersji co najmniej 0.0.2 (na aktualnym Bookworm jest to spełnione domyślnie). Działa zarówno na systemie 32-, jak i 64-bitowym.
3. Serwis systemd
Jeden serwis wystarczy — MediaMTX sam zarządza kamerą, więc nie potrzeba drugiej usługi do przechwytywania obrazu:
Strumień jest teraz dostępny pod rtsp://<IP-Raspberry-Pi>:8554/cam — sprawdź w VLC (Media → Otwórz strumień sieciowy) zanim przejdziesz do Home Assistant.
Ręczny pipeline gdy potrzebujesz więcej kontroli
Jeśli natywne źródło rpiCamera z jakiegoś powodu nie wystarcza (np. własny kodek, dodatkowe filtry wideo, albo MediaMTX działa na innej maszynie niż kamera), można spiąć rpicam-vid z MediaMTX ręcznie przez drugi serwis. To starsza, bardziej złożona metoda — zostaw ją na wypadek, gdy metoda natywna faktycznie nie pasuje.
W mediamtx.yml ścieżka przyjmuje wtedy dowolnego publishera:
Uwaga: komenda bazowa to dziś rpicam-vid, nie libcamera-vid — ta druga jest na Bookworm przestarzała (choć wciąż działa jako alias).
Podłączenie do Home Assistant
Zalecana dziś droga to integracja Generic Camera skonfigurowana z poziomu UI — nie wymaga edycji YAML.
Ustawienia → Urządzenia i usługi → Dodaj integrację → „Kamera ogólna" (Generic Camera). W polu Stream Source URL wpisz rtsp://<IP-Raspberry-Pi>:8554/cam. Pole „Still Image URL" możesz zostawić puste — Home Assistant wyciągnie klatkę ze strumienia, o ile masz włączoną integrację stream (domyślnie jest).
Metoda YAML wciąż działa, jeśli już jej używasz. Platforma camera.ffmpeg nie została formalnie wycofana, ale to starszy, mniej wygodny sposób — nowe instalacje warto od razu robić przez UI:
Po dodaniu integracji kamera pojawi się jako encja camera.kamera_pi (lub podobna, wg wybranej nazwy) — możesz dodać ją do dashboardu jako kartę typu „Kamera" lub „Obraz".
Tryb nocny (opcjonalnie)
Aby poprawić widoczność w nocy, potrzebujesz kamery NoIR (bez filtra podczerwieni) i diod IR LED (850 nm) skierowanych na obserwowany obszar.
Ekspozycję i wzmocnienie ustawisz bezpośrednio w mediamtx.yml przy metodzie natywnej:
Przy metodzie ręcznej to te same wartości podane jako flagi --shutter 20000 --gain 8 dopisane do komendy rpicam-vid w usłudze camera-stream.service.
Co poprawiłem względem pierwszej wersji notatek
Ten artykuł zaczynał się jako prywatna notatka. Przed publikacją zweryfikowałem go źródłowo i poprawiłem kilka rzeczy, które w oryginale były już nieaktualne lub niepotrzebnie skomplikowane.
- Nazwy komend: libcamera-vid/libcamera-hello zastąpiono aktualnymi rpicam-vid/rpicam-hello — zmiana nazewnictwa nastąpiła wraz z Raspberry Pi OS Bookworm.
- Źródło pobrania MediaMTX: zamiast linku do mirrora na SourceForge (nieoficjalne, łatwo się dezaktualizuje) — oficjalne wydania z GitHuba, pobierane automatycznie w najnowszej wersji.
- Uproszczenie architektury: zamiast dwóch serwisów systemd (MediaMTX + osobny rpicam-vid pipe'owany przez ffmpeg) — jeden serwis, dzięki natywnej obsłudze kamery w MediaMTX (źródło rpiCamera). Metodę ręczną zostawiłem jako opcję dla przypadków, gdzie natywna nie wystarcza.
- Integracja z Home Assistant: dodano zalecaną dziś metodę przez UI (Generic Camera) zamiast wyłącznie starszej konfiguracji YAML platform: ffmpeg, która wciąż działa, ale nie jest już domyślną drogą.
Źródła
- bluenviron/mediamtx — oficjalne repozytorium i dokumentacja
- Home Assistant: integracja Generic Camera
- Raspberry Pi: dokumentacja rpicam-apps