Raspberry Pi 3 Model B – Livekuvaa kameramodulista Motionilla

Käytetty laitteisto


Käytetty ohjelmisto

Käyttöjärjestelmä:

Raspbian Stretch (June 2018, kernel 4.14): https://www.raspberrypi.org/downloads/raspbian/

Kameraohjelma:

Motion (version 4.0): https://github.com/Motion-Project/motionhttps://motion-project.github.io/motion_guide.html


Kameramodulin asennus

Asensin kameran Raspberryn CSI-kameraporttiin. Sitten testasin, että kamera tunnistuu käyttöjärjestelmässä komennolla:

vcgencmd get_camera

Tulos:

supported=0 detected=0

Raspi ei tunnistanut yhtään kameraa, koska kamerainterfacea ei ole otettu käyttöön. Otin sen käyttöön raspi-configin kautta:

sudo raspi-config

Sieltä navigoin: Interfacing Options > P1 Camera > Yes > Finish

Tuli viesti “The camera interface is enabled”. Kokeilin uudelleen tunnistaa kameraa:

vcgencmd get_camera

Tulos:

supported=1 detected=1

Testasin kameraa picamera-sovelluksella. Se tulee asennettuna uusimman Raspbianin mukana, mutta löytyy paketinhallinnasta nimellä python3-picamera

Tein kotihakemistooni python-tiedoston nimeltä takepicture.py. Sen sisälle kirjoitin seuraavan koodin pätkän:

from picamera import PiCamera
from time import sleep

# Sleep for atleast 2 seconds so that the sensors adapt to current levels of light.

camera = PiCamera()

camera.start_preview()
sleep(5)
camera.capture('raspi-image.jpg')
camera.stop_preview()

Sitten ajoin koodin komennolla:

python3 takepicture.py

Ruudulle ilmestyi viideksi sekunniksi esikatseluvideota, ennen kuin kuva otettiin.

EDIT: Toinen nopeampi tapa testata kameran toiminta on raspistill:

raspistill -o raspi-image.jpg

Tuo komento tekee aikalailla saman, mitä ylempänä käytetty Python-koodi. Näyttää esikatselua hetken ja ottaa sitten kuvan.

Videokuvaa voi testata komennolla:

raspivid -o testvideo.h264 -t 10000

Tuo siis ottaa videota 10 sekunnin ajan. Videon tiedostonimi on testvideo ja tiedostopääte .h264 (MPEG-4 ).

VLC pyöritti videota surkeasti, mutta se johtunee puutteellisista ajureista.

 


Motionin asennus ja konfigurointi

Asensin Motionin paketinhallinnasta komennolla:

sudo apt-get install motion

Sitten navigoin hakemistoon /etc/motion/, jossa tein varmuuskopion motion.conf -tiedostosta, ennen kuin teen muutoksia siihen.

sudo cp motion.conf motion-backup.conf

Muokkasin motion.conf -tiedostoa sudoeditillä. Konfiguraatiossa on monta asetusta, jotka jätin oletuksiksi. Muokkasin kuitenkin seuraavat:

##########################################
# Daemon
##########################################

# Start in daemon (background) mode and release terminal (default: off)
daemon on

##########################################
# Capture Device Options
##########################################

# Videodevice used for capturing (default /dev/video0)
videodevice /dev/video0

# Image width (pixels). Valid range: Camera dependent, default 352
width 640

# Image height (pixels). Valid range: Camera dependent, default 288
height 480

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default:100 (almost no limit).
framerate 100

##########################################
# Image File Output
##########################################

# The quality (in percent) to be used by the jpeg compression (default: 75)
quality 100

##########################################
# Live Stream Server
##########################################

# The mini-http server listens to this port for requests (default: 0 = disabled)
stream_port 9999

# Quality of the jpeg (in percent) images produced (default: 50)
stream_quality 100

# Maximum framerate for stream streams (default: 1)
stream_maxrate 30

# Restrict stream connections to localhost only (default: on)
stream_localhost off

# Set the authentication method (default: 0)
# 0 = disabled
# 1 = Basic authentication
# 2 = MD5 digest (the safer authentication)
stream_auth_method 2

# Authentication for the stream. Syntax username:password
# Default: not defined (disabled)
stream_authentication markus:NotMyRealPassword

##########################################
# HTTP Based Control
##########################################

# TCP/IP port for the http server to listen on (default: 0 = disabled)
webcontrol_port 9090

# Restrict control connections to localhost only (default: on)
webcontrol_localhost off

# Authentication for the http based control. Syntax username:password
# Default: not defined (disabled)
webcontrol_authentication markus:NotMyRealPassword

Käynnistin Motionin uudelleen:

sudo service motion restart

Luulin, että tuo riittäisi, mutta ilmeisesti piti vielä muokata tiedostoa /etc/default/motion ja asettaa seuraava rivi:

start_motion_daemon=yes

