Ciao ragazzi!
Finalmente eccoci con un nuovo tutorial!
L'ultima volta, come mio solito, vi avevo
chiesto la vostra preferenza circa la successiva
guida da realizzare e devo dire che siete
stati abbastanza compatti nella scelta.
Per questo motivo oggi andremo a vedere come
videosorvegliare con il Rapsberry Pi Zero Wireless.
In realtà può essere utilizzato 
tranquillamente un qualsiasi Raspberry Pi
purché abbia la porta per la PiCamera.
Prima di addentrarci, però, volevo anticiparvi
che vista la mole di voti che avete già dato
ad altre due tematiche per futuri tutorial,
per questo turno non ci saranno votazioni
ed i prossimi due video saranno appunto dedicati
a ciò che avete già selezionato in passato;
ma non esitate comunque a suggerire nuove
idee nei commenti perché io continuo a segnarmele
tutte per rimetterle poi ai vostri voti.
Bene!
Non perdiamo altro tempo perché di cose da
dire oggi ce ne sono diverse.
L'idea alla base di questo progettino è quella
di realizzare un sistema formato da una o
più videocamere poste dove a voi necessario
e che possano essere controllate da remoto.
Questo progetto in particolare è sicuramente
un base di partenza e potrà essere potenziato
e migliorato in tantissimi modi (anzi se volete
saperne di più scrivete nei commenti e insieme
valuteremo se realizzare una seconda parte
più avanzata); ma quello che più mi premeva
ora era farvi capire le basi e come poter
creare un -rudimentale- sistema di sorveglianza.
Il fulcro di tutto è la PiCamera, che è
la camera ufficiale della Raspberry Pi Foundation
per i suoi single board computer, come in
questo caso il pi zero wireless.
Ne esistono di vari tipi e revisioni, e ci
sono anche modelli non ufficiali ma perfettamente
compatibili: quella che ho io è quella ufficiale
da 8 megapixel nella sua ultima revisione,
ma ne esiste anche una versione più vecchia
da 5 megapixel e c'è anche quella senza filtro
IR che è consigliata per l'uso al buio.
Per quanto riguarda il pi stesso, invece,
personalmente ho deciso di impiegare proprio
il Pi Zero Wireless per 2 motivi: rispetto
al Pi 3 esso è decisamente più compatto
e quindi meno invasivo se posizionato in giro
per casa; e poi perché rispetto al Pi Zero
standard, questo modello ha già integrato
il Wi-Fi che come vedremo ci permetterà di
accedere alla videocamera da remoto.
Nulla vieta comunque di utilizzare un
Pi 3 o un Pi Zero con dongle Wi-Fi esterno.
La cosa carina del Pi Zero Wireless è che
il suo case ufficiale ha un coperchio predisposto
appositamente per ospitare la PiCamera, ed
in più (visto che tale videocamera viene
venduta con il cavo compatibile con il Raspberry
Pi 3) nella confezione è compreso anche un
cavetto sostitutivo compatibile con la dimensione
ridotta della porta per la camera presente sui Pi 0.
Collegare questo cavo è cosa davvero banale:
occorre sfilare delicatamente il cavo preinstallato
nella PiCamera e sostituirlo con quello compatibile
con il Pi Zero.
Dopodiché va collegato il cavo nel Pi Zero stesso,
e la camera incastrata nell'apposita area del coperchio.
Finiti questi due semplici passaggi la PiCamera
sarà collegata saldamente al nostro SBC.
A questo punto per usare la PiCamera con il
Raspberry Pi possiamo utilizzare Raspbian OS
che arriva con già tutte le librerie preinstallate
(o comunque facilmente reperibili dai repository).
Il passaggio fondamentale da compiere per
poter abilitare l'accesso alla PiCamera è
utilizzare raspi-config oppure da interfaccia
utente il tool Raspberry Pi Configuration
nelle Preferenze di sistema ed abilitare l'interfaccia
della camera.
Fatto ciò potrete utilizzare la PiCamera
per scattare foto o registrare video, etc.
E il modo più facile per farlo è ovviamente
con il linguaggio di programmazione python
perché la fondazione inglese fornisce le librerie già
pronte all'uso e, se foste interessati a smanettarci,
trovate la documentazione completa sul sito ufficiale
che è linkato nella descrizione di questo video.
Ovviamente accedere alla camera dal Raspberry
Pi stesso serve a poco, o addirittura a niente
nel caso specifico del progettino che stiamo
realizzando.
L'idea come dicevo è quella di poter controllare
da remoto, quindi dal nostro PC o dal tablet
oppure dallo smartphone, quello che la camera
sta riprendendo.
Per questo ho realizzato una piccola web-app
sulla falsariga di quella che realizzai per
il tutorial su come controllare da remoto
le prese di casa con il Raspberry Pi, che
chiaramente va installata sul Pi Zero e che
permetterà di controllare la PiCamera dall'esterno.
L'applicazione richiede l'installazione di
alcuni pacchetti dai repository di Raspbian OS
e di scaricare il software da me fornito che
ho caricato come mio solito su github.
Per tutte le istruzioni ed i comandi da eseguire
rimando all'articolo abbinato a questo tutorial
che trovate linkato in descrizione e tra le
schede di questo video.
Arrivati a questo punto, visto che mi seguite
da tempo o che comunque trovate tutte le informazioni
dettagliate sul blog, darò per scontati alcuni passaggi,
come ad esempio come configurare Apache con PHP.
In ogni caso, ripeto, trovate maggiori dettagli sul blog
e nei precedenti tutorial che ho già pubblicato
qui sul canale (ovviamente tutti linkati in
descrizione e nelle schede di questo video).
Come funziona e cosa permette di fare la web-app?
Tanto per cominciare Secure[P]EYE (perdonate
il nome molto originale :-P) è una sorta
di plancia di comando da cui avviare, interrompere
e controllare tutte le camere configurate.
Essa può essere acceduta semplicemente digitando
l'indirizzo IP assegnato al raspberry pi seguito
dal nome securpeye sul browser web del vostro
PC, smartphone o tablet.
Il codice così come lo trovate su github
è configurato per utilizzare una sola camera,
ma è possibile aggiungerne altre modificando
i file di configurazione: magari un giorno
tutto potrà diventare completamente configurabile
da interfaccia utente... Chissà...
Tre cose però sono già possibili da UI:
dare un nome alla specifica camera; indicare
a quale indirizzo IP essa risponde; e impostare
la durata in secondi della registrazione video
(cosa che vedremo tra poco).
Una volta configurato l'ambiente, potretre
attivare e controllare la camera di interesse,
oppure accedere all'archivio di tutte le foto
ed i video precedentemente catturati.
Ribadisco ancora una volta che questo progettino
è poco più di una demo ed una base su cui
potenzialmente costruire un sistema molto
più complesso, robusto e affidabile.
Comunque, attivando la camera verrà lanciato
lo streaming video con l'output di ciò che
la PiCamera sta riprendendo; potremo poi decidere
se interrompere la ripresa, registrare un
video oppure scattare una foto.
Poiché la PiCamera non può essere controllata
da più processi in simultanea (si dà per
scontato che sia sempre una ed una soltanto
l'azione in esecuzione), scattando una foto
o avviando la registrazione video, lo streaming
dovrà necessariamente esser bloccato e l'utente
dovrà poi rilanciarlo manualmente al termine
del processo di cattura.
Queste operazioni comunque sono
completamente trasparenti perché gestite
dalla web-app. Come ampiamente ripetuto
non ho voluto complicare troppo
le cose, ma è ovviamente possibile
perfezionare tutti i vari meccanismi
d'uso ad esempio facendo rilanciare
automaticamente lo streaming dopo
la cattura, oppure aggiungendo delle informazioni
testuali come data ed ora al di sopra delle
catture, e quant'altro; ma soprattutto si
potrebbero utilizzare librerie molto più
complesse per fare ad esempio riconoscimento
di volti od oggetti (anche in movimento),
oppure avviare la registrazione di video nel
qual caso accada qualche evento, o ancora
farci mandare una notifica se la camera rileva qualche
anomalia e quant'altro. Sono tutti esempi di
funzionalità che se volete possiamo indagare
in modo più approfondito in prossimi focus.
Perché quello su cui volevo concentrarmi, invece,
è come funziona lo streaming video dal pi.
Il codice python che se ne occupa non fa altro che
sfruttare il modulo http.server di python per tirar su
un piccolo streaming server con il quale stremmare
l'output dalla camera tramite il formato mjpeg.
Esistono sicuramente soluzioni più raffinate
ma che vanno oltre gli scopi di questo tutorial:
ad esempio vi segnalo la libreria pistreaming
che tira su un piccolo streaming server a
bassa latenza il quale può anche accettare
più connessioni in contemporanea
(per lo meno finché la banda a disposizione
del Raspberry Pi ce la fa).
Personalmente ho avuto qualche problema ad
integrare questa libreria con la web-app (anche
se sono sicuro che con qualche smanettamento
in più si possa fare) e quindi alla fine
sono tornato alla modalità basilare che comunque
fa il suo dovere senza troppi fronzoli.
I codici che invece si occupano della cattura video
o foto sono davvero banali poiché la libreria
della picamera offre tutto l'occorrente richiamabile
con pochissimi passaggi.
Bene, prima di salutarvi volevo precisare
ancora una volta che quello che abbiamo visto
oggi è appunto una demo che può essere utilizzata
senza problemi in casa (o ovunque vogliate)
sotto rete intranet locale. Personalmente ne sconsiglio
l'utilizzo via internet poiché il tutto non è ottimizzato
e non viene fornita alcuna garanzia di sicurezza
sui dati che vengono trasmessi.
Detto ciò, vi aspetto nei commenti
per sapere cosa ne pensate
e se avete trovato utile
o interessante questo video.
Se il focus vi è piaciuto fatemelo sapere
con un bel like, e se ancora non lo foste
non dimenticatevi di iscrivervi al canale
attivando le notifiche per essere subito avvisati
quando pubblicherò i prossimi tutorial.
Ancora una volta rimando al blog per tutti
i dettagli su dove reperire e come configurare
questo piccolo e semplice sistema
di videosorveglianza da remoto.
E noi ci sentiamo presto!
Ciaooo!
