Lav et overvågningskamera med Raspberry Pi

Har du en Raspberry Pi og et kamera-modul, kan du nemt lave et overvågningskamera. Du kan se kameraets billeder i f.eks. din browser. I denne artikel, beskriver jeg hvordan du kan bruge programmet Motion til at sende video fra kameraet i formatet Motion JPEG.

Three Surveillance cameras

Før du går i gang

Hvis du ikke allerede har sat dit kamera-modul op, bør du begynde med at læse hvordan du aktiverer dit Raspberry Pi-kamera. Du bør også kunne bruge et webcam med USB, men det har jeg ikke prøvet.

For at konfigurere din video-server, skal du køre nogle komandoer i terminalen (Det tekst-baserede interface). Kommandorne er skrevet i  fed og kursiv.

Der er flere steder, hvor du skal bruge en teksteditor for at ændre i konfigurationsfiler. I mine eksempler, bruger jeg programmet nano. Du kan bruge den teskteditor du vil, men nano er udbredt, og ret nem at bruge. Hvid du vil lære at bruge nano, kan du begynde med at følge denne tutorial (Engelsk).

Mange steder, bruger jeg kommandoen sudo. Det gør jeg for at udføre de efterfølgende kommandoer med rettigheder som superbrugeren root. Du vil ofte blive bedt om dit password når du kører en kommando med sudo. Hvis du bruger standartopsætningen på din Raspberry Pi, er du brugeren pi, med password raspberry.  Du kan læse mere om sudo på Wikipedia.

Load kernel-modul

For vi skal kunne bruge kameraet, skal der loades et kernel-modul ind. Vi bruger programmet modprobe til at hente modulet ind. Det modul vi skal bruge, hedder bcm2835-v4l2. Det gøres med følgende kommando.

sudo modprobe bcm2835-v4l2

Nu bør kameraet være tilgængeligt via denne fil /dev/video0.Du kan sikre dig, at filen er der ved at liste den med denne kommando. Hvis du får at vide, at filen ikke eksisterer, er modulet ikke blevet loadet.

ls  /dev/video0

For at modulet automatisk hentes ind hver gang maskinen startes, skal vi tilføje modulets navn i filen /etc/modules. Åben filen i nano med denne kommandoen

sudo nano /etc/modules

Filen er nu åben. Tilføj en ny linje med teksten bcm2835-v4l2 (Modulets navn) nederst i dokumentet. Gem det ændrede dokument (ctrl+o) og gå ud af nano (ctrl+x).

Genstart din maskine med denne kommando.

sudo reboot

Når maskinen er kommet op igen, skal du checke at filen /dev/video0 stadig eksisterer.

ls /dev/video0

Installer Motion

Sørg for, at du har seneste versioner af den software der allerede er installeret på din maskine. Opdater først listen over tilgængelig software med denne kommando.

sudo apt-get update

Opdater derefter din software med følgende kommando.

sudo apt-get upgrade

Vi skal nu have installeret programmet Motion. Der vil også blive installeret en masse andre programmer, som motion er afhængig af. Det kan let komme til at tage lidt tid. Det afhænger af, hvor hurtig din internetforbindelse er. Brug følgende kommando.

sudo apt-get install motion

For at sørge for, at Motion kan startes som en server, skal vi lave en ændring i konfigurations-filen /etc/default/motion. Du kan bruge den teksteditor du vil, men i mine eksempler, bruger jeg programmet nano. Sådan åbner jeg filen.

sudo nano /etc/default/motion

Du skal nu finde linjen der indeholder teksten start_motion_daemon. Sørg for, at der på linjen står start_motion_daemon=yes. Gem dokumentet (ctrl+o) og gå ud af nano (ctrl+x).

Start nu Motion med følgende kommando.

sudo service motion start

Du bør få følgende svar, der viser ar serveren kører:

[ ok ] Starting motion detection daemon: motion.

Konfigurer Motion

I dette afsnit, laver vi nogle ændringer i konfiguration af motion. Det foregår ved at ændre i filen /etc/motion/motion.conf. Jeg åbner den i nano med den følgende kommando.

sudo nano /etc/motion/motion.conf

nano, kan man søge efter ord med funktionen Where Is som aktiveres ved at trykke (ctrl+w). Det er praktisk, i det følgende.

Som udgangspunkt, sender Motion kun 2 billeder i sekundet. Vi vil gerne have, at den sender så mange billeder som muligt. Det gøres ved at ændre ændre to linjer i konfigurationsfilen. De linjer der skal ændres, er dem der begynder med hhv. framerate og webcam_maxrate. Den hurtigste framerate man kan angive er 100. Derfor,  er det den værdi jeg bruger for begge parametre. Opdater det to linjer, så der står hhv. framerate 100 og webcam_maxrate 100.

Hvis man ikke ændrer konfigurationen, kan videoen kun ses af programmer der kører på min Rasberry Pi. Jeg vil gerne se billederne fra min egen computer. Derfor skal jeg ændre den linje der starter med teksten webcam_localhost. Som udgangspunkt, er det parameter sat til on, men jeg ønsker at det skal være off. Opdater linjen så teksten kommer til at være: webcam_localhost off

Som udgangspunkt, gemmer motion billederne fra kameraet. Det vil betyde, at man på et tidspunkt løber tør for plads hvis man ikke sletter billederne igen. I mit scenarie, har jeg slet ikke brug for at gemme billedrene, så jeg vil slå den funktionalitet fra. Det kan gøres ved at ændre normal_output. Hvis man her vælger off, gemmes billederne ikke. Opdater derfor linjen der begynder med output_normal, så den kommer til at være: output_normal off

Genstart nu motion, så dine ændringer træder i kraft. Brug følgende kommando.

sudo service motion restart

Du bør se, at motion først stoppes, og så startes igen.

Se video

For at kunne forbinde til vores video-server, bliver vi nødt til at kende maskinen IP-adresse. Brug følgende kommando for at se den aktuelle opsætning af maskinens netværksforbindelse.

ifconfig eth0

Find linjen der begynder med ordet inet. På min maskine ser den sådan ud:

inet addr:192.168.10.194 Bcast:192.168.10.255 Mask:255.255.255.0

De fire tal der er delt af punktummer efter teksten addr:er din IP-adresse. Min er altså 192.168.10.194. Din er sikkert noget andet.

Fra din egen computer, bør du kunne se video fra kameraet på din Raspberry Pi ved at gå ind på adressen: http://din.ip.er.her:8081 med din browser. Erstat teksten din.ip.er.her med din IP-adresse. Jeg kan ikke få det til at fungere i browseren Chrome. Prøv browseren Firefox i stedet hvis du ikke kan se videoen. Du kan også se videoen med programmet vlc.

Eksperimenter

Som du sikkert har opdaget, er der enormt mange parametre i motions konfigurationsfil /etc/motion/motion.conf. Det er oplagt, at ville ændre videoens opløsning. Det kan du gøre ved at ændre parametrene width og height. Jo højere opløsning du bruger, jo større forsinkelse vil der være i videoen. Udganspunkter er, at videoen har størrelsen 320×240 pixels.