Prima di tutto devo ringraziare Francesco ilTucci del podcat GeekCookies. Se non avessi ascoltato l’episodio 21 (e non avessi letto il blog di Francesco) questo mio piccolo progetto non esisterebbe. Ma soprattutto non mi sarei avvicinato al mondo di Python, piuttosto interessante! Vi invito quindi a dare un occhio al suo materiale…

L’idea di base (molto semplice) è di ricevere le notifiche di movimento provenienti dal sistema di video-sorveglianza  di casa direttamente sugli account Telegram mio e di mia moglie.

Quasi tutti i modelli di camere IP hanno in dotazione una APP che fa (tra la varie cose) una cosa simile: ma questo in genere presuppone il dover aprire delle porte sul router di casa e/o sottoscrivere un servizio cloud con il produttore. Altre camere invece possono anche inviare notifiche via email. Inutile dire che tutte le soluzioni già pronte, o per motivi di sicurezza o per motivi di flessibilità, sono state subito scartate.

Perché?

Questa soluzione non necessità né di esporre le camere IP su Internet, né di sottoscrivere servizi con fornitori terzi, né di aprire alcune porte IP in uscita sul router.

Inoltre è indipendente dal modello delle camere: potete usare camere differenti ed averne comunque la gestione unificata:

  • qui trovate la guida per l’installazione e la configurazione
  • qui potete scaricare l’ultima versione.

Tutto il codice (ancora in uno stato grezzo ma sostanzialmente funzionante) lo trovate qui su GitHub. Sarà apprezzata ogni contribuzione (visto anche il mio scarso tempo).

Cosa serve

  • Alcune camere IP (anche di modelli differenti) che però dispongano della funzione motion detection e che, in caso di movimento, possano depositare l’immagine JPG (o lo spezzone video) su un server FTP. E’ importante che le camere abbiamo un sito web per la configurazione dei parametri.
  • Un server su cui far girare lo script python (magari come servizio) ed il servizio FTP: io ho un Raspberry Pi (che tra l’altro mi funge da server OpenVPN). Ma a volte è possibile usare un NAS o in alcuni casi anche lo stesso router.

Lo script Python

Il codice molto grezzo (è stato scritto in un pomeriggio) ha due moduli applicativi integrati:

  • Un watchdog che verifica l’arrivo di JPG all’interno della cartella FTP
  • il gestore del Bot di Telegram (che sfrutta la libreria telepot) che da una parte riceve i messaggi della chat da parte degli utenti, dall’altra invia le notifiche.

Lo script interagisce quindi con le camere IP e preleva le loro immagini .jpg inviandole poi ad uno o più account Telegram. Le immagini vengono spedite in chat man mano che vengono create sul file system: il modulo whatchdog è infatti in ascolto su una cartella locale. Mentre il modulo telepot si occupa di gestire il BOT. In questo modo è possibile farsi spedire le immagini di una camera, magari acquisita a valle di un movimento o di un rumore, direttamente su una chat dedicata su Telegram.

ScarcellaBOT - screeshot - 00002 ScarcellaBOT - screeshot - 00004 ScarcellaBOT - screeshot - 00003 ScarcellaBOT - screeshot - 00001

Ovviamente è possibile anche configurare il comportamento delle camere via chat Telegram: si può per esempio spegnere o accendere il motion detection o (cosa più interessante) chiedere le immagini di questo istante.

La cosa che oggettivamente (oltre ad essere poco elegante) è un po’ fastidiosa è popolare il file di configurazione: per ogni camera è infatti necessario censire i parametri di rete e tutti gli URL che servono per comandare le camere. Spesso questi URL si possono trovare su Internet a valle di una breve ricerca, a volte è necessario ricavarseli tramite un proxy HTTP!

Trovate tutti i dettagli su GitHub.