Differenze tra le versioni di "Motion"
m (categorizzazione) |
m (→Altre configurazioni importanti: IPv6 enabled) |
||
(3 versioni intermedie di uno stesso utente non sono mostrate) | |||
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 === | ||
− | |||
+ | <!-- | ||
* '''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 | + | # chown motion:motion /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 | + | # chown -R motion:motion /var/run/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 | ||
+ | |||
+ | * Accesso da IPv6: questo parametro è <code>off</code> 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 | * 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 118: | ||
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 125: | ||
# 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 | ||
+ | #.... | ||
+ | |||
+ | === Device name persistente === | ||
+ | In presenza di più camere non è assicurato che ognuna mantenga lo stesso identificatore <code>/dev/video'''x'''</code> in seguito al riavvio del computer. Conviene quindi far riferimento ai device name contenuti nella directory <code>/dev/v4l/by-id/</code>, ad esempio: | ||
+ | |||
+ | videodevice /dev/v4l/by-id/usb-Camera-index0 | ||
+ | |||
+ | ==== Fonti ==== | ||
+ | * http://www.gabrielemerli.com/?p=2025 | ||
[[Category:Officina]] | [[Category:Officina]] | ||
[[Category:Howto]] | [[Category:Howto]] |
Versione attuale delle 14:32, 9 ott 2021
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 adoff
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