Videocitofono Voip con Raspberry.

 

raspberryHo  sempre subito l'attrazione dalla convergenza tra computer e l'elettronica e ultimamente a causa di un guasto al nostro sistema citofonico senza fili mi ha portato a considerare la realizzazione di questo progetto. In realtà lo scopo è puramente didattico e serve a far capire le potenzialtà di un piccolo computer come il Raspberry pi versione B.

A parte lo scopo didattico, in realtà, realizzando questo piccolo progetto ho capto che tutto sommato il progetto poteva essere considerato molto piu idoneo alle mie esigenze rispetto ad altri prodotti commerciali ed ecco quindi ecco le mie esigenze:

  1. integrato al mio centralno VOIP Asterisk
  2. utilizzare una pulsantiera citofonica tradizionale con quattro utenze
  3. immagine di chi citofona con notifica su qualsiasi palmare o Apple o Android
  4. controllo sullo stato del cancello automatco
  5. rilancio sui telefoni cellulari quando non si è a casa o ufficio.
  6. risparmo energia e modularità in caso di guasti
  7. aggiornabile sempre

Cercando su internet esistono molti prodotti che in parte fanno quello che desideravo ma come al solito ho trovato  questi problemi:

  1. si tratta per lo più di prodotti chiusi e quindi legati alle esigenze commerciali delle aziende che lo vendono
  2. nessuna personalizzazione se non a pagamento
  3. aggiornamenti legati al produttore e quindi, in caso di obsolescenza, non verrebbe piu aggiornato.
  4. in caso di guasto bisogna sotituire tutto
  5. il prezzo tutt'altro che economico che oscilla tra i 600 euro per una soluzione economica a piu di 1000 per una soluzione di un noto produttore.

Poi cercando in un forum del voip ho visto che molte persone che usano asterisk adottano le cosiddette interfacce citofoniche, una di questa è prodotta ad esempio dalla TEMA di Bologna ma praticamente, avendo a disposizione un centralino VOIP Asterisk puro, sarebbe necessario un adattatore ATA cioè queli usati per trasformare il vecchio telefono analogico in VOIP. Una soluzione valida in quanto modulare ma non molto versatile e dipendente da troppo hardware separato.

A questo punto l'idea di utilizzare il raspberry e qualche altro piccolo hardware si è fatta concreta.
Girando su internet ho trovato altre persone che avevano realizzato progetti analoghi ma nessuno di questi mi ha mai convinto del tutto anche perchè ognuno di noi ha esigenze diverse e quindi ho deciso di sfruttare sfruttare le mie conoscenze e crearne uno nuovo.

Ecco l'elenco dell'hardware necessario:

  1. Il Raspberry pi versione B o B+
  2. La telecamera per raspberry di ottima qualità ed è perfettamente integrata nel raspberry pi link al sito ufficale
    Volendo è possibile usare anche normali webcam USB ma poi dovremo alimentarla con un hub in quanto il Raspberry non sempre è in grado di farlo adeguatamente.
  3. L'interfaccia PIFACE molto utile in quanto offre ingressi, uscite e relays  utilizzabili immediatamente senza hardware aggiuntivo. Sono soldi spesi bene perche garantiscono una protezione in più ai delicati ingressi del Raspberry
  4. Una interfaccia con due relays optoisolata utilizzata per i servizi luce citofono e flash notturno per la telecamera. Link all'immagine
    Essendo questo tipo di illuminazione a 12v ho preferito avere questa interfaccia.
  5. Una interfaccia con fotoresistenza per determinare il livello di luce. Link all'immagine costa talmente poco che praticamente è inutile autocostruirla.
  6. Un alimentatore step-down da 12/24Vcc a 5Vcc 5A per alimentare il raspberry e i suoi accessori. Link all'immagine Forse puo essere sovradimensionato ma esssendo acceso 24 ore su 24 non volevo avere sorprese e si aumenta la tolleranza della tensione in ingresso.
  7. Una interfaccia audio USB in quanto il raspberry non ha capacità audio in ingresso. Link all'immagine Trovata su internet a pochissimi euro. Verificate sempre la compatibilità con Linux qui la lista di compatibilità
  8. Una pulsantiera citofonica con quattro tasti (Azienda e Abitazioni), in realtà si può utilizzare qualsiasi pulsantiera l'importante è che sia amplificata.
  9. Contenitore economico per telecamere esterne. Oppure si puo autocostruire un contenitore stagno per tutto il progetto. Io ho preferito la soluzione già fatta.
  10. Lastra alluminio e varie minuterie meccaniche per creare il supporto stabile al progetto.

