Questo articolo fa parte del sistema La Domotica Fai-da-me. L’intento era quello di estendere le modalità di ripresa video, senza dover essere per forza limitati dalla piattina della videocamera del Raspberry Pi o dal cavo USB della Webcam collegata sulla centralina.
Per fare questo ho usato una Foscam FI9816P (il link è sponsorizzato). La guida si riferisce a questo specifico modello, perché a seconda dei modelli e dei produttori le configurazioni potrebbero essere sensibilmente (a volte molto) diverse.
L’intento è sempre quello di usare un sistema sul quale abbiamo il pieno controllo e che non è dipendente da servizi esterni, qudini questa videocamera non sarà in alcune modo collegata ad Internet o a servizi di terze parti (lo vedremo più avanti)
Usare una videocamera IP ha alcuni punti a favore e altri contro, prima di scegliere, li analizziamo, per capire se vale la pena correre questi rischi.
Perché una videocamera IP è una buona scelta:
- La posso mettere dove voglio, se è WiFi serve solo che sia vicina ad una presa di alimentazione (e sotto copertura wifi)
- Se cambio il sistema di sorveglianza non la devo riconfigurare, come è stata configurata così resterà anche per il sistema nuovo
- E’ indipendente dalla centralina, sarà sempre e solo raggiungibile via rete
- Cambiarla con un’altra non porta a dover riscrivere mezzo progetto perché le specifiche cambiano, i protocolli video sono sempre quelli
Perché una videocamera IP non è una buona scelta:
- Se è WiFi, con un jammer il segnale verrebbe disturbato e lo stream video non arriverebbe più alla centralina (i jammer sono fuori legge, ma lo è anche forzare la porta di ingresso di un appartamento altrui)
- Dovrebbe essere alimentata con un UPS, in modo che con la mancanza di corrente non smetta di trasmettere il video alla centralina
Se avete deciso che fa ancora per voi, potete continuare a leggere, se a questo punto pensate che la sicurezza non sia più la stessa, potete fare le vostre scelte (è domotica fai-da-me nel senso che ve la fate voi come più vi piace).
Appena estratta dalla scatola va configurata in rete, fatelo con il cavo, che è tutto più facile. La collegate al router e la alimentate. Aspettate qualche minuto e lei comparirà in rete.
Come faccio a sapere che indirizzo ha preso?
Semplice: accedete al vostro router ADSL (dovreste avere le password) e dalla configurazione del DHCP server vedere che indirizzo le è stato assegnato. Per farla più facile si può scaricare il tool di Foscam per il discover in rete.
Qui si presenta il vero e unico problema che avrete (o almeno che ho avuto io) durante tutta la configurazione: per accedere via web si deve installare un maledetto plugin. Con Linux non ci sono riuscito, sul Mac uno va e l’altro no, con Windows si scarica l’eseguibile (il link è nella home della pagina di controllo della videocamera) e poi si usa Internet Explorer. Non è il massimo, ma una volta configurata non dovrete più accedere all’interfaccia web.
Si fa il primo accesso e si genera l’utente amministratore. Il sistema vi obbliga a creare un utente e una password nuovi (hanno capito che l’utente admin non è saggio tenerlo attivo). Create l’utente e segnatevelo da qualche parte.
L’interfaccia web ha 3 tab in alto, tutte le configurazioni sono nel tab Settings
Una cosa da fare sempre, quando si compra un nuovo dispositivo, è aggiornare il firmware, quello di Foscam si scarica dal loro sito e si installa accedendo alla sezione System/System Upgrade
Andiamo avanti con la configurazione. Per poter essere raggiunga dal software Motion, è necessario attivare il protocollo RTSP. Questa procedura mi ha fatto perdere almeno 3 serate. Ho risolto scrivendo al supporto Foscam che mi ha risposto in meno di 24h. Dal menu Network accedere a Onvif. A questo punto Si devono abilitare i protocolli e ci si deve prendere nota della porta del protocollo RTSP
Proseguiamo con la configurazione. Per poter accedere al flusso dati con lo streaming serve un utente e una password, e non è saggio passare le credenziali da administrator, anche se si sta nella propria rete a casa. In Basic Settings/Uer account si deve aggiungere un utente di privilegio “Visitor”, facendo click su una delle caselle vuote (no, non è affatto intuitivo) e conferma do con “Add”
Adesso si può attivare la rete WiFi, con la procedura non proprio intuitiva. Da Network/Wireless Settings fare la scansione di rete e, scelta la rete, inseriore la password.
E’ necessario cercare di nuovo l’indirizzo in rete, perché quello del WiFi sarà certamente diverso, per poi accedere all’interfaccia web con il nuovo indirizzo e staccare il cavo di rete. Siamo connessi senza fili.
Adesso è necessario assicurarsi che l’IP non cambi mai. O si accede al router ADSL e nelle opzioni del DHCP si imposta una “reservation” (ogni router è diverso, non posso fare una guida…) oppure si imposta un indirizzo statico in Network/IP Configuration. E’ importante però che l’indirizzo che andatea impostare non venga usato dal DHCP server per assegnarlo ad un altro dispositivo (non possono coesistere due indirizzi IP uguali sulla stessa rete)
Questa videocamera può fare un sacco di roba, ma a noi la useremo solo per la parte video, quindi si deve disattivare una serie di cose che sono completamente inutili.
- Basic Settings/Voice Prompt –> NO (disattiva la voce che dice se è connessa o meno)
- Detector/Motion Detection –> Disattivare
- Detector/Sound Detection –> Disattivare
E’ giunto il momento di spegnere la webcam per portarla nella sua posizione definitiva, in modo da definire dove dovrà guardare per capire se c’è del movimento. Una volta piazzata e accesa, in qualche minuto farà il suo test di movimento e tornerà ad essere disponibile sulla rete. Apriamo l’interfaccia web e nel tab Live Video sarà possibile vedere la zona inquadrata. Usando il joystick è possibile spostare l’inquadratura in base alle nostre necessità.
Trovata la posizione è necessario memorizzarla, se no ad ogni riavvio verrà persa. Nel menu Preset fare click sul tasto “+” e scegliere un nome, ad esempio “qui_va_bene”
Torniamo nel tab Settings e apriamo il menu PTZ/Startup Options. In Start-up Option si deve selezionare “Go to preset position” e in Preset selection selezionare il nome della posizione scelto poco fa, ad esempio “qui_va_bene”.
Che sudata! Ma manca ancora un pezzo: è necessario modificare le configurazioni del programma Motion, in modo che utilizzi la camera via IP e non la videocamera integrata o la webcam sulla USB.
A seconda della configurazione di Motion (quella fatta seguendo la prima guida della videosorveglianza con il Raspberry Pi) il file potrebbe essere in diverse cartelle, quella standard è /etc/motion e il file è motion.conf. QUindi a questo punto è necessario accedere via SSH alla centralina e dare il comando per la modifica del file di configurazione
sudo nano /etc/motion/notion.conf
Tra le mille righe di configurazione si deve disattivare la webcam sollegata al Raspberry o quella USB, si fa commentando una sola riga. Il commento si fa anteponendo il “;” (punto e virgola) alla riga. In questo caso si deve disabilitare la “videodevice”
; videodevice /dev/video0
In secondo luogo è necessario aumentare le dimensioni dell’immagine registrata mettendo la risoluzione massima della camera IP, nel nostro caso 1280×720 (HD Ready)
# Image width (pixels). Valid range: Camera dependent, default: 352
width 1280
# Image height (pixels). Valid range: Camera dependent, default: 288
height 720
Adesso è necessario definire l’indirizzo della videocamera IP copn il protocollo RSTP
netcam_url rtsp://utente:password@indirizzo:porta/videoMain
Dove, i parametri da inserire sono:
- utente: l’utente creato con i permessi di “Visitor”
- password: la relativa password
- indirizzo: indirizzo IP della camera
- porta: la porta che si è visto abilitando i servizi di rete
Per provare lo stream della videocamera (che al contrario della camera USB, è sempre attivo, anche se Motion è spento) si può aprire l’indirizzo messo nel file di configurazione in VLC dal menu Media/Apri flusso di rete (o Ctrl+N)
Salvando il file “motion.conf” con le nuove configurazioni il sistema funzionerà esattamente come prima, ma usando come fonte dello stream la nuova videocamera.
Per vedere se il tutto funziona correttamente è necessario innanzitutto verificare che lo stream web di Motion sia attivo nel file di configurazione. Nello specifico, questi sono i parametri da impostare:
# The mini-http server listens to this port for requests (default: 0 = disabled)
stream_port 8081
# Quality of the jpeg (in percent) images produced (default: 50)
stream_quality 90
# Output frames at 1 fps when no motion is detected and increase to the
rate given by stream_maxrate when motion is detected (default: off)
stream_motion off
# Maximum framerate for stream streams (default: 1)
stream_maxrate 4
# Restrict stream connections to localhost only (default: on)
stream_localhost off
# Limits the number of images per connection (default: 0 = unlimited)
# Number can be defined by multiplying actual stream rate by desired number of seconds
# Actual stream rate is the smallest of the numbers framerate and stream_maxrate
stream_limit 0
# Set the authentication method (default: 0)
# 0 = disabled
# 1 = Basic authentication
# 2 = MD5 digest (the safer authentication)
stream_auth_method 0
# Authentication for the stream. Syntax username:password
# Default: not defined (Disabled)
; stream_authentication username:password
A questo punto per vedere lo stream che vede Motion (e non quello che genera la camera IP è necessario accedere a http://[indirizzo_centralina]:8080
Parliamo di riservatezza
Rispetto alla videocamera integrata o USB, una camera IP ha un suo firmware, che, per poter funzionare anche sul telefono con la propria app quando non si è a casa, tenterà di accedere ad Internet per parlare con i server del produttore. Come la blocchiamo?
La cosa non è del tutto banale. Se si ha un router evoluto (ad esempio io uso un Mikrotik) è necessario fare una regola sul firewall che blocchi qualunque comunicazione dell’IP del dispositivo verso Internet. Questa è la scelta più sicura.
In alternativa, se si utilizza Pi-Hole sulla rete (è una figata pazzesca che fa da blocco delle pubblicità a livello di DNS, ci farò poi un post) si mette il suo DNS e si bloccano tutte le richieste che fa la videocamera. Non c’è certezza però che sia tutto bloccato, potrebbe fare chiamate direttamente su IP.
Non ci ho provato, ma si potrebbe mettere un Gateway diverso da quello della propria rete, in teoria in questo modo non dovrebbe più essere in grado di uscire dalla LAN, perché non ha l’indicazione da dove uscire (ma nessuno vieta a chi ha scritto il firmware che il dispositivo cerchi un gateway diverso da quello impostato.
Il succo del discorso è che avere un buon router ADSL è sempre una buona scelta 🙂
Attività evolute
Nell’articolo ho scritto che non dovremo più accedere all’interfaccia web. Ma come possiamo interagire con la videocamera per la modifica di parametri vari? Con delle chiamate web molto semplici che sono indicate nel manuale che si trova sul sito del produttore. Lascio qui il file scaricato, perché non so se e quando il produttore lo toglierà dal sito 🙂
Analizziamo i comandi più comodi per l’utilizzo e che possono essere chiamati direttamente dal programma del bot di Telegram, usando l’apposita libreria di Python per fare le chiamate web.
Con le varie chiamate web è possibile fare, tra le altre, le seguenti attività:
accendere e spegnere la modalità IR (accende i LED IR e toglie il filtro dalla lente)
http://[IP]:88/cgi-bin/CGIProxy.fcgi?cmd=closeInfraLed&usr=[utente_admin]&pwd=[password]
http://[IP]:88/cgi-bin/CGIProxy.fcgi?cmd=openInfraLed&usr=[utente_admin]&pwd=[password]
Sposta la camera in varie posizioni predefinite (si devono impostare prima dall’interfaccia web)
http://[IP]:88/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=qui_va_bene&usr=[utente_admin]admin&pwd=[password]
Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.iltucci.com) come fonte principale.
Ciao Francesco. Come mai la scelta di una Foscam? Già esperienze in passato?
CI avevo lavorato già altre volte e sapevo essere compatibili con Motion. Questa mi ha dato qualche rogna, ma alla fine ha funzionato.
Nulla vieta di replicare la cosa con un’altra camera che abbia lo stream via http o rstp
Ciao Francesco,
data la tua esperienza, hai consigli su eventuali telecamere wi-fi/4G ?
Mi stavo ripropondendo di attuare il progetto di videosorveglianza tramite raspberry utilizzando però delle telecamere wi-fi se non addirittura 4G e sopratutto che non necessitino di alimentazione tramite presa elettrica: la scelta ovviamente è imposta dalla necessità di video sorvegliare una zona molto ampia con poca copertura elettrica (poche prese nella zona esterna) ma con copertura wi-fi.
La maggior parte delle soluzioni proprietarie (mi riferisco a telecamere di tipo Arlo o altre Dlink etc.) oltre a non soddisfare quei criteri di autonomia ed indipendenza insiti nel progetto stesso e che io stesso vorrei realizzare, anche anche un costo piuttosto alto.
Le soluzioni della Lorex sono molto interessanti ma purtroppo non disponibili in in Italia.
Grazie per la disponibilità.
Ciao Romano,
la foscam è wifi e fa quel che ti serve, praticamente ogni videocamera WiFi funziona con il mio sistema.
Sul 4G non ti so dire perché non ne ho mai usate. Sicuramente so che non puoi interfacciarle ad un sistema con motion perché c’è uno stream continuo e ti consumerebbe tantissimi dati, oltre al fatto che il 4G consuma parecchia energia e a batteria la vedo dura.
Sicuramente dovresti trovarne una che fa lei da motion detection e trasmette solo in caso di movimento. Non ne conosco però che fanno al caso tuo. Fossi in te mi iscriverei al gruppo telegram di GeekCookies dove puoi trovare un “manipolo” di nerd e tra di loro magari c’è qualcuno che ha già provato a usare camere di questo tipo: https://t.me/geekcookies
Ricorda inoltre che tutto quello che non è venduto in Italia, sarà sicuramente spedito in Italia, io compro spesso dalla Cina o dagli USA