Videosorveglianza con Raspberry Pi – Parte terza

closeQuesto articolo è stato pubblicato 3 anni 4 mesi 15 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

Ma adesso? Posso attivare e disattivare il sistema se ho una connessione SSH e posso vedere le foto salvate solo se mi collego con un client SCP e mi scarico le immagini sul mio PC. Io voglio che tutto questo sia fattibile in qualunque parte del mondo e dal mio telefonino! Ok, adesso è necessario chiedere una mano a Twitter. Quello che a noi serve è che il programma ci dia evidenza del movimento via Twitter (con un tweet contenente l’immagine) e che si possa comandare con un piccolo set di istruzioni, anche da remoto. Questa seconda parte la faremo tramite i DM.

Perché non uso i DM per le immagini del movimento? Per due buoni motivi: il primo è che la libreria Python non gestisce i DM con le immagini, il secondo, molto più importante, è che Twitter limita moltissimo l’invio di DM in modo massivo. In caso di movimento prolungato avremo una media di 3-4 immagini al secondo, dopo poco tempo i DM non verranno più accolti da Twitter.

Registriamo un nuovo account Twitter e, seguendo questa breve guida, otteniamo tutte le chiavi di autorizzazione per poter utilizzare il nostro nuovo account Twitter via Python. Ricordate che l’account deve essere protetto e l’unico follower dovrà essere il vostro account Twitter personale (non vorrete mica che qualcuno veda dentro casa vostra o abiliti/disabiliti il sistema a suo piacimento?)

Python dovrebbe già essere installato sul vostro Raspberry Pi, quindi si può procedere ad installare “tweepy

1
sudo pip install tweepy

Fatto. Semplice, no? Adesso è giunto il momento di mettere mano a Python e insegnare alla nostra scheda cosa deve fare, un passo alla volta avremo il nostro sistema completo e funzionante.

Se avete registrato il nuovo account, creato l’app di Twitter e dati i diritti anche per scrivere i DM, sarete in possesso delle chiavi di autenticazione per poter iniziare ad interagire con il social network. Non fate come ho fatto io che ho prima dato le autorizzazioni di sola lettura, quando poi ho abilitato i DM tutte le chiavi sono cambiate e le ho dovute sostituire nei programmi. Iniziamo dal “mandami una menzione se rilevi del movimento”

Per comodità createvi una cartella “tweepy” o un altro nome a voi gradito nella vostra home /home/pi

Adesso create il primo file di python che potete chiamare “tweet.py”

1
nano tweet.py

Potete usare l’editor di testo “nano” già presente sul raspberry e programmare direttamente dalla console SSH, in alternativa potete installare un bel server FTP sul raspberry, dare l’accesso in lettura e scrittura alla cartella dei vostri script ed usare un comodissimo editor di testo sul vostro PC/Mac che apra i file via FTP. La seconda soluzione vince in comodità. Su Mac uso Komodo Edit, per PC potete usare Notepad++ o un altro milione di editor di testo che supportino FTP e colorazione del codice

Questo è il programma che manda un tweet quando il movimento è rilevato

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
#!/usr/bin/env python2.7
import tweepy
import sys
import datetime
import time
 
# chiavi di accesso per Twitter
consumer_key = 'xxx'
consumer_secret = 'xxx'
access_token = 'xxx'
access_token_secret = 'xxx'
 
# autenticazione su twitter
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
 
api = tweepy.API(auth)
 
# genero la stringa con data/ora attuale
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
 
# utente che deve essere notificato
twitter_user = "@iltuoutente"
 
# controllo l'esistenza di due argomenti nel lancio del file py
if len(sys.argv) >=2:
    tweet_image = sys.argv[1] #motion salva nell'argomento il percorso completo del fiel appena salvato
    tweet_text = twitter_user + " Movimento rilevato! (" + st + ")"
else:
    tweet_text = twitter_user + " Qualcosa non va nello script del tweet..."
 
# mando il tweet
api.update_with_media(tweet_image, status=tweet_text)

Partendo da livello zero in Python e usando per bene Google sono riuscito ad imparare le basi, quindi questo piccolo programma fa esattamente quel che a me serve. Adesso si deve dire a Motion “quando salvi un’immagine, twittala!” per fare questo andiamo nel file di configurazione e mettiamo il programma nella riga relativa all’evento

1
on_picture_save python /home/pi/tweepy/tweet.py %f

Il “%f” dice a Motion che alla fine del comando deve mettere il percorso completo dell’immagine appena salvata. Se adesso attivate a mano il programma e generate movimento davanti alla videocamera ecco che compariranno tutti i tweet con i frame e l’indicazione di dove è avvenuto il movimento. Ma dopo tante registrazioni, tutti questi file, anche se piccoli, inizieranno ad occupare un po’ di spazio sulla scheda SD del raspberry, sicuramente, una volta fatto il tweet, l’immagine non ci servirà più e la potremo cancellare. Per fare questo c’è il comando lanciato all’evento “on event end”, che se ricordate, accade dopo un numero di secondi impostato nel parametro “event gap” all’interno del file di configurazione

1
on_event_end rm /home/pi/Pictures/*.jpg

Alla fine dell’evento, le immagini saranno state mandate su twitter, quindi possiamo cancellare tutti i file immagine all’interno della cartella dove il programma li salva

(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 *