L’installazione e configurazione di videocamere di sorveglianza o monitoraggio di ambienti domestici (interni e/o esterni) sta diventando sempre più un lavoro alla portata di tutti, quindi perché non spingersi un po’ oltre e provare a gestirne una direttamente tramite il proprio RaspberryPi 3 di fiducia e senza usare browser/app?
Nel nostro caso andremo a gestire tramite shell l’attivazione/disattivazione del rilevamento di movimento di una videocamera di monitoraggio con campo visivo a 180°, la D-Link DCS-960L .
Hardware necessario per questo progetto:
- un RaspberryPi
- una videocamera D-Link DCS-960L
- uno smartphone (serve solo all’inizio)
- un router WiFi (con relativa rete wifi)
- una connessione ad internet funzionante
Setup iniziale
- Configurazione accesso ad internet
- Configurazione rete WiFi (crittografia WPA2 e broadcasting attivo del SSID –> insomma, nome di rete “visibile” e non nascosto)
- Montaggio e configurazione iniziale del RaspberryPi, assicurandosi che
- sia installato il programma curl
- sia presente e attivo il servizio ssh
- sia attivo il collegamento al router WiFi e relativa rete
- Configurazione dello smartphone in modo che sia collegato alla rete esposta dal router WiFi
- Configurazione della videocamera (il primo setup va fatto tramite smartphone)
- Sul router WiFi (o sul vostro server DCHP domestico) fate in modo che la telecamera abbia sempre un indirizzo IP prefissato e che non cambi tutte le volte
Raccolta dati
- tramite il vostro router WiFi / server DHCP cercate l’indirizzo IP assegnato alla videocamera
- segnatevi il nome dell’utente di amministrazione della vostra videocamera (impostato durante la configurazione della stessa)
- segnatevi la password dell’utente di amministrazione della vostra videocamera (impostata durante la configurazione della stessa)
A questo punto tutto è pronto per la parte di creazione del software di controllo.
Accedete via SSH al vostro RaspberryPi e create, nella vostro home o dove preferite, il file cam.sh al cui interno andrete ad inserire il seguente testo:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
#!/bin/bash # # DAVIDE AIRAGHI # # DLINK DCS-960L console motion detection manager # License GPLv3 - see https://www.gnu.org/licenses/gpl-3.0.en.html # # This script allows you to manage (query, enable, disable) # motion detection of your DCS-960L camera from console # # Requirements: # - bash shell # - curl # - same network used for camera and computer # # camera authentication info USER="YOUR_ADMIN_USERNAME" PASS="YOUR_ADMIN_PASSWORD" # generic info TIMEOUT_BEFORE_ENABLE=15 TIMEOUT_BEFORE_DISABLE=0 # camera base url URL="http://YOUR_CAMERA_IP_ADDRESS:80" # camera video capture params CAPTURE_SENSITIVITY="60" CAPTURE_ENABLE_MASK="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" CAPURE_DISABLE_MASK="000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" CAPTURE_ENABLE_URL="/config/motion.cgi?enable=yes" CAPTURE_DISABLE_URL="/config/motion.cgi?enable=no" INFO_URL="/config/motion.cgi" if [ "$ACTION" = "" ]; then ACTION=$1 fi case $ACTION in info) ACTION="" IS_ENABLED=$( curl -u ${USER}:${PASS} ${URL}${INFO_URL} 2>/dev/null | grep 'enable=yes' ) if [ "${IS_ENABLED}" != "" ]; then echo enabled else echo disabled fi ;; enable) ACTION="" sleep ${TIMEOUT_BEFORE_ENABLE} curl -u ${USER}:${PASS} "${URL}${CAPTURE_ENABLE_URL}&sensitivity=${CAPTURE_SENSITIVITY}&mbmask=${CAPTURE_ENABLE_MASK}" 2>/dev/null >/dev/null || exit 1 ;; disable) ACTION="" sleep ${TIMEOUT_BEFORE_DISABLE} curl -u ${USER}:${PASS} "${URL}${CAPTURE_DISABLE_URL}" 2>/dev/null >/dev/null|| exit 1 ;; toggle) ACTION="" IS_ENABLED=$( curl -u ${USER}:${PASS} ${URL}${INFO_URL} 2>/dev/null | grep 'enable=yes' ) if [ "${IS_ENABLED}" != "" ]; then sleep ${TIMEOUT_BEFORE_DISABLE} curl -u ${USER}:${PASS} "${URL}${CAPTURE_DISABLE_URL}" 2>/dev/null >/dev/null || exit 1 else sleep ${TIMEOUT_BEFORE_ENABLE} curl -u ${USER}:${PASS} "${URL}${CAPTURE_ENABLE_URL}&sensitivity=${CAPTURE_SENSITIVITY}&mbmask=${CAPTURE_ENABLE_MASK}" 2>/dev/null >/dev/null || exit 1 fi ;; *) ACTION="" ;; esac exit 0 |
Mi raccomando, prima di salvare il file sostituite:
- YOUR_ADMIN_USERNAME : lo username del vostro utente di gestione della videocamera
- YOUR_ADMIN_PASSWORD : la password del vostro utente di gestione della videocamera
- YOUR_CAMERA_IP_ADDRESS : l’indirizzo ip della vostra videocamera
Salvato il file dategli i permessi di esecuzione, con il classico chmod +x cam.sh .
A questo punto, se tutto è configurato correttamente e non ci sono problemi di rete e/o di firewall vari, potrete controllare tramite la shell del vostro RaspberryPi la telecamera:
- cam.sh info : ritorna lo stato del rilevamento di movimento (enabled o disabled)
- cam.sh enable : attiva il rilevamento di movimento
- cam.sh disable : disattiva il rilevamento di movimento
- cam.sh toggle : “inverte” lo stato del rilevamento di movimento, se è disattivato lo attiva e viceversa
A questo punti siete liberi di integrare nei vostri progetti di domotica anche la gestione di questa videocamera amatoriale di sorveglianza (a patto che sia sempre accesa, ovviamente)