Motion

Da GolemWiki.
Jump to navigation Jump to search

motion è un software libero per realizzare piccoli sistemi di videosorveglianza casalinghi facendo uso di una o più webcam. Oltre alla possibilità di collegarsi da remoto, motion può rilevare movimenti sospetti e salvare su disco sia istantanee che video, permettendo una successiva analisi, o addirittura inviare mail o messaggi.

motion è al momento in testing nella nostra Officina Informatica!

Installazione ed esecuzione di base

# apt-get install motion
# pacman -S motion

Il programma è già utilizzabile con il file di configurazione di default, a patto di lanciarlo da root (sconsigliato, se non per fare qualche test iniziale).

Innanzitutto bisogna conoscere qual è il nome del device webcam

$ ls /dev/video*

Se il precedente comando non dovesse mostrare alcun device, potrebbe esserci qualche problema. Il device preimpostato in motion è /dev/video0, ma è possibile cambiarlo dal file /etc/motion/motion.conf alla riga videodevice.

# motion

Per vederlo funzionare non c'è nient'altro da configurare, motion autoavvierà un webserver che risponde alla porta :8081. Ci si può collegare digitando sul proprio browser

http://127.0.0.1:8081

Per motivi di sicurezza l'accesso è autorizzato solo dal computer su cui gira motion.

Configurazione

Di seguito viene illustrato come configurare motion per essere lanciato da utente non amministratore. Come esempio viene utilizzato l'utente "motion" creato automaticamente in fase di installazione, ma con opportune sostituzioni è possibile utilizzarne anche un altro.

Cartelle e privilegi

  • File di log - di default il log viene dato nella shell. È preferibile salvare eventuali messaggi di errore ed altre informazioni.
# touch /var/log/motion.log
# chown motion:motion /var/log/motion.log

Editare il file /etc/motion/motion.conf, decommentando la riga ;logfile (il punto e virgola e il cancelletto denotano i commenti) ed impostando il precedente file di log:

logfile /var/log/motion.log
  • File di lock - quando avviato, motion crea un file che indica che è stato preso il controllo della webcam ed evita conflitti con altre eventuali istanze dello stesso programma.
# mkdir -p /var/run/motion
# chown -R motion:motion /var/run/motion

La cartella /var/run viene riaggiornata ad ogni avvio del sistema, per cui i permessi assegnati andranno persi al riavvio. Per evitare ciò creare il seguente file:

# nano /usr/lib/tmpfiles.d/motion.conf

Ed inserirvi:

# Type 	Path 	       Mode 	UID  	GID  	Age 	Argument
#
# home directory for motion
d /run/motion		0700	motion	motion	-	-
  • Archivio immagini - deve essere predisposta una cartella scrivibile dove salvare le immagini e le registrazioni. In questo caso si è scelta una sottocartella nella home dell'utente (si noti che i comandi che seguono sono dati come utente non privilegiato):
$ cd ~
$ mkdir registrazioni
$ chgrp motion registrazioni

Anche questa cartella deve essere specificata nel file di configurazione, alla riga target_dir:

target_dir /home/utente/registrazioni
  • systemd - per uniformità con gli altri servizi, anche motion può essere lanciato con systemd (ed eventualmente avviato automaticamente all'accensione del sistema)

Creare il file:

# nano /etc/systemd/system/motion.service

ed inserirvi, sostituendo opportunamente le parti in grassetto

[Unit]
Description=Motion daemon
After=local-fs.target network.target

[Service]
PIDFile=/var/run/motion/motion.pid
ExecStart=/usr/bin/motion -c /etc/motion/motion.conf
Type=simple
StandardError=null
User=motion
Group=motion

[Install]
WantedBy=multi-user.target

Per avviare motion

# systemctl start motion

Per impostare l'avvio automatico

# systemctl enable motion

Altre configurazioni importanti

  • Accesso dall'esterno: questo parametro è on per default, dunque la webcam è inaccessibile da altri computer, anche se nella stessa rete del pc server. Una volta terminati gli esperimenti si può commutarlo ad off
stream_localhost off
  • Accesso da IPv6: questo parametro è off per default, quindi il server web sarà in ascolto solo su IPv4. Potrebbe essere utile attivalo se, come noi, si ha a che fare con una rete IPv6
ipv6_enabled on


  • Avviare l'applicazione come demone in background (rimane attiva anche se si fa il logout). Ovviamente al riavvio l'applicazione deve essere ri-eseguita manualmente
daemon on


  • Numero di immagini al secondo da catturare (framerate). È richiesto non scendere sotto 2fps. Da calibrare a seconda della velocità della propria rete.
framerate 2


  • Autenticazione: richiedere una password per vedere la webcam. Qui intervengono due parametri:
# 0 = no password
# 1 = autenticazione di base
stream_auth_method 1

# utente:password
stream_authentication golem:golem


  • Gestione di più webcam: creare un sotto-file di configurazione per ogni webcam (ad esempio, motion-cam1.conf, motion-cam2.conf, ...). È sufficiente inserire solamente tre righe:
# Il percorso del device
videodevice /dev/video0

# Dove si vogliono memorizzare le immagini di questa webcam
target_dir /home/utente/registrazioni/camera1

# Se 
# Altrimenti si setta a 0 per disabilitarlo
stream_port 8081

Le tre righe vanno rimosse dal file principale motion.conf, mentre bisogna inserire i riferimenti ai sotto files:

thread /etc/motion/motion-cam1.conf
thread /etc/motion/motion-cam2.conf
#....

Device name persistente

In presenza di più camere non è assicurato che ognuna mantenga lo stesso identificatore /dev/videox in seguito al riavvio del computer. Conviene quindi far riferimento ai device name contenuti nella directory /dev/v4l/by-id/, ad esempio:

videodevice /dev/v4l/by-id/usb-Camera-index0

Fonti