Ecco Il software necessario:

  1. Raspbian come sistema operativo un ottima guida su come installarlo lo trovate sul sito http://www.raspberrypi.org/help/noobs-setup/
  2. Le librerie per PIFACE che trovate qui è veramente facile installarle.
  3. Il software per la RASPICAM, trovate la guida qui
  4. Il client VOIP Linphone per raspberry servono solo i comandi in linea linphonerc la parte grafica non serve. Più avati inserirò un tutorial per questo client.
    Ho trovato molte notizie interessanti in questo  VIDEO su YOTUBE
  5. Il software scritto in Python3 che pubblicherò a breve che ho diviso in due processi Uno prettamente citofonico e l'altro di controllo alimentazione e stato del cancello.
  6. Qualche modifica alla configurazione sul centralino Asterisk, sopratutto per azionare il cancello automatico. A questo link è spiegato bene come modificare i file di configurazione di asterisk.
     

Come funziona il tutto:

Quando qualcuno suona al citofono parte una chiamata VOIP al mio centralino telefonico Asterisk configurato per segnalare tramite un suono distintivo sui telefoni della presenza di una chiamata dal cancello.  A questo punto chiunque abilitato può rispondere al telefono e dopo verificato che la persona possa entrare si immette un codice sulla tastiera che apre il cancello. Il citofono invia via email la foto di chi ha suonato che può essere visualizzata anche real time su un mio webserver locale e da alcuni telefoni voip che hanno la possibilità di visualizzare lo streaming video generato dal citofono.Ho un sistema di videosorveglianza sempre attivo e quindi posso fare a meno dello streaming video del citofono. Ma se fossi assente mi fa comodo sapere chi è venuto a trovarmi. Sto creando una interfaccia web locale da utilizzarsi con i vari smartphone presenti e quindi sto utilizzando anche le notifiche push utilizzando il servizio Pushover che invia in modo istantaneo sul mio iphone la notifica della chiamata al citofono.

VideoCitofono VOIP  Finale

Considerazioni Finali

Anche se il progetto è stato fatto con l'intento educativo alla fine ho anche risparmiato inoltre ora posso aggiornarlo e modificarlo come e quando lo riterrò opportuno.

Ricordatevi di fare sempre una copia di backup della SD del Rasperry in quanto quelle commerciali hanno sempre una vita breve.

Inoltre non cimentatevi in progetti che si interfacciano con la tensione di rete se non siete abilitati a farlo.

A breve seguirà tutta la procedura passo passo per questa realizzazione.

E' passato ormai quasi un anno da quando questo citofono sta funzionando e con l'esperienza ho apportato alcune modifiche:

  • La lente della telecamera del raspberry pi non è adatta in quanto ha un campo visivo troppo ristretto, quindi o si acquista la raspicam con obbiettivo intercambiabile che ho visto su internet ma non ho ancora provato altrimenti è possibile trovare delle lenti su ebay che si possono adattare.
  • Ogn tanto il sistema si blocca e ha bisogno di essere resettato. Per questo è meglio usare un sistema di reset esterno al raspberry pi in quanto il watchdog interno può non essere affidabile qui trovate un valido progetto
  • Il cancello elettrico ogni tanto genera impulsi spuri che vengono intercettati dalle entrate digitali del Raspberry pi. La soluzione è semplice basta inserire un condensatore ceramico tra le entrate digitali che vanno alla pulsantiera del citofono e la massa.
  • Ho aggiunto due microswitch al cancello per stabilirne lo stato. Inoltre se risulta aperto per più di 5 minuti, viene inviata una notifica via mail con relativa foto.

Oltre a tutto questo il modello di raspberry pi è cambiato, il nuovo modello (raspberry pi 2) è molto più potente e quindi potrebbe gestire agevolmente anche una videochiamata.
Ho visto inoltre un grande interesse per questo progetto quindi chi volesse contribuire allo sviluppo di un kit sono disponibile a collaborare.

Cosa si potrebbe fare di più in futuro:

  • Progettare un contenitore adatto all'uso esterno completo di microfono, altoparlante e con due finestre una per la Telecamera e l'altra per la pulsantiera o il display TFT.
  • Utilizzare uno schermo touch screen in modo da non aver bisogno di una pulsantiera. Questo sistema oltretutto migliorerebbe la comunicazione con la persona che suona. Inoltre in questo modo diventa adatto anche a grandi condomini.
  • Un sistema web per la configurazione, attualmente ci sono alcuni file da configurare e se non si è pratichi di linux non è del tutto agevole

Queste sono solo piccole idee.

Una recente implementazione è stata quella di utilizzare la telecamera del citofono in modo continuativo per poterla inserire in un sistema di videosorveglianza standard utilizzando il protocollo di streaming rtsp tipico dei flussi video delle telecamere di sorveglianza.

In effetti utilizzando il seguente comando :

raspivid -o - -t 0 -fps 10 -w 704 -h 576 -ex auto --bitrate  2000000 --shutter 2500 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264 :h264-fps=10

Il flusso viene riprodotto in maniera agevole e senza affaticare il processore. In pratica si riesce a stare al disotto del 10%.
In questo modo si potrà ricevere anche un breve video della persona che ha citofonato, oltre a vedere in tempo reale cosa riprende la telecamera.

Il comando per salvare un breve filmato da mandare via email é:

avconv -i rtsp://indirizzo.ip.streaming.video:8554/ -t 15 -an -f  mp4 -vcodec copy -y nomedelfilevideo.mp4