Autore Topic: Video sorveglianza  (Letto 8133 volte)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Video sorveglianza
« il: 21 Settembre 2012 ore 12:00 »
a seguito dei fatti spiacevoli che mi hanno visto coinvolto (ho dato ampia descrizione in OT), sto pensando di mettere su un sistemino di video sorveglianza.
Grazie intanto a paolomi per le segnalazioni:
Mi ricordo di aver fatto una lista di quei programmi per un uso futuro, ma al momento non la trovo... ma se ricerchi videosorveglianza linux su google, non c'è carenza di risultati:
http://stighy.blogspot.it/2011/06/videosorveglianza-basso-costo-con-linux.html
http://dark-linux.net/videosorveglianza-con-zoneminder/
http://it.emcelettronica.com/progetto-videosorveglianza-con-linux-progetto-open-source#_http:

Molto bene  :)

Apro il post per eventuali suggerimenti e spero in futuro di pubblicare problemi/soluzioni. Chissà che non venga fuori una guida.

Primo quesito:
avete qualche suggerimento per la webcam? Requisito minimo che funzioni con linux, non serve grande risoluzione ed al momento mi basta una USB fissa (tanto deve stare in ufficio imboscata vicino al PC).
Budget max 30,00€

UPDATE: dopo la prima camera USB ho acquistato anche una dlink con visione notturna per interni ed una videocamera cinese per esterni (entrambe sui 100€).

Come funziona il software:
- in cron ho inserito una serie di istruzioni che, via http, comunicano con motion l'accensione e lo spegnimento delle camere e relativo motion detection. Questo lo script che chiamo con i vari parametri :
Codice: [Seleziona]
#!/bin/bash
# motion-start
#echo $USER
#echo $HOME

function run-motion {
  SERVICE="motion"
  #RESULT=`pgrep -l ${SERVICE} | grep -v grep | grep -v motion-start | grep -v kate`
  RESULT=`pgrep -x ${SERVICE}`
  echo $RESULT
  if [ "$RESULT" == ""  ]
  then
    echo "starting motion..."
    nice -n 18 /usr/bin/motion -m -c "/home/dino/.motion/motion.conf" &
  else
    echo "motion is already running"
  fi
}

echo ""
echo "**************************************************************"
date +"%Y/%m/%d [%H:%M:%S]"
echo "motion-start script running as user "$USER
case "$1" in
  start)
    run-motion
    sleep 4
    /usr/bin/vendor_perl/lwp-request http://localhost:8080/0/detection/start -Cdinolib:dino76 > /dev/null >&1
    echo "detection started"
    ;;
  pause)
    /usr/bin/vendor_perl/lwp-request http://localhost:8080/0/detection/pause -Cdinolib:dino76 > /dev/null >&1
    echo "detection paused"
    ;;
  kill)
    killall motion
    echo "motion killed"
    ;;
  help)
   echo "** motion-start script. Commands available **"
   echo "   start: activate motion capture. Run motion if not running."
   echo "   pause: disable motion capture."
   echo "   kill : kill all motion processes."
   echo "   help : print this screen."
   echo "   *    : run motion with default settings."
   ;;
  *)
    run-motion   
esac

- Le impostazioni di motion e dei vari thread di ogni camera si effettuano dai file motion.conf e thread#.conf
Questi quelli che uso io...
motion.conf (è troppo grande non riesco a pubblicarlo tutto, quindi ho eliminato le aprti standard per lasciare quelle interessanti)
[spoiler]
Codice: [Seleziona]
daemon off
process_id_file /home/dino/motion.pid
logfile /media/dati2/motion.log
;videodevice /dev/video0
v4l2_palette 17
input -1
norm 0
rotate 0

width 640
height 480
framerate 5

minimum_frame_time 0

netcam_keepalive off

; netcam_proxy value

netcam_tolerant_check off

roundrobin_frames 1
roundrobin_skip 1
switchfilter off

threshold 2000 #fare alcune prove
threshold_tune off
noise_level 32
noise_tune on

despeckle_filter EedDl

; area_detect value
; mask_file value

smart_mask_speed 0

lightswitch 0

minimum_motion_frames 2

pre_capture 0

post_capture 5

event_gap 60

