web analytics

PiPhoto, la Raspberry carica le vostre foto sul PC!

Raspberry pi

Perdete troppo tempo per scaricare le vostre foto, organizzarle, sistemarle?  Lo sviluppatore Lou Kratz afferma di trascorrere molto tempo nel fine settimana a catturare le sue avventure con una fotocamera. Ma non sopporta tutto ciò che c’è dopo: la gestione delle foto. Per ridurre le perdite di tempo ha inventato PiPhoto, un piccolo automatismo che vi permette di sincronizzare le foto mentre ve ne state comodi sul letto.

PiPhoto, una scheda Micro-SD e una Raspi

Come potete osservare dal video sotto riportato, Lou ha creato una soluzione meravigliosamente semplice. Tutto quello che dovete fare è collegare la scheda SD alla Raspberry Pi e le  foto vengono caricate automaticamente sul computer (o dove preferite voi).

Cosa fa PiPhoto? Cerchiamo di riepilogarne il comportamento.

La prima cosa da fare è montare automaticamente la scheda SD nel momento in cui viene inserita (dovreste vedere il LED verde che inizia a lampeggiare)

Per farlo inserite il comando sotto riportato nel file 99-mediastorage_card_instert_run.rules e posizionatelo in /etc/udev/rules.d/. Esso impone al sistema di montare su /media quando vede qualcosa inserito nella porta USB.

  • ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", RUN{program}+="/usr/bin/systemd-mount --no-block --automount=no $devnode /media"

Una volta montata la scheda SD, bisogna attivare un comando che carichi le foto sul computer o sul cloud. Per farlo si crea un apposito service systemd:

[Unit]
Description=PiPhoto Trigger on Usb Mount
Requires=media.mount
After=media.mount
[Service]
ExecStart=/usr/local/bin/piphoto
Type=oneshot
[Install]
WantedBy=media.mount

che viene eseguito quando la directory /media è montata.

Terminata la sincronizzazione bisogna smontare la scheda. Usare unmount è sconsigliato perché andrebbe a killare piphoto.service. Un possibile workaround consiste nel chiamare umount in un processo separato:

[Service]
ExecStart=/usr/local/bin/piphoto
Type=oneshot
ExecStartPost=/bin/bash -c 'echo "systemd-umount /media" | at now'

A questo punto manca un feedback visivo per l’utente. Si può impostare il LED della Raspi inviando una stringa a /sys/class/leds/led{number}/trigger. Ci sono una serie di diverse opzioni come il timer per far lampeggiare il led oppure default-on per mantenerlo acceso. Una buona scelta potrebbe essere quella di:

  • far lampeggiare la luce verde durante il caricamento delle foto;
  • se l’operazione va a buon fine il LED verde diventa fisso e non lampeggia più;
  • al contrario, se l’operazione va male, lampeggia il LED rosso.

Questi i comandi:

# il led verde lampeggia
echo timer | tee /sys/class/leds/led0/trigger

# upload in corso
rsync -rav -e ssh /media ...
sync_status=$?

# Operazione OK o KO?
if [ $sync_status -eq 0 ] ; then
    # sync successful
    echo 'default-on' | tee  /sys/class/leds/led0/trigger > /dev/null
else
    # sync failure
    echo 'none' | tee /sys/class/leds/led0/trigger > /dev/null
    echo timer | tee /sys/class/leds/led1/trigger > /dev/null
fi

Fatto ciò solo la vostra fantasia può fermarvi: potete  personalizzare il tutto come meglio preferite.

Come usarlo

raspberry pi piphoto

Per i comuni mortali la procedura da seguire è abbastanza semplice. Scaricate dalla pagina GitHub ufficiale di PiPhoto il codice sorgente e lanciate l’installazione:

sudo ./install.sh

Create il seguente file di configurazione.

sudo cp config/piphoto.conf.example /etc/piphoto.conf

Modificatelo con un editor di testo a scelta settando le seguenti variabili:

  • mount_point – Dove montare la scheda, deve corrispondere con la posizione specificata nel file /etc/udev/rules/99-mediastorage_card_insert_run.rules di cui vi parlavo sopra
  • run_as_user – L’utente che esegue la sync
  • sync_command – Quale comando usare per sincronizzare le foto. Il più semplice è rsync.

Tutto chiaro? Se avete dubbi o domande scrivetemi nel box dei commenti, oppure consultate la pagina GitHub ufficiale dove trovate diversi consigli 😄😄

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.