Sitten käynnistin taas motionin uudelleen:

sudo service motion restart

Ja lopuksi vielä komento:

sudo motion

Tulos:

[0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
[0:motion] [NTC] [ALL] motion_startup: Motion 4.0 Started
[0:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)

Nyt, kun menin selaimella osoitteeseen localhost:9999, aukesi kirjautumisikkuna, jossa syötin conffi-tiedostoon määrittelemäni käyttäjätunnuksen ja salasanan.

Kirjauduttuani sisään, näin harmaata kuvaa.

Katselin motion.log lokitiedostoa, josta havaitsin, että ilmeisesti /dev/video0 laitetta ei löydy.

sudo tail -F /var/log/motion/motion.log

Ajoin terminaaliin komennon:

ls -l /dev/video*

johon sain vastaukseksi:

ls: cannot access '/dev/video*': No such file or directory

Ilmeisesti Raspberrylle tarkoitetut kameramodulit eivät suoraan toimi motionin kanssa, vaan se on pikemminkin tarkoitettu USB-pohjaisia kameroita varten. Löysin korjauksen kuitenkin StackExchangesta: https://raspberrypi.stackexchange.com/questions/10480/raspi-camera-board-and-motion käyttäjän 11chubby11 kommentista:

You can access the camera board on /dev/video0 by running the command:

sudo modprobe bcm2835-v4l2

Otin tuon kamera-ajurin käyttöön komennolla:

sudo modprobe bcm2835-v4l2

Mitään virheilmoitusta ei tullut, ja nyt kun katsoin ls -l /dev/video*, se listasi:

crw-rw----+ 1 root video 81,  0 Oct   1 08:28 /dev/video0

Kameran pitäisi nyt toimia motionin kanssa. Menin selaimella takaisin localhost:9999 osoitteeseen. Kirjautumisen jälkeen, näin livestreamin kameramodulista ongelmitta!

Lisäsin bcm2835-v4l2 -ajurin vielä /etc/modules -tiedostoon, jotta se otetaan käyttöön myös uudelleenkäynnistyksen jälkeen.

sudo nano /etc/modules

Lisäsin tiedoston loppuun rivin:

# For Raspberry Pi camera module
bcm2835-v4l2

Hetken päästä tuli ongelma, sillä huomasin, että Raspin muistikortti tuli täyteen.

pi@raspberrypi:~$ df -h
Filesystem   Size  Used  Avail  Use%  Mounted on
/dev/root    13G    13G    97M  100%  /

Aloin heti epäilemään, että Motion varmaan on tallentanut kuvia tai videoita jatkuvasti. Löysin Raspberry Pi:n foorumilta kätevän komennon, jolla sain listattua 100 eniten tilaa vievää hakemistoa:

sudo du / 2>/dev/null | sort -g -r | head -n 100

Kävi ilmi, että yksi suurimmista hakemistoista oli /var/lib/motion

7719040 /var/lib/motion

Sieltä löytyikin järkyttävä määrä .jpg-tiedostoja:

Pysäytin Motion-demonin kokonaan:

sudo service motion stop

Sitten poistin kaikki kuvat, ennen kuin lähdin selvittämään ongelmaa Motionin konfiguraatiosta:

sudo rm -r /var/lib/motion/*

Muokkasin motion.conf -tiedostoa uudelleen ja muutin seuraavat rivit:

########################################## 
# Image File Output 
##########################################

# Output "normal" pictures when motion is detected (default: on)
output_pictures off

########################################## 
# FFMPEG related options
##########################################

# Use ffmpeg to encode movies in realtime (default: off)
ffmpeg_output_movies off

Sitten käynnistin Motionin uudelleen:

sudo service motion restart

Nyt Motion ei enää tallentanut hakemistoon /var/lib/motion  mitään. Muokattavat rivit löysin käyttäjän steve kommentista täältä: https://tutorials-raspberrypi.com/raspberry-pi-security-camera-livestream-setup/

Huomasin, että kameran livekuva oli nyt myös sulavampaa, kun taustalla kuvia ei koko ajan tallennettu!


TO DO

  1. Asetusten optimointi, jotta saan nostettua resoluutiota ilman, että viive kasvaa liikaa.
  2. Skaalautuvuus useammalle kameralle, jotta saan hallittua niitä saman hallintapaneelin kautta (jokaiselle oma konfiguraatiotiedosto).
  3. Joku fiksu koteloratkaisu, jonka kiinnittäminen kattoon/seinään on helppoa.
  4. Kameran sijoitus osoittamaan kotini etuovelle.

Lähteitä:

https://picamera.readthedocs.io/en/release-1.13/

https://raspberrypi.stackexchange.com/questions/10480/raspi-camera-board-and-motion

https://motion-project.github.io/motion_config.html

https://tutorials-raspberrypi.com/raspberry-pi-security-camera-livestream-setup/

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top