WEBCAM CANON WIRELESS E SENZA PC ACCESO

 

 

Premessa : Questo tutorial ha lo scopo di realizzare una webcam fotografica senza avere la necessità di tenere un PC acceso 24h. La guida prende spunto per buona parte dall’ ottima già presente in rete qui, dal wiki di Meteonetwork dal forum di openwrt e dalle decine di ore spese per far funzionare il sistema.

 

 

Hardware necessario

 

. Fotocamera Canon (provate con successo una A300, una A60 e una A520)

 

. Router Asus WL-500GP V1 (ma credo che funzioni anche nella versione V2). Il sistema quasi sicuramente funziona su qualsiasi dispositivo compatibile con openwrt  che abbia almeno una porta USB disponibile.

 

 

 

 

 

Software necessario

 

. Firmware Openwrt per il router (http://downloads.openwrt.org/backfire/10.03.1-rc4/brcm-2.4/openwrt-brcm-2.4-squashfs.trx) – Ho utilizzato l’ultima versione Backfire (10.03-rc4) con base kernel 2.4 anziché 2.6, altrimenti il wifi dell’Asus non funziona

 

. Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

 

. WinSCP (http://winscp.net/eng/download.php#download2)

 

. Utility di ripristino ASUS (partire da questo link http://support.asus.com/download/download.aspx?SLanguage=en-us e cercare tra le utility del nostro WL-500gp)

 

 

 

 

Prima di iniziare

 

. Togliere la memoria dalla macchina fotografica, altrimenti si presenterà sovente un problema di timeout (errore -110). La memoria non è necessaria per lo scopo da raggiungere. Io ho perso un mese dietro questo timeout….

 

. Alimentare la macchina fotografica tramite un alimentatore esterno.

Prima parte : installare OpenWRT nel router

 

.Prima di tutto è necessario impostare un IP fisso nel nostro PC  (ad esempio  192.168.1.5)

 

 

 

 

 

 

E collegare il router in una delle porte LAN (NO WAN!) con un semplice cavetto di rete non incrociato.

 

 

 

.Mettere il router in modalità aggiornamento firmware (scollegare lo spinotto di alimentazione, premere con un piccolo cacciavite il pulsantino di reset nero (non quello rosso) e, tenendolo premuto, riattaccare l’alimentazione. Lasciare il pulsante quando la spia di accensione inizierà a lampeggiare.

 

 

 

 

 

 

 

 

 

 

 

.Lanciare l’utility “firmware restoration” di Asus, scegliere il file da caricare (openwrt-brcm-2.4-squashfs.trx)  e premere il pulsante “caricamento”. Dopo qualche minuto il file sarà caricato nel router e si riavvierà automaticamente. NOTA  per gli utilizzatori di Windows 7 : eseguire il programma Asus in modalità compatibilità Windows XP SP2 altrimenti non troverà il router.

 

 

 

 

 

Seconda parte : configurare il router

 

.Terminata l’installazione del nuovo firmware del router ed atteso il suo riavvio, dobbiamo generare una password per il nostro router, ci servirà per le successive operazioni. Dal menu start di windows, eseguire cmd per aprire la finestra con il prompt dei comandi e digitare nell’ordine:

 

telnet 192.168.1.1  e premere invio

passwd e premere invio

digitare la nuova password  e premere invio

confermare la nuova password  e premere invio

 

 

 

 

. Adesso apriamo il nostro browser preferito e configuriamo il nostro router

 

 

Inseriamo username (root) e password (quella impostata prima) e clicchiamo su “Login”

 

 

 

 

 

.Dal menu “Network” selezioniamo il sottomenu general e, se vogliamo ma non è obbligatorio, diamo un nuovo indirizzo fisso al router e indichiamo il gateway a cui deve collegarsi (nel mio caso il modem/router della Lynksys che uso per collegarmi ad Internet)

 

 

 

Fatto questo passaggio, per proseguire dovremo inserire nel nostro browser il nuovo indirizzo, in questo caso 192.168.1.8

 

 

 

 

 

 

 

 

 

 

 

.Entriamo, sempre dal menu “Network”, nel sottomenu “WIFI” e configuriamo con i dati della nostra rete wireless casalinga :

 

 

Ovviamente nel Network Name va messo il nome della rete, il Mode DEVE essere Client enrcyption e Key quelle personali secondo le impostazioni della nostra rete wireless

 

 

 

 

 

 

 

.Adesso selezioniamo nel menu di destra “Administration” e poi NetworkàInterfacesàWAN ed impostare come indicato

 

 

 

In IPv4-Address dovrete impostare l’indirizzo IP che il router avrà nella vostra rete wireless. Stessa cosa per IPv4-Gateway.

 

 

 

 

.Apriamo il terminale ssh Putty,

 

 

 

 

Inserite in "Host Name" l'ndirizzo IP che avete assegnato al Wl-500gP, che sarà 192.168.1.9 se state lavorando in wireless o 192.168.1.8 se siete ancora in locale. Controllate che la "Connection type" sia su SSH e poi cliccate Open. Si aprirà l'interfaccia di Putty per comunicare con il router:

inserire i dati di accesso, “root” come login e “password scelta” come password. Il terminale risponderà

 

 

 

 

.Per terminare la configurazione della rete wireless, digitare nell’ordine I seguenti comandi (aspettare sempre che il router restituisca “root@openwrt:~#” alla fine di ogni comando):

 

nvram set lan_ifnames=vlan0   e premere invio

nvram set wan_ifname=wl0      e premere invio

nvram set wan_device=wl0       e premere invio

nvram commit  e premere invio

nvram reboot   e premere invio

 

 

ed attendere il riavvio del router. A questo punto potete staccare il cavo di rete e comunicare con il vostro router via radio. Per verificare che tutto sia andato a buon fine, potete provare a pingare l’indirizzo wireless che avete assegnato al router (dal prompt dei comandi di windows digitare ping 192.168.1.9). Il router è finalmente pronto per installare i programmi che ci serviranno a collegare la macchina fotografica.

 

 

 

Seconda parte – installare i software necessari

 

.Apriamo di nuovo putty e digitiamo nell’ordine (aspettare sempre che il router restituisca “root@openwrt:~#” alla fine di ogni comando):

 

-          opkg update (il router scaricherà la lista dei pacchetti disponibili)

-          opkg install kmod-usb-core

-          opkg install kmod-usb-ohci

-          opkg install kmod-usb-uhci

-          opkg install gphoto2

-          opkg install libgphoto2-drivers

-          reboot

 

Attendiamo il riavvio del router.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.Apriamo ora WinSCP e poi configuratelo come vedete nelle due immagini qui sotto, ossia inserite l'indirizzo IP del Wl-500gP, con user e psw, modificare il Protocollo File in SCP e poi sulla sinistra andate in SCP e impostate come vedete nella seconda immagine:

 

 

 

 

Il software si aprirà in questo modo, nella parte sinistra ci sono i file del vostro PC, nella parte destra i file nel router.

 

 

 

 

Cliccate nella parte destra con il tasto destro del mouse, create un nuovo file e chiamatelo capture.sh

 

Inserire nel file le seguenti righe:

 

#!/bin/sh

 

DIR=/tmp/caps

 

if mount | grep -q usbfs

then

                echo "usbfs ok"

else

                mount -t usbfs none /proc/bus/usb

fi

 

rm -rf $DIR

mkdir $DIR

cd $DIR

 

gphoto2 --capture-image-and-download --filename %Y%m%d-%H%M.jpg --hook-script=/usr/bin/hook.sh

 

e salvate.

Cliccate ora sul nome del file con il tasto destro, scegliete proprietà e date ai permessi del file 777.

 

 

 

.Creiamo un secondo file e lo chiamiamo config.sh con il seguente testo:

 

#!/bin/sh

 

gphoto2  --set-config capture=1 --set-config imagesize=2 --set-config flashmode=0 --set-config assistlight=0

 

e salviamo.

Cliccate ora sul nome del file con il tasto destro, scegliete proprietà e date ai permessi del file 777.

 

 

.Creiamo un terzo file e lo chiamiamo reboot.sh con il seguente testo:

 

#!/bin/sh

 

reboot

 

e salviamo.

Cliccate ora sul nome del file con il tasto destro, scegliete proprietà e date ai permessi del file 777.

 

 

 

.Ora,  sempre con il WinSCP, entriamo nella directory /usr/bin e creiamo un nuovo file con nome hook.sh dove inseriremo il seguente testo:

 

#!/bin/sh

DATE=`date +%Y%m%d_%H%M`

self=`basename $0`

case "$ACTION" in

    init)

        # echo "$self: INIT"

        # exit 1 # non-null exit to make gphoto2 call fail

        ;;

    start)

        # echo "$self: START"

        ;;

    download)

        echo "$self: DOWNLOAD to $ARGUMENT"

        work=$(date +%Y%m%d-%H%M.jpg)

        mv $ARGUMENT $work

        curl --connect-timeout 5 --retry 3 --retry-delay 10 --max-time 180 --user "user:psw" -T "$work" “ftp://ftp.site/webcam.jpg"

        rm -f $ARGUMENT

        sleep 2

        ;;

    stop)

        # echo "$self: STOP"

        ;;

    *)

        echo "$self: Unknown action: $ACTION"

        ;;

esac

 

exit 0

 

dove dovremo modificare user:psw e ftp://ftp.site/webcam.jpg  con i dati per accedere in ftp al nostro sito Internet dove vogliamo  pubblicare la nostra webcam. Salvate il file e poi cliccate ora sul nome del file con il tasto destro, scegliete proprietà e date ai permessi del file 777.

 

A questo punto avremo installato i sotfware e gli script necessari, non ci rimane che far avviare gli script in modo automatico all’avvio del router.

 

.Ora dobbiamo fare in modo che gli script vengano avviati all'avvio del router. Apriamo di nuovo Putty, ci colleghiamo al router e diamo quindi il comando:

/etc/init.d/config enable

 

Il router dovrebbe restiruirvi la classica riga: root@OpenWrt:-#

 

Ora date il comando: ps | grep config.sh

 

Il router dovrebbe restiruirvi di nuovo la classica riga: root@OpenWrt:-#

 

Ora date il comando: ls /etc/rc.d/

 

e controllate che nei risultati ci sia il file S99capture, questo vuol dire che lo script verrà inizializzato all'avvio!

 

I due script rimasti, capture.sh e reboot.sh verranno avviati in modo temporizzato tramite il demone cron.

 

.Sempre tramite WinSCP entriamo del dir etc/crontab

 

 

 Creiamo un file root (senza estensione) e incolliamo le seguenti righe:

 

01,06,11,16,21,26,31,36,41,46,51,56 * * * *      /root/./capture.sh

# 03 * * * * /root/./reboot.sh

03 05,09,13,17 * * * /root/./reboot.sh

 

Salviamo e diamo i permessi al file 777.

In questo modo, lo scatto avverrà nei minuti 01,06,11,16,21,26,31,36,41,46,51,56 di tutte le ore, mentre il router berrà riavviato al minuti n°3 delle ore 5,9,13,17 in modo da prevenire eventuali blocchi di gphoto2.

 

 

NOTA SU GPHOTO2

 

I comandi inviati da gphoto2 alla fotocamera Canon possono cambiare tra diversi modelli. Il seguente comando (config.sh):

 

gphoto2  --set-config capture=1 --set-config imagesize=2 --set-config flashmode=0 --set-config assistlight=0

 

è valido per la Canon A300 ma non sarà valido per una Canon A60 o A80.

 

Per trovare i comandi corretti per il proprio modello, digitare i seguenti comandi via Putty:

 

gphoto2 –set-capture=on

Il router dovrebbe restiruirvi la classica riga: root@OpenWrt:-#

gphoto2 –list-config

Il router vi restituirà la lista dei comandi accettati dalla fotocamera

 

Per conoscere i parametri dei vari comandi digitare:

 

gphoto2 –get-confignome comando

 

Gli approfondimenti necessari, li troviamo su sito ufficiale di gphoto2.

 

 

 

 

 

 

Fossombronemeteo.it