1 poin oleh GN⁺ 2024-09-17 | 1 komentar | Bagikan ke WhatsApp
  • 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

  1. Gunakan Raspberry Pi Imager untuk menulis Lite OS (Bookworm 64-bit) ke kartu micro SD
  2. Instal library yang diperlukan
    sudo apt install libmosquitto1 pulseaudio libavformat59 libswscale6
    
  3. Aktifkan hardware Raspberry Pi dengan menambahkan konten berikut ke /boot/firmware/config.txt
    camera_auto_detect=0
    start_x=1
    gpu_mem=16
    
    Atur camera_auto_detect=0 agar kamera dibaca melalui v4l2
  4. Mount disk USB [referensi]
    • Jika tidak ingin merekam video, lewati langkah ini dan jangan set flag record_path saat 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
    

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_webrtc dengan flag -h untuk melihat semua opsi
  • Mulai aplikasi dengan menerapkan pengaturan
    pulseaudio --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/
    
    Petunjuk 1: Pi 5 tidak mendukung hardware encoding, jadi hapus flag --hw_accel dan set --v4l2_format ke mjpeg. Encoding video akan ditangani oleh OpenH264 Petunjuk 2: Saat menggunakan pengaturan 1920x1080, firmware hardware decoder berubah menjadi 1920x1088, tetapi isp/encoder tidak ikut disesuaikan sehingga keluar dari rentang memori. Tidak ada masalah jika disetel ke 1920x1088

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 = no ke konfigurasi klien
    echo '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

 
GN⁺ 2024-09-17
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

    • Sebagai gantinya, ia membangun sistemnya sendiri menggunakan kamera Raspberry Pi, RPi Zero 2W, hotspot LTE, dan SIM prabayar T-Mobile seharga $5/bulan
    • Untuk perangkat lunak, ia memakai imgcomp untuk mengambil foto setiap detik, lalu mengunggah foto yang berubah ke VPS dan menerima notifikasi di ponsel melalui Gotify
  • Pengguna lain tinggal di apartemen saat rumahnya sedang dibangun dan ingin membuat video timelapse serta memantau progres pekerjaan melalui internet

    • Ia menemukan kamera dengan kualitas yang lebih baik di AliExpress
  • Pengguna lain lagi mempertimbangkan proyek mediamtx dengan menggunakan Raspberry Pi Zero WH

    • Ini adalah contoh yang baik dalam memanfaatkan WebRTC, meski mungkin memerlukan pengaturan DDNS dan port forwarding
    • Dengan menggunakan solusi open source, dimungkinkan untuk membuat koneksi privat antara Pi dan server
  • 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

    • Ia berusaha memaksimalkan performa dengan C++
  • 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