Zelfbouw ip-camera in 5 stappen
Een ip-camera hoeft niet veel te kosten. Met een Raspberry Pi Zero W en cameramodule kun je relatief eenvoudig een goede en bijzonder compacte camera maken, en daarmee bijvoorbeeld een rtsp-streamingserver opzetten. In dit artikel lees je hoe je dat doet, en hoe je de camera vervolgens in Surveillance Station op een Synology- of QNAP-nas kunt gebruiken.
Je kunt in China natuurlijk een spotgoedkope ip-camera met alles erop en eraan kopen, maar ze zijn doorgaans slecht beveiligd en lastig in te stellen. Het is niet direct goedkoper als je het zelf bouwt, maar je bent wel flexibeler en het is bovenal leuk en leerzaam. We gebruiken een Raspberry Pi Zero W (ongeveer 11 euro) samen met de officiële 8megapixel-cameramodule v2 (29,95 euro). Die beschikt over een prima Sony IMX219-sensor. Er is ook een NoIR-variant beschikbaar die een beter beeld geeft bij schemering. Als je die combineert met infrarood-leds heb je ook goede nachtbeelden (in grijswaarden). Wie wat wil besparen kan in China voordelige alternatieven vinden vanaf zo’n 8 euro. Verder heb je een micro-sd-kaart nodig voor de software en een voedingsadapter met micro-usb die bij voorkeur minimaal 1,2 ampère kan leveren.
©PXimport
01 Welke software?
Er zijn veel methodes om te streamen vanaf een Raspberry Pi Zero W. Naast de cameramodule ondersteunen de meeste methodes ook een usb-camera of webcam die je via een usb-on-the-go-kabel op de Pi Zero W aansluit. Welke methode je ook kiest: gezien de vrij beperkte processorkracht is het verstandig de bewegingsdetectie aan de videobewakingssoftware zoals Surveillance Station over te laten. Een bekende optie is motionEyeOS dat een mooie webinterface heeft voor de configuratie van de camera. Een nadeel is de relatief grote vertraging, zelfs met de optie Fast Network Camera waarmee je ook nog veel andere opties kwijt bent. Wij kiezen daarom voor het opzetten van een handmatige stream.
©PXimport
02 Installatie van Raspbian
We beginnen met de installatie van Raspbian Buster Lite. Haal de meest recente versie op. Pak het archief na het downloaden uit en gebruik balenaEtcher om het img-bestand op een micro-sd-kaartje te zetten. Voordat je de Pi opstart met het micro-sd-kaartje voeg je in de root (waar ook onder meer het bestand kernel.img staat) een tekstbestand genaamd wpa_supplicant.conf toe met onderstaande regels. Zet daarin achter ssid de naam van jouw wifi-netwerk en vul achter psk het wachtwoord in. Maak in dezelfde map een leeg bestand genaamd ssh zodat je via een shell kunt inloggen na het starten.
country=NL
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
scan_ssid=1
ssid="jouwssid"
psk="jouwwachtwoord"
}
Nadat de Pi Zero W is gestart, kun je het ip-adres dat door de dhcp-server van je router is toegekend achterhalen via de configuratiepagina’s van de router (als het goed is). Log op dat ip-adres in via ssh met een programma als PuTTY en gebruik de standaard gebruikersnaam pi en het bijbehorende wachtwoord raspberry. Wijzig daarna bij voorkeur die inloggegevens.
©PXimport
03 De rtsp-server installeren
Zorg dat de Pi up-to-date is met de commando’s:
sudo apt-get update
sudo apt-get dist-upgrade
Met sudo raspi-config open je de configuratiepagina van de Pi. Activeer via Interfacing Options de cameramodule. De video-for-linux-kerneldriver activeer je met:
sudo modprobe bcm2835-v4l2
Controleer dat je een /dev/video0 hebt met:
sudo ls -la /dev/vid*
Installeer de tools git en cmake met:
sudo apt install git cmake
Hierna kun je met de volgende opdrachten de rtsp-server compileren en beschikbaar maken, die onder meer h.264 ondersteunt:
git clone https://github.com/mpromonet/v4l2rtspserver.git
cd v4l2rtspserver
cmake .
make
sudo make install
04 De rtsp-stream starten
Je start bijvoorbeeld een stream starten vanuit de map v4l2rtspserver met:
./v4l2rtspserver -F 10 -W 1920 -H 1080
Na het starten van de rtsp-server kun je eventuele foutmeldingen aflezen en een link naar de stream in de vorm rtsp://ipadres:8554/unicast. Die kun je gebruiken in bijvoorbeeld VLC player om verbinding met de camera te maken, maar ook in Surveillance Station zoals we verderop laten zien. Met de optie -U gebruiker:wachtwoord geef je een gebruiker en wachtwoord op om de stream af te schermen. De link naar de rtsp-stream krijgt in dat geval de vorm rtsp://gebruiker:wachtwoord@ipadres:8554/unicast. Netjes is dat de processorbelasting zeer beperkt blijft, de gpu doet het meeste werk.
05 Server automatisch opstarten
We willen dat de rtsp-server automatisch wordt gestart na het aanzetten van de Pi. Maak hiervoor een eenvoudig script met:
sudo nano /etc/systemd/system/v4l2rtspserver.service
Hierin komen de volgende regels:
[Unit]
Description=v4l2rtspserver rtsp-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=/home/pi/v4l2rtspserver/ v4l2rtspserver -F 10 -W 1280 -H 720
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
User=pi
Group=video
Restart=always
[Install]
WantedBy=multi-user.target
Controleer achter ExecStart de locatie van v4l2rtspserver. Er staan enkele opties in waarmee je kunt experimenteren (zoals vertical_flip voor rotatie van het beeld). Maak het script actief met:
sudo systemctl enable v4l2rtspserver
En start het script met:
sudo systemctl start v4l2rtspserver
©PXimport
Camerabeeld toevoegen aan Surveillance Station
Het camerabeeld kun je eenvoudig in Surveillance Station gebruiken door handmatig een camera op te geven. Bij deze software blijkt de vertraging van het beeld behoorlijk beperkt. Waar dat bij VLC player ongeveer twee seconden is, is de vertraging in Surveillance Station maar ongeveer een seconde. Dat lijkt vrij veel maar veel andere methodes voor het streamen vanaf een Raspberry Pi hebben vaak een nog grotere vertraging van wel vier seconden of meer.
©PXimport