Kamera Keamanan Open Source Berbasis Raspberry Pi
(github.com/TzuHuanTai)- Proyek untuk mengubah Raspberry Pi menjadi kamera keamanan rumah berlatensi rendah
- Menggunakan encoder hardware v4l2DMA dan WebRTC
- Pemutaran dan pengunduhan video dimungkinkan sebagai kamera berbasis P2P murni tanpa media server
- Beberapa pengguna dapat menonton live stream secara bersamaan
- Raspberry Pi 5 atau SBC lain tidak mendukung encoding hardware v4l2, sehingga perlu dijalankan dalam mode software encoding
Cara penggunaan
- Unduh file biner terbaru dari Releases
- Instal aplikasi Pi Camera dan ikuti petunjuknya
Persyaratan perangkat keras
- Raspberry Pi (Zero 2W atau lebih tinggi)
- Modul kamera CSI
- Kartu micro SD minimal 4GB
- Disk USB dan adaptor Micro-USB Male ke USB-A Female
Pengaturan lingkungan
- Gunakan Raspberry Pi Imager untuk menulis Lite OS (Bookworm 64-bit) ke kartu micro SD
- Instal library yang diperlukan
sudo apt install libmosquitto1 pulseaudio libavformat59 libswscale6 - Aktifkan hardware Raspberry Pi dengan menambahkan konten berikut ke
/boot/firmware/config.txt
Aturcamera_auto_detect=0 start_x=1 gpu_mem=16camera_auto_detect=0agar kamera dibaca melalui v4l2 - Mount disk USB [referensi]
- Jika tidak ingin merekam video, lewati langkah ini dan jangan set flag
record_pathsaat menjalankan - Jika disk drive terdeteksi, akan otomatis di-mount ke
/mnt/ext_disk
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 - Jika tidak ingin merekam video, lewati langkah ini dan jangan set flag
Menjalankan aplikasi
- Saat ini MQTT adalah satu-satunya mekanisme signaling yang digunakan, jadi server MQTT harus siap sebelum aplikasi dimulai
- Jika aplikasi hanya digunakan di dalam LAN, server MQTT seperti Mosquitto dapat dipasang di Pi yang sama
- Jika memerlukan akses jarak jauh, disarankan menggunakan server MQTT berbasis cloud (misalnya: HiveMQ, EXMQ)
- Untuk mengakses server signaling jarak jauh melalui data seluler, perlu menyiapkan DDNS dan port forwarding
Menjalankan
- Jalankan file biner
pi_webrtcdengan flag-huntuk melihat semua opsi - Mulai aplikasi dengan menerapkan pengaturan
Petunjuk 1: Pi 5 tidak mendukung hardware encoding, jadi hapus flagpulseaudio --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_acceldan set--v4l2_formatkemjpeg. Encoding video akan ditangani oleh OpenH264 Petunjuk 2: Saat menggunakan pengaturan1920x1080, firmware hardware decoder berubah menjadi1920x1088, tetapi isp/encoder tidak ikut disesuaikan sehingga keluar dari rentang memori. Tidak ada masalah jika disetel ke1920x1088
Menjalankan sebagai layanan Linux
1. Jalankan pulseaudio sebagai daemon sistem global [referensi]
- Buat file
/etc/systemd/system/pulseaudio.service[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 - Tambahkan
autospawn = noke konfigurasi klienecho 'autospawn = no' | sudo tee -a /etc/pulse/client.conf > /dev/null - Tambahkan root ke grup pulse
sudo adduser root pulse-access - Aktifkan dan mulai layanan
sudo systemctl daemon-reload sudo systemctl enable pulseaudio.service sudo systemctl start pulseaudio.service
2. Jalankan pi_webrtc dan atur agar otomatis mulai saat reboot
- Buat file
/etc/systemd/system/pi-webrtc.service[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 - Aktifkan dan mulai layanan
sudo systemctl daemon-reload sudo systemctl enable pi-webrtc.service sudo systemctl start pi-webrtc.service
Pengaturan lanjutan
- Untuk komunikasi dua arah, perlu menambahkan mikrofon dan speaker
Mikrofon
- Lihat tautan untuk petunjuk pemasangan kabel dan pengujian mikrofon
Speaker
- Lihat tautan untuk petunjuk pengaturan speaker
Lisensi
- Proyek ini dilisensikan di bawah Apache License, Version 2.0. Untuk detail lebih lanjut, lihat file LICENSE
Ringkasan GN⁺
- Proyek ini menyediakan cara untuk mengubah Raspberry Pi menjadi kamera keamanan rumah berlatensi rendah
- Menggunakan encoder hardware v4l2DMA dan WebRTC untuk berjalan secara P2P murni tanpa media server
- Beberapa pengguna dapat menonton live stream secara bersamaan, sehingga berguna sebagai kamera keamanan rumahan
- Mekanisme signaling berbasis MQTT memungkinkan dukungan baik untuk LAN maupun akses jarak jauh
- Proyek lain dengan fungsi serupa antara lain MotionEye dan ZoneMinder
1 komentar
Komentar Hacker News
Seorang pengguna mencoba memasang sistem keamanan untuk pemantauan jarak jauh saat renovasi rumah, tetapi mendapati bahwa sebagian besar fiturnya membutuhkan internet broadband
Pengguna lain tinggal di apartemen saat rumahnya sedang dibangun dan ingin membuat video timelapse serta memantau progres pekerjaan melalui internet
Pengguna lain lagi mempertimbangkan proyek mediamtx dengan menggunakan Raspberry Pi Zero WH
Seorang pengguna mempertanyakan mengapa Raspberry Pi 5 tidak mendukung encoding hardware v4l2
Pengguna lain sedang mencoba deteksi orang secara real-time menggunakan model yolov3-tiny
Pengguna lain lagi mencapai tujuan serupa dengan menggunakan Sentry-Picam, menyinkronkannya dengan 3 perangkat lain melalui Syncthing, dan menghubungkan skrip notifikasi push berbasis sendxmpp
Seorang pengguna mengerjakan proyek serupa menggunakan Nvidia Jetson dan saat ini tertarik pada reCamera
Pengguna lain sedang mencari board yang menggunakan firmware open source
Terakhir, seorang pengguna penasaran apakah WebRTC merupakan solusi yang baik jika hanya ingin merekam suara