Raspberry Pi tabanlı açık kaynak güvenlik kamerası
(github.com/TzuHuanTai)- Raspberry Pi’yi düşük gecikmeli bir ev güvenlik kamerasına dönüştüren proje
- v4l2DMA donanım kodlayıcısı ve WebRTC kullanır
- Medya sunucusu olmadan tamamen P2P tabanlı kamera olarak video oynatma ve indirme mümkündür
- Birden fazla kullanıcı aynı anda canlı yayını izleyebilir
- Raspberry Pi 5 veya diğer SBC’ler v4l2 donanım kodlamayı desteklemez, yazılım kodlama modunda çalıştırılması gerekir
Kullanım
- En güncel ikili dosyayı Releases bölümünden indirin
- Pi Camera uygulamasını kurun ve yönergeleri izleyin
Donanım gereksinimleri
- Raspberry Pi (Zero 2W veya üzeri)
- CSI kamera modülü
- En az 4 GB micro SD kart
- USB disk ve Micro-USB Male to USB-A Female adaptör
Ortam kurulumu
- Raspberry Pi Imager kullanarak Lite OS’yi (Bookworm 64-bit) micro SD karta yazın
- Gerekli kütüphaneleri kurun
sudo apt install libmosquitto1 pulseaudio libavformat59 libswscale6 - Raspberry Pi donanımını etkinleştirmek için
/boot/firmware/config.txtdosyasına aşağıdaki içeriği ekleyin
Kamerayı v4l2 ile okumak içincamera_auto_detect=0 start_x=1 gpu_mem=16camera_auto_detect=0ayarını yapın - USB diski bağlayın [referans]
- Video kaydı istemiyorsanız bu adımı atlayın ve çalıştırırken
record_pathbayrağını ayarlamayın - Disk sürücüsü algılandığında otomatik olarak
/mnt/ext_diskkonumuna bağlanır
sudo apt-get install autofs echo '/- /etc/auto.usb --timeout=5' | sudo tee -a /etc/auto.master > /dev/null echo '/mnt/ext_disk -fstype=auto,nofail,nodev,nosuid,noatime,umask=000 :/dev/sda1' | sudo tee -a /etc/auto.usb > /dev/null sudo systemctl restart autofs - Video kaydı istemiyorsanız bu adımı atlayın ve çalıştırırken
Uygulamayı çalıştırma
- Şu anda tek sinyalleşme mekanizması olarak MQTT kullanıldığı için, uygulamayı başlatmadan önce bir MQTT sunucusunun hazır olması gerekir
- Uygulama yalnızca LAN içinde kullanılacaksa, aynı Pi üzerine Mosquitto gibi bir MQTT sunucusu kurulabilir
- Uzak erişim gerekiyorsa bulut tabanlı bir MQTT sunucusu kullanılması önerilir (ör. HiveMQ, EXMQ)
- Mobil veriyle uzak sinyalleşme sunucusuna erişmek için DDNS ve port yönlendirme ayarları gerekir
Çalıştırma
- Tüm seçenekleri görmek için
pi_webrtcikili dosyasını-hbayrağıyla çalıştırabilirsiniz - Yapılandırmayı uygulayarak uygulamayı başlatın
İpucu 1: Pi 5 donanım kodlamayı desteklemediği içinpulseaudio --start /path/to/pi_webrtc --device=/dev/video0 --fps=30 --width=1280 --height=960 --v4l2_format=h264 --hw_accel --mqtt_host=example.s1.eu.hivemq.cloud --mqtt_port=8883 --mqtt_username=hakunamatata --mqtt_password=Wonderful --uid=home-pi-zero2w --record_path=/mnt/ext_disk/video/--hw_accelbayrağını kaldırın ve--v4l2_formatdeğerinimjpegolarak ayarlayın. Video kodlama OpenH264 tarafından işlenir İpucu 2:1920x1080ayarlandığında donanım kod çözücü firmware’i1920x1088değerine değişir, ancak isp/kodlayıcı buna göre ayarlanmadığından bellek sınırı aşılır.1920x1088olarak ayarlarsanız sorun olmaz
Linux servisi olarak çalıştırma
1. pulseaudioyu sistem genelinde daemon olarak çalıştırın [referans]
/etc/systemd/system/pulseaudio.servicedosyasını oluşturun[Unit] Description= Pulseaudio Daemon After=rtkit-daemon.service systemd-udevd.service dbus.service [Service] Type=simple ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading Restart=always RestartSec=10 [Install] WantedBy=multi-user.target- İstemci yapılandırmasına
autospawn = noekleyinecho 'autospawn = no' | sudo tee -a /etc/pulse/client.conf > /dev/null - root kullanıcısını pulse grubuna ekleyin
sudo adduser root pulse-access - Servisi etkinleştirin ve başlatın
sudo systemctl daemon-reload sudo systemctl enable pulseaudio.service sudo systemctl start pulseaudio.service
2. pi_webrtcyi çalıştırın ve yeniden başlatmada otomatik başlamasını ayarlayın
/etc/systemd/system/pi-webrtc.servicedosyasını oluşturun[Unit] Description= The p2p camera via webrtc. After=systemd-networkd.service [Service] Type=simple WorkingDirectory=/path/to ExecStart=/path/to/pi_webrtc --device=/dev/video0 --fps=30 --width=1280 --height=960 --v4l2_format=h264 --hw_accel --mqtt_host=example.s1.eu.hivemq.cloud --mqtt_port=8883 --mqtt_username=hakunamatata --mqtt_password=wonderful --record_path=/mnt/ext_disk/video/ Restart=always RestartSec=10 [Install] WantedBy=multi-user.target- Servisi etkinleştirin ve başlatın
sudo systemctl daemon-reload sudo systemctl enable pi-webrtc.service sudo systemctl start pi-webrtc.service
Gelişmiş ayarlar
- Çift yönlü iletişim için mikrofon ve hoparlör eklenmesi gerekir
Mikrofon
- Mikrofon kablolaması ve testiyle ilgili yönergeler için bağlantıya bakın
Hoparlör
- Hoparlör kurulumu ile ilgili yönergeler için bağlantıya bakın
Lisans
- Bu proje Apache License, Version 2.0 kapsamında lisanslanmıştır. Ayrıntılar için LICENSE dosyasına bakın
GN⁺ özeti
- Bu proje, Raspberry Pi’yi düşük gecikmeli bir ev güvenlik kamerasına dönüştürmenin bir yolunu sunar
- v4l2DMA donanım kodlayıcısı ve WebRTC kullanarak medya sunucusu olmadan tamamen P2P tabanlı çalışır
- Birden fazla kullanıcının aynı anda canlı yayını izleyebilmesi sayesinde ev tipi güvenlik kamerası olarak kullanışlıdır
- MQTT kullanan sinyalleşme mekanizması sayesinde hem LAN hem de uzak erişim desteklenebilir
- Benzer işlevlere sahip diğer projeler arasında MotionEye ve ZoneMinder bulunur
1 yorum
Hacker News görüşleri
Bir kullanıcı, ev tadilatı sırasında uzaktan izleme için bir güvenlik sistemi kurmak istemiş, ancak çoğu özelliğin geniş bant internete ihtiyaç duyduğunu fark etmiş
Başka bir kullanıcı, evini inşa ederken apartmanda yaşayıp bir timelapse video oluşturmak ve internet üzerinden işin durumunu kontrol etmek istemiş
Bir başka kullanıcı, Raspberry Pi Zero WH kullanarak mediamtx projesini değerlendirmiş
Bir kullanıcı, Raspberry Pi 5’in neden v4l2 donanımsal kodlamayı desteklemediğini merak etmiş
Başka bir kullanıcı, yolov3-tiny modeliyle gerçek zamanlı insan algılamayı deniyormuş
Bir başka kullanıcı, benzer bir amaç için Sentry-Picam kullanmış; Syncthing ile 3 farklı cihazla senkronize etmiş ve sendxmpp tabanlı bir push bildirim betiği bağlamış
Bir kullanıcı, benzer bir projeyi Nvidia Jetson ile yapmış ve şu anda reCamera ile ilgileniyormuş
Bir başka kullanıcı, açık kaynak firmware kullanan bir kart arıyormuş
Son olarak, bir kullanıcı yalnızca ses kaydetmek için WebRTC’nin iyi bir çözüm olup olmadığını merak etmiş