A service of Daily Data, Inc.
Contact Form

User Tools

Site Tools


software:zoneminder:picamera

Differences

This shows you the differences between two versions of the page.


software:zoneminder:picamera [2025/04/15 15:53] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== Raspberry Pi Camera on ZoneMinder ======
 +
 +I spent a lot of time trying to find some good software to run on a Raspberry Pi to turn it into a camera. Even tried to write my own using Perl, but all the libraries are in Python, so it took too much for a simple project.
 +
 +I found the v4l2rtspserver (https://github.com/mpromonet/v4l2rtspserver) and decided to try it. The author has a good page, but assumes I knew how to configure ZoneMinder (which was mistaken).
 +
 +Anyway, no GUI needed, so I did the Raspberry Pi OS Lite (https://www.raspberrypi.org/software/operating-systems/) and set it up, then did the following. Ended up with a pretty decent camera that is not "phoning home" with all your images.
 +
 +===== Get raspbian image onto SD =====
 +
 +  - Download the Lite version of Raspbian from [[https://www.raspberrypi.org/downloads/raspbian/]]
 +  - write the downloaded image to the micro-sd (do not uncompress)
 +  - mount /boot from SD onto /mnt
 +<code bash>
 +touch /mnt/boot/ssh # enable ssh
 +# only do the following if you need wifi. Change country code, ssid and psk for your system
 +# see [[https://www.raspberrypi.org/documentation/configuration/wireless/headless.md]]
 +cat <<EOF >/mnt/boot/wpa_supplicant.conf
 +ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 +update_config=1
 +country=<Insert country code here>
 +
 +network={
 + ssid="<Name of your WiFi>"
 + psk="<Password for your WiFi>"
 +}
 +EOF
 +</code>
 +
 +Insert SD into your Pi and boot up.
 +===== Configure Raspberry Pi =====
 +
 +Enable wlan by adding the following to /etc/wpa_supplicant/wpa_supplicant.conf
 +<file>
 +country=US
 +network={
 +   ssid="your ssid"
 +   psk="your psk"
 +}
 +</file>
 +
 +Now, do the install
 +<code bash>
 +# Set up Camera
 +raspi-config # go to Interface, and enable camera
 +reboot
 +ls -lh /dev/video*
 +raspistill -v -o test.jpg # Verify camera works
 +# Remove Swap File
 +sudo systemctl stop dphys-swapfile.service
 +sudo systemctl disable dphys-swapfile.service
 +sudo systemctl mask dphys-swapfile.service
 +sudo rm /var/swap
 +# add zram for swap
 +sudo apt-get install zram-tools
 +sed -i 's\.*ALLOCATION=.*\ALLOCATION=100\g' /etc/default/zramswap
 +sudo systemctl enable zramswap
 +sudo systemctl restart zramswap
 +# Set up ntp
 +sudo apt-get install ntp
 +sudo timedatectl set-timezone America/Chicago
 +# add base packages needed
 +sudo apt install \
 +liblivemedia-dev liblog4cpp5-dev libasound2-dev git gdebi-core cmake build-essential v4l-utils
 +# get and build v4l2...
 +git clone https://github.com/mpromonet/v4l2rtspserver
 +cd v4l2rtspserver
 +cmake .
 +make
 +sudo make install
 +# do the install
 +sudo gdebi v4l2rtspserver-0.2.0-6-g3542b6f-Linux-armv6l.deb
 +# create systemd module
 +cat <<EOF >/etc/systemd/system/v4l2rtspserver.service
 +# systemd configuration for v4l2rtspserver
 +# /etc/systemd/system/v4l2rtspserver.service
 + 
 +[Unit]
 +Description=v4l2rtspserver rtsp streaming server
 +After=network.target
 + 
 +[Service]
 +#ExecStartPre=/usr/bin/v4l2-ctl --set-ctrl vertical_flip=1
 +ExecStartPre=/usr/bin/v4l2-ctl --set-ctrl h264_i_frame_period=5
 +ExecStart=/usr/local/bin/v4l2rtspserver -F 5 -W 1280 -H 720
 +#ExecReload=/bin/kill -HUP $MAINPID
 +Type=simple
 +User=root
 +Group=video
 +Restart=always
 + 
 +[Install]
 +WantedBy=multi-user.target
 +EOF
 +
 +# enable the service
 +sudo systemctl enable --now v4l2rtspserver.service
 +</code>
 +
 +At this point, you should be able to get an rtsp by pointing vlc to [[rtsp://{pi zero ip}:8554/unicast]]
 +
 +===== Zoneminder Configuration =====
 +
 +Create a new monitor in ZoneMinder with the following parameters
 +
 +  * Source Type: Remote
 +  * Remote Protocol: RTSP
 +  * Remote Method: RTP/Unicast
 +  * Remote Host Name: Hostname or IP
 +  * Remote Host Port: 8554
 +  * Remote Host Path: /unicast
 +  * Capture Width: 640
 +  * Capture Height: 480
 +
 +
 +You should soon see the output in zoneminder.
 +
 +===== Production =====
 +
 +For production, change the resolution of //both// the camera and the ZoneMinder configuration
 +
 +  - Edit /etc/systemd/system/v4l2rtspserver.service
 +    - Change -W and -H (width and height) to your desired parameters
 +      - 1920 x 1080 (1080p) Gives you a lot of details, but also transfers a lot of traffic and is fuzzy
 +      - 1280 x 720 (720p) Is a lot lower bandwidth and "prettier" picture
 +      - <code bash>
 +# reload the systemctl daemon
 +systemctl daemon-reload
 +# reload the config for v4l2rtspserver
 +systemctl restart v4l2rtspserver
 +# Set v4l2rtspserver to autostart
 +systemctl enable v4l2rtspserver
 +</code>
 +  - Edit Monitor on ZoneMinder
 +    - Set Capture Resolution to same values as camera
 +
 +===== Links =====
 +  * https://zoneminder.blogspot.com/p/rasbpeery-pi-zero-camera.html
 +  * https://carlos-journal.blogspot.com/2017/05/setting-up-rtsp-server-in-raspberry-pi.html
 +  * https://unix.stackexchange.com/questions/322720/why-wont-my-enabled-systemd-service-start-on-boot
  
software/zoneminder/picamera.1622667786.txt.gz · Last modified: (external edit)