max_movie_time 0

emulate_motion off
output_pictures off
output_debug_pictures off

quality 75
picture_type jpeg

ffmpeg_output_movies on
ffmpeg_output_debug_movies off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode daily
ffmpeg_bps 500000

ffmpeg_variable_bitrate 0 #altrimenti il video è corrotto

ffmpeg_video_codec mpeg4
ffmpeg_deinterlace off

use_extpipe off

snapshot_interval 3600
locate_motion_mode off

locate_motion_style box

text_right %Y-%m-%d\n%T-%q
text_left UFFICIO PROGETTI
text_changes off
text_event %Y%m%d%H%M%S
text_double off

target_dir /home/dino/Dropbox/remotecamera/shots
;snapshot_filename snapshots/%Y%m%d%H%M%S-%v-snapshot
;picture_filename pictures/%Y%m%d%H%M%S-%q
;movie_filename videos/%Y%m%d%H%M%S

timelapse_filename %Y%m%d-timelapse

ipv6_enabled off

stream_port 8081
stream_quality 40
stream_motion off

stream_maxrate 2
stream_localhost off

stream_limit 0
stream_authentication user:pwd
webcontrol_port 8080
webcontrol_localhost off
webcontrol_html_output on
webcontrol_authentication user:pwd

quiet on

# Remember: If you have more than one camera you must have one
# thread file for each camera. E.g. 2 cameras requires 3 files:
# This motion.conf file AND thread1.conf and thread2.conf.
# Only put the options that are unique to each camera in the
# thread config files.
thread /home/dino/.motion/thread1.conf
thread /home/dino/.motion/thread2.conf
thread /home/dino/.motion/thread3.conf
[/spoiler]

thread1.conf
[spoiler]
Codice: [Seleziona]
videodevice /dev/video0
text_left UFFICIO PROGETTI
target_dir /media/HP/Users/dino/Dropbox/remotecamera1/shots/
stream_port 8081
lightswitch 20
noise_level 64
text_changes on
threshold 3000
stream_quality 40
picture_filename pictures/CAM1-%Y%m%d%H%M%S-%q
snapshot_filename snapshots/CAM1-%Y%m%d%H%M%S-%v-snapshot
movie_filename videos/CAM1-%Y%m%d%H%M%S-video
framerate 25
[/spoiler]

thread2 e thread3 sono simili. Per le camere wifi ho solo ridotto il framerate per non intasare troppo la banda...

Come si vede dai file .conf i filmati e gli screenshot sono salvati in una cartella dropbox (così sono subito - si spera - salvati in rete in caso di manomissione o furto del PC).
Ogni notte faccio partire un backup che salva su disco capiente i video, lasciando su dropbox quelli degli ultimi 2-3 giorni (lascio i commenti delle vecchie implementazioni che non sempre funzionavano):

Codice: [Seleziona]
#!/bin/bash
# bkp-pictures
FOLDER_P=/media/dati2/bkpvideosorveglianza/pictures/$(date +Bkp-%Y%m%d)
FOLDER_S=/media/dati2/bkpvideosorveglianza/snapshots/$(date +Bkp-%Y%m)
FOLDER_V=/media/dati2/bkpvideosorveglianza/videos/$(date +Bkp-%Y%m)
#echo $FOLDER
mkdir -p $FOLDER_P
mkdir -p $FOLDER_S
mkdir -p $FOLDER_V
#mkdir -p $FOLDER_P/pictures/
#mkdir -p $FOLDER_S/snapshots/


echo " ******* backup video-sorveglianza *********"
date +"%Y/%m/%d [%H:%M:%S]"

