Pyydä opettajalta Logitechin web-kamera Logitechilta. Kameran malli on V-U0023 eli HD Webcam C525. Jotta web-kamera lähtee toimimaan sille pitää asentaa ohjelmaa Terminalista komennolla:
sudo apt-get install fswebcam
Tökkää kameran usb-liitin raspberryn usb-porttiin. Kuvan webkameralla voi ottaa kirjoittelemalla Terminalista komento:
cd /var/www/html/kamera fswebcam webcamimage.jpg
Kuvan resoluutiota voi muuttaa tarkenteella –r vaikkapa seuraavasti:
fswebcam -r 1280x720 image2.jpg
Liiketunnistusta varten asennetaan Motion –ohjelmisto
sudo apt-get install motion
Automaattinen liikkeentunnistus
Toimiakseen liiketunnistuksessa ja tallentaakseen videota Motion-ohjelmiston asennuksen jälkeen pitää tehdä seuraavat toimet.
Muokataan ensin configuraatiotiedostoa:
sudo nano /etc/motion/motion.conf
Tiedostossa on ainakin 600 riviä, mutta seuraavat pitää muuttaa:
daemon on #oletus off (voidaan ajaa taustalla)
framerate 30 #default 2 (lisätään frameratea)
width 640 #oletus 320 (webkameran kykyä vastaava)
height 480 #oletus 240 (kts. width)threshold 2000 #oletus 1500 (*montako pixeliä pitää muuttua kuvassa, jotta tunnistetaan liike)
pre_capture 2 #oletus 0 (tallentaa 2 framea ennen kuin liike tunnistetaan)
post_capture 5 #oletus 0
output_normal off #oletus on (ei kuvia, vain videota)
ffmpeg_video_codec msmpeg4 #oletus swf (windows media player -yhteensopiva)
target_dir /home/pi/motionvideos #oletus /tmp/motion (mihin videot tallennetaan)
webcam_maxrate 5 #oletus 1 (nostetaan vähän frameratea on live streamissa)
webcam_localhost off #oletus on (paikallisverkosta voi katsoa livestreamia)
output_pictures on (tallentaa kuvia -> picture filename ”lastsnap”)
picture_filename lastsnap (tallennetuksi jää viimeisin kuva videosta)
ffmpeg_output_movies on (tallentaa videon)
ffmpeg_video_codec msmpeg4 (avi-videoita)
Tallenna ctrl+o ja poistu ctrl+x
(ctrl+W = etsi nano-editorissa)
Kannattaa myös tarkistaa, että USB-kamera on valittu kameraksi.
videodevice /dev/video0
Komennolla “lsusb” saa listan USB-laitteista.
pi@raspberrypi:~/motionvideos $ lsusb Bus 001 Device 007: ID 046d:0826 Logitech, Inc.
Tallennettaville videoille tarvitaan kansio ja sille oikeudet:
sudo mkdir /home/pi/motionvideos sudo chown motion /home/pi/motionvideos sudo chmod a+rwxt /home/pi/motionvideos/
Sitten muokataan motion daemoniksi:
sudo nano /etc/default/motion
Muokkaa riviä start_motion_daemon=no -> yes
Varmuuden vuoksi vähän oikeuksien muokkauksia (ei lähtenyt toimimaan ilman tätä)
sudo chown root.root /var/run/motion/ sudo chmod 755 /var/run/motion/
Seuraavaksi voisi rohkeasti kokeilla raspberryn uudelleenkäynnistuksen (”sudo reboot”) jälkeen motionin käynnistystä.
sudo service motion start
Ja jotta lastsnap.jpg lähtisi sähköpostilla pitää vielä tiedostoon ”/etc/motion/motion.conf” muokata riviä
# Command to be executed when an event ends after a period of no motion # (default: none). The period of no motion is defined by option event_gap. ; on_event_end value sposti.py
On-line kuva web-kamerasta selaimelle
Edellisen kohdan muokkaukset avaavat jo web-kameran porttiin 8081, mutta alla pikakertaus.
Muokataan konfiguraatiota ”sudo nano /etc/motion/motion.conf”
# Start in daemon (background) mode and release terminal (default: off) daemon off -> on # Restrict stream connections to localhost only (default: on) stream_localhost on -> off # 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 output_pictures off
Muokataan tiedostoa “sudo nano /etc/default/motion”
# set to 'yes' to enable the motion daemon start_motion_daemon=yes
Käynnistä palvelu komennolla (servicenä ei välttämättä suostu käynnistymään):
sudo motion -n
Tämän jälkeen web-kameran kuva näkyy samassa lähiverkossa olevan PC:n selaimelle osoitteessa <raspberryn_ip>:8081, eli raspberryn ip-osoite ja portti 8081 (esim. 192.168.1.2:8081). Huomaa että raspberryn ja esimerkiksi puhelimen pitää olla samassa lähiverkossa.
Email –lähetys liikkeestä omaan sähköpostiin
Ensin asennetaan ssmtp- ja mailutils-paketit komennolla:
sudo apt-get install ssmtp mailutils
Sähköpostin lähettämiseen pitää tehdä Python ohjelma, joka kuitenkaan ei todennäköisesti toimi, sillä suurimmassa osassa (kaikissa) sähköpostipalvelimissa on ulkopuolinen lähetys ”epämääräisistä kohteista” estetty. Kokeilin lähettää gmailin ja oman palvelimeni kautta, mutta ei anna kirjautua edes salatulla yhteydellä. Vir-heilmoitus ”mail: cannot send message: Process exited with a non-zero status”
Sähköpostin lähetys ”sposti.py”:
#!/usr/bin/python # -*- coding: utf-8 -*- import smtplib import time from datetime import datetime from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart smtpUser = ’sahkoposti@osoite.com’ smtpPass = ’salasana’ toAddr = ’vastaanottaja@osoite.com’ fromAddr = smtpUser aikaleima = datetime.now().strftime('%a %d %b @ %H:%M') subject = ’Kuva kamerasta ’ + aikaleima msg = MIMEMultipart() msg['Subject'] = subject msg['From'] = fromAddr msg['To'] = toAddr msg.preamble = "Kameran kuva @ " + f_time kuva = open(' lastsnap.jpg', 'rb') img = MIMEImage(kuva.read()) kuva.close() msg.attach(img) s = smtplib.SMTP(’smtp.lahteva.com’,587) s.ehlo() s.starttls() s.ehlo() s.login(smtpUser, smtpPass) s.send_message(msg) s.quit