Differenze tra le versioni di "Motion"

Da GolemWiki.
Jump to navigation Jump to search
m (categorizzazione)
(Aggiunte nuove informazioni)
Riga 27: Riga 27:
 
== Configurazione ==
 
== Configurazione ==
  
Di seguito viene illustrato come configurare motion per essere lanciato da utente non amministratore.
+
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 ===
 
=== Cartelle e privilegi ===
All'installazione viene creata la coppia utente/gruppo <code>motion</code>. È opportuno marchiare files e directory di lavoro come accessibili e scrivibili dal suddetto gruppo.
 
  
 +
<!--
 
* '''Aggiunta al gruppo motion'''
 
* '''Aggiunta al gruppo motion'''
 
  # usermod -a -G motion ''utente''
 
  # usermod -a -G motion ''utente''
 +
-->
  
 
* '''File di log''' - di default il log viene dato nella shell. È preferibile salvare eventuali messaggi di errore ed altre informazioni.
 
* '''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
 
  # touch /var/log/motion.log
  # chown :motion /var/log/motion.log
+
  # chown motion:motion /var/log/motion.log
# chmod g+w /var/log/motion.log
 
  
 
Editare il file <code>/etc/motion/motion.conf</code>, decommentando la riga <code>;logfile</code> (''il punto e virgola e il cancelletto denotano i commenti'') ed impostando il precedente file di log:
 
Editare il file <code>/etc/motion/motion.conf</code>, decommentando la riga <code>;logfile</code> (''il punto e virgola e il cancelletto denotano i commenti'') ed impostando il precedente file di log:
Riga 48: Riga 48:
  
 
  # mkdir -p /var/run/motion
 
  # mkdir -p /var/run/motion
  # chown -R :motion motion
+
  # chown -R motion:motion /var/run/motion
# chmod -R g+w 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 (si noti che i comandi che seguono sono dati come utente non privilegiato):
+
La cartella <code>/var/run</code> 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 ~
 
  $ cd ~
  $ mkdir motion
+
  $ mkdir registrazioni
 +
$ chgrp motion registrazioni
  
 
Anche questa cartella deve essere specificata nel file di configurazione, alla riga <code>target_dir</code>:
 
Anche questa cartella deve essere specificata nel file di configurazione, alla riga <code>target_dir</code>:
  
  target_dir /home/''utente''/motion
+
  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 ===
 
=== Altre configurazioni importanti ===
Riga 66: Riga 104:
  
 
  stream_localhost off
 
  stream_localhost off
 +
  
 
* 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
 
* 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
Riga 75: Riga 114:
  
 
  framerate 2
 
  framerate 2
 +
  
 
* Autenticazione: richiedere una password per vedere la webcam. Qui intervengono due parametri:
 
* Autenticazione: richiedere una password per vedere la webcam. Qui intervengono due parametri:
Riga 81: Riga 121:
 
  # 1 = autenticazione di base
 
  # 1 = autenticazione di base
 
  stream_auth_method 1
 
  stream_auth_method 1
 
+
 
  # utente:password
 
  # utente:password
 
  stream_authentication golem:golem
 
  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 <code>motion.conf</code>, mentre bisogna inserire i riferimenti ai sotto files:
 +
 +
thread /etc/motion/motion-cam1.conf
 +
thread /etc/motion/motion-cam2.conf
 +
#....
  
 
[[Category:Officina]]
 
[[Category:Officina]]
 
[[Category:Howto]]
 
[[Category:Howto]]

Versione delle 21:37, 30 dic 2017

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


  • 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
#....