Videosorveglianza con Raspberry Pi – Parte sesta

closeQuesto articolo è stato pubblicato 4 anni 5 mesi 2 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi.

Per chi si fosse perso le puntate precedenti: Parte prima, Parte seconda, Parte terza, Parte Quarta, Parte quinta

Ed eccoci all’ultimo step prima di implementare il controllo vero e proprio. Diciamo che questo è lo step del paranoico.

Non mi arriva nessun tweet con il movimento, ma siamo sicuri che vada tutto bene? Io sto tranquillo e tu mi mandi ogni ora un foto della zona sotto controllo, in definizione più alta di quella del controllo in tempo reale.

Questo il codice del file “foto_oraria.py”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python2.7
import tweepy
import sys
import datetime
import time
import subprocess
import os
 
# qualche costante
utente_dm = "tuoutente" # utente a cui mandare i DM (magari poi saranno gestibili diversi utenti)
 
 
# Autenticazione di twitter
consumer_key = 'xxx'
consumer_secret = 'xxx'
access_token = 'xxx'
access_token_secret = 'xxx'
 
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
 
api = tweepy.API(auth)
 
# memorizzo il timestamp attuale (cosi' lo metto nei tweet ed evito il blocco dei doppioni)
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
 
# controllo se il processo 'motion' e' attivo o no
processname = 'motion'
tmp = os.popen("ps -Af").read()
proccount = tmp.count(processname)
 
# se motion e' attivo la videocamera e' impegnata, devo quindi prima spegnerlo
if proccount != 0:
    os.system("pkill motion") # ammazzo il processo motion
    time.sleep(5) #aspetto 5 secondi in modo che il processo venga terminato
    os.system("raspistill -w 1600 -h 1200 -t 1 -o /home/pi/Pictures/SingoloClick.jpg") #scatto la foto a 1600x1200 e la salvo nel file SingoloClick.jpg
    time.sleep(5) #aspetto 5 secondo per la memorizzazione della foto. La videocamera e' un po' lenta
    os.system("/home/pi/motion-mmal/motion") # riattivo il processo motion
else:
    os.system("raspistill -w 1600 -h 1200 -t 1 -o /home/pi/Pictures/SingoloClick.jpg") #motion, non e' attivo. Scatto semplicemente la foto
 
#mando il tweet
api.update_with_media("/home/pi/Pictures/SingoloClick.jpg", utente_dm + " Istantanea del " + st)
#cancello il file immagine appena salvato
os.system("rm /home/pi/Pictures/SingoloClick.jpg")

L’attività, come le altre, è banale. Faccio una foto ogni ora e la twitto. L’unico problema è che se la videocamera è impegnata dal controllo di movimento, la foto non si può fare. si deve quindi disattivare, fare la foto e riattivare. La foto, una volta salvata, viene twittata e poi cancellata

Per fare questo è di nuovo necessario mettere mano al crontab ed aggiungere l’operazione, tutte le ore al minuto 00

1
2
# scatto una foto ad ogni ora
00 * * * * python /home/pi/tweepy/foto_oraria.py >/dev/null 2>&1

Tutto sommato semplice, no?

(continua…)

Nota importante, da leggere prima di commentare

Questo è un blog scritto per passione, non fornisco quindi risposte di tipo professionale, se avete bisogno di un aiuto tecnico rivolgetevi ad un professionista di fiducia, non offendetevi se mi astengo dal rispondere. Vi ringrazio per la comprensione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.