# elimina filmati troppo brevi
find /media/HP/Users/dino/Dropbox/remotecamera?/shots/videos/* -mtime 0 -size -300k -delete

# vecchia implementazione
#find /media/HP/Users/dino/Dropbox/remotecamera?/shots/pictures/* -mtime +1 -exec mv {} $FOLDER_P/ \;
#find /media/HP/Users/dino/Dropbox/remotecamera?/shots/snapshots/* -mtime +3 -exec mv {} $FOLDER_S/ \;

#rsync -av --remove-source-files `find /media/HP/Users/dino/Dropbox/remotecamera?/shots/pictures/*.jpg -mtime +0` $FOLDER_P
rsync -av --remove-source-files `find /media/HP/Users/dino/Dropbox/remotecamera?/shots/snapshots/*.jpg -mtime +2` $FOLDER_S
rsync -av --remove-source-files `find /media/HP/Users/dino/Dropbox/remotecamera?/shots/videos/*.avi -mtime +2` $FOLDER_V
echo ""

Appena riesco metto online anche gli script per pubblicare la pagina pubblicata in rete per vedere il live delle camere...
« Ultima modifica: 23 Giugno 2013 ore 21:22 da dinolib »

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #1 il: 21 Settembre 2012 ore 12:07 »
C'è poi la questione software.

Motion sembra semplice, ma non trovo nella guida la possibilità di salvare immagini in ftp e inviare mail in caso di rilevamento di movimenti. Qui dicono che può farlo :-)
Leggerò con calma la guida, nel caso edito questo commento.

Zone minder sembra molto completo ma non ho ancora tempo di guardarci per capire se supporta ciò che mi serve.

Se avete consigli anche a proposito sono bene accetti.
« Ultima modifica: 21 Settembre 2012 ore 12:39 da dinolib »

Offline paolomi

  • *
  • Post: 288
  • Reputazione: 21
  • Akabei... con spacchettamento a destra
    • Mostra profilo
Re:Video sorveglianza
« Risposta #2 il: 21 Settembre 2012 ore 13:14 »
Mi ricordo di aver fatto una lista di quei programmi per un uso futuro, ma al momento non la trovo...
finalmente ho ritrovato quella lista...  ma putroppo c'è scritto solo l'homepage di motion, di zoneminder e di un negozio che vende schede PCI Videocapture.

avete qualche suggerimento per la webcam? Requisito minimo che funzioni con linux, non serve grande risoluzione
Qualche mese fa mi hanno regalato una Microsoft LifeCam HD-3000 e, a dispetto del nome, sotto linux con skype funziona bene.
Usare Chakra senza PulseAudio

«L'anno prossimo passerò a pulseaudio» (frase detta da me alcuni anni fa… e ancora valida!)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #3 il: 21 Settembre 2012 ore 13:27 »
Grazie, sembra molto buona! L'HD non mi serve, ma penso posso fare una 640x480. A me più che vedere i farabutti interessa sapere se c'è qualcosa che si muove (sì, certo, se vedo anche che è stato un topo a far accendere la camera è meglio, almeno non esco di casa).

Quello a cui sto pensando è:
- deve attivarsi da sola fra le 20.30  e le 7.00
- se rileva movimento iniziare a inviare immagini ad un server ftp (magari una al secondo)

Sul client uno script che legge il sito ftp ogni minuto, se rileva nuovi file fa partire un allarme sonoro (se il caso attiva l'audio e lo mette e palla).

Non sono grande esperto di bash, ma il client mi sembra fattibile. Se poi qualcuno vuole divertirsi a postare qualcosa è il benvenuto. Specie la parte per cambiare l'audio, che sono una pippa (il client andrebbe lanciato da cron ogni minuto, o è meglio che sia lui a loopare ogni tot? mah, con cron mi sembra più semplice).

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #4 il: 21 Settembre 2012 ore 13:50 »
intanto ho messo su ccr motion-git, non tanto perchè cercavo una versione recente ma perchè questa almeno compila...

Offline paolomi

  • *
  • Post: 288
  • Reputazione: 21
  • Akabei... con spacchettamento a destra
    • Mostra profilo
Re:Video sorveglianza
« Risposta #5 il: 21 Settembre 2012 ore 14:17 »
Sul client uno script che legge il sito ftp ogni minuto, se rileva nuovi file fa partire un allarme sonoro (se il caso attiva l'audio e lo mette e palla).
I file in remoto servono solo in caso di furto del pc: per avere le prove del furto, altrimenti vengono rubate anche quelle...
come ti ho già detto in precedenza non ho ancora approfondito l'argomento, però da quel poco che ho intuito, questi programmi, in caso di allarme, ti permettono di eseguire una serie di comandi definiti dell'utente (script). Questi servono per avvertirti in tempo "reale" col servizio che preferisci: una email, un sms (tramite servizi a pagamento su internet o tramite un cellulare connesso al pc), irc, im o quello che vuoi, l'unico limite è la fantasia. Ad esempio, se hai ancora il vecchio modem 33.6kbps che usavi per navigare su internet nell'era pre-adsl, lo attacchi al pc e alla linea telefonica, (il pc deve avere ancora la seriale, quelli nuovi non ce l'hanno più  :P) e gli fai chiamare il tuo cellulare in caso di allarme. Se il cellulare suona e vedi che è il numero dell'ufficio, non devi neanche rispondere, ma solo correre!  ;D

EDIT: se non hai più il vecchio modem puoi sempre fare una telefonata via VOIP, skype o simili
« Ultima modifica: 21 Settembre 2012 ore 14:31 da paolomi »
Usare Chakra senza PulseAudio

«L'anno prossimo passerò a pulseaudio» (frase detta da me alcuni anni fa… e ancora valida!)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #6 il: 21 Settembre 2012 ore 14:34 »
Il problema è proprio questo: se non ho modo di farmi chiamare sul telefono, come faccio a farmi svegliare?
Cmq ci penso un po' su, magari viene fuori qualcosa di meglio.

motion sembra proprio completo. Ci sto guardando, setto un po' di impostazioni, ma senza camera è proprio ridicolo  ;D

Offline paolomi

  • *
  • Post: 288
  • Reputazione: 21
  • Akabei... con spacchettamento a destra
    • Mostra profilo
Re:Video sorveglianza
« Risposta #7 il: 21 Settembre 2012 ore 15:11 »
Il problema è proprio questo: se non ho modo di farmi chiamare sul telefono, come faccio a farmi svegliare?
non ho capito questo punto... fammi capire i mezzi di cui disponi.  Il tuo ufficio ha un telefono e una connessione internet? Casa tua, dove dormi, ha una connessione internet?
Usare Chakra senza PulseAudio

«L'anno prossimo passerò a pulseaudio» (frase detta da me alcuni anni fa… e ancora valida!)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #8 il: 21 Settembre 2012 ore 15:24 »
ok, due connessioni internet casa-lavoro. voglio che quando viene segnalato un movimento a lavoro, a casa si faccia bordello x svegliare il dormiente

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #9 il: 21 Settembre 2012 ore 17:20 »
Intanto ho:

-messo su ccr motion-git che quello normale non compila
- preparato lo script per suonare a manetta e poi rimettere il volume a posto (si può decisamente migliorare, ma assicuro che suonare suona):
Codice: [Seleziona]
#!/bin/bash
#

#####################################################################
# Get current volume.
function get_volume()
{
    mixer=$(amixer get Master | grep 'Front Left:')
    echo $mixer | cut -d ' ' -f 4
}


#####################################################################
# Set volume.
function set_volume()
{
    amixer cset iface=MIXER,name="Master Playback Volume" $1 >/dev/null
}

if [[ $(basename $0 .sh) == 'playalarm' ]]; then
    sound_file=~/scripts/alarm.wav
    if [[ "$1" ]]; then sound_file="$1"; fi

    ovol=$(get_volume)

    vol=999999
    echo "Playing at: $vol"
    set_volume $vol

    echo "press enter to exit"
   
    count=0
    while : ; do
aplay $sound_file
read -t 0 && break
    done

    echo "Resetting volume to: $ovol"
    set_volume $ovol
fi

work in progress...

Offline paolomi

  • *
  • Post: 288
  • Reputazione: 21
  • Akabei... con spacchettamento a destra
    • Mostra profilo
Re:Video sorveglianza
« Risposta #10 il: 21 Settembre 2012 ore 17:37 »
Faccio un riepilogo.
1- la soluzione più semplice ed economica: connettiamo un vecchio modem al pc e alla linea telefonica e ci facciamo telefonare in caso di allarme
2- se il punto 1 non è fattibile perché non si dispone di una linea telefonica, c'è una soluzione simile ma più impegnativa: connettiamo il pc a un telefono cellulare e poi ci facciamo telefonare in caso di allarme.
3- il pc di videosorveglianza è connesso a internet, ci facciamo telefonare con un servizio voip a pagamento: esistono diversi servizi o possiamo usare  asterisk, ma non ho mai approfondito.
4- il pc di videosorveglianza è connesso a internet e il pc di casa è connesso a internet: quest'ultimo ha un paio di casse acustiche col volume al massimo per avvertirci in caso di allarme. Lo svantaggio è che se siamo fuori casa, non sentiamo l'allarme!

Da quello che ho capito, preferisci la soluzione 4. Possiamo usare diversi programmi per fare una cosa di questo tipo... per esempio, rimanendo in tema di telefonia,  avevo sentito che c'era la possibilità di controllare skype a riga di comando, cioè puoi fargli fare una chiamata con una riga di comando... quindi dirai a motion di eseguire tale riga quando scatta l'allarme e sei a posto. A casa tua, ovviamente, attiva skype con il volume alto e quando senti la chiamata...

Stasera approfondiamo il discorso. Ora il dovere chiama.

ps: odio quando sto per postare un messaggio e mi dice che qualcun altro mi ha anticipato!   :P
Usare Chakra senza PulseAudio

«L'anno prossimo passerò a pulseaudio» (frase detta da me alcuni anni fa… e ancora valida!)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #11 il: 21 Settembre 2012 ore 17:56 »
ps: odio quando sto per postare un messaggio e mi dice che qualcun altro mi ha anticipato!   :P

eh già. Comunque, come hai visto, lo script per l'allarme l'ho fatto. Ho fatto anche uno script che monitora la cartella delle immagini (che metto sotto dropbox) ogni 30 secondi. Se vede un cambiamento chiama l'allarme.

Ultima cosa da sistemare è... la webcam!!  ;D

Lo script che cerca cambiamenti nella cartella:
Codice: [Seleziona]
#!/bin/sh

check() {
    dir="$1"
    echo monitoring folder $dir
   
    chsum1=`ls -l $dir | md5sum`
    chsum2=$chsum1
    while [ "$chsum1" == "$chsum2" ]; do
      # folder doesn't changed
        sleep 30
        chsum2=`ls -l $dir | md5sum`
    done
    # folder changed!
    echo "Change in monitored folder!"
    eval $2
}

while [ : ]; do
   check $*
done

il monitor dovrebbe essere una cosa del genere:
Codice: [Seleziona]
watchfolder /home/nomeutente/dropbox/videosorveglianza/snapshots playalarm
Ovviamente mi sono messo sono cron anche uno script che salva il mio indirizzo ip (uso whatismyip.com), così posso vedere live la telecamera. Anni fa usavo un servizio free che ti assegnava un sottodominio, ma dovevi installare un programmino. Esistono ancora, funzionanti sotto linux?
« Ultima modifica: 21 Settembre 2012 ore 18:01 da dinolib »

Offline fabio58

  • *
  • Post: 414
  • Reputazione: 10
    • Mostra profilo
Re:Video sorveglianza
« Risposta #12 il: 21 Settembre 2012 ore 17:58 »
non so se ti possa interessare su Aur di Arch trovi il tarball Zoneminder proprio per video sorveglianze con linux

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Video sorveglianza
« Risposta #13 il: 21 Settembre 2012 ore 18:02 »
Grazie fabio, ho visto. Ma motion è semplice e x ora funziona a dovere. Zoneminder, basato su Java, è professionale. Ma proprio xè non mi va di smadonnare con jdk l'ho scartato (a meno che con motion mi blocco).

Offline paolomi

  • *
  • Post: 288
  • Reputazione: 21
  • Akabei... con spacchettamento a destra
    • Mostra profilo
Re:Video sorveglianza
« Risposta #14 il: 21 Settembre 2012 ore 19:36 »
Anni fa usavo un servizio free che ti assegnava un sottodominio, ma dovevi installare un programmino. Esistono ancora, funzionanti sotto linux?
ne ho sentito parlare, ma non li ho mai usati in vita mia:
http://chakra-linux.org/ccr/packages.php?O=0&K=dyndns&do_Search=+Vai+
Usare Chakra senza PulseAudio

«L'anno prossimo passerò a pulseaudio» (frase detta da me alcuni anni fa… e ancora valida!)

 

Template by Homey | Sito ufficiale | Disclaimer