giovedì 29 dicembre 2011

Time Lapse con Android

un esempio di automatizzazione di Android (o meglio della fotocamera inserita nel telefono)

le foto sono state scattate al ritmo di una al minuto per circa due ore e successivamente rimontate in un filmato


lo script che genera la sequenza e'
----------------------------------------------------------------------

import android, time, os


droid = android.Android()


def titleAlert():
  title = 'Android Python Timelapse'
  message = 'Welcome to Android Python Timelapse.  In the following dialogs, you will be asked to choose your interval and the location where you would like your pictures saved.  Enjoy! Questions or comments? Please send to Support@SubmergedSpaceman.com'
  droid.dialogCreateAlert(title, message)
  droid.dialogSetPositiveButtonText('Continue')
  droid.dialogShow()
  response = droid.dialogGetResponse().result
  return response['which'] == 'positive'  


def chooseInterval():
  title = 'Please choose your picture interval in minutes.  To use a different value, choose Custom'
  droid.dialogCreateAlert(title)
  droid.dialogSetItems(['1', '5', '10','30','60','Custom'])
  droid.dialogShow()
  response = droid.dialogGetResponse().result['item']


  if response == 0:
    timer = 1
  elif response == 1:   
    timer = 5
  elif response == 2:   
    timer = 10
  elif response == 3:   
    timer = 30
  elif response == 4:   
    timer = 60
  elif response == 5:   
    timer = droid.dialogGetInput("please enter your interval in minutes").result
    timer = float(timer)
  print "interval is: "+str(timer) +" minutes"
  return timer


def chooseFolder():
  title = 'Please choose where you would like to store your pictures'
  captureTime = time.strftime("%Y-%m-%d--%H-%M-%S", time.localtime())
  droid.dialogCreateAlert(title)
  droid.dialogSetItems(['/sdcard/YYYY-MM-DD', '/sdcard/timelapse', 'Custom'])
  droid.dialogShow()
  response = droid.dialogGetResponse().result['item']


  if response == 0:
    folderStr = captureTime
  elif response == 1:   
    folderStr = "timelapse"
  elif response == 2:   
    folderStr = droid.dialogGetInput("please enter the name of the folder you would like to create:   /sdcard/").result
  
  print "folder set to: /sdcard/"+folderStr
  return folderStr


def takePics(picfolder="timelapse", lapse=30):
  loopvar = 'true'


  while loopvar == 'true':
    captureTime = time.strftime("%Y-%m-%d--%H-%M-%S", time.localtime())
    captureLocation = '/mnt/sdcard/'+picFolder+"/"+str(captureTime)+'.jpg'
    print "picture taken: "+captureLocation
    droid.cameraCapturePicture(captureLocation,True)
    interval = lapse * 60 
    time.sleep(interval)


titleAlert()
lapse = chooseInterval()
picFolder = chooseFolder()
#os.system("mkdir /mnt/sdcard/"+picFolder)
os.mkdir('mkdir /sdcard/1/')
#takePics(picFolder,lapse)




mercoledì 28 dicembre 2011

Copiare e condividere script Python per Android

Un metodo speditivo per condividere gli script Python per Android (di dimensione inferiore ai 4Kb)
e' quello di utilizzare i QR Code.

Collegandosi al sito http://zxing.appspot.com/generator/ si puo' selezionare Text dal combo "Contents"
e quindi incollare lo script Python nella finestra Text Content. Cliccando su Generate si crea l'immagine sottostante corrispondente al QR Code del codice inserito
Utilizzando il telefono Android ed un programma per la scansione QR code si ottiene il programma



martedì 27 dicembre 2011

Adb su SDK Android (con un pizzico di Python)

Per iniziare a muoversi su SDK di Android e' fondamentale iniziare ad capire come si usa l'Android Debug Bridge contenuto nella distribuzione Linux in platform-tools


copia un file dal computer al telefono (usare path complete)
adb push [file_locale] [file_remoto]
per copiare gli script Python di SL4A senza montare in modalita' disco il telefono si puo' procedere come
adb push my_script.py /sdcard/sl4a/scripts
per effettuare l'operazione contraria invece

adb pull /sdcard/sl4a/scripts/script.py




apre una shell Linux eseguita sul computer
adb shell

enumera i dispositivi che sono collegati al computer
adb devices

 molto utile per la programmazione Python puo' essere assumere il controllo remoto ed eseguire gli script Python sul telefono tramite SL4A

per prima cosa si deve attivare il server (SL4A->Menu->Interpreti->Menu->StartServer) ed
appuntare il numero della porta su cui e' in ascolto il server
Successivamente digitare

adb forward tcp:9999 tcp:[numero_porta_server]

seguito da


export AP_PORT=9999

Inserendo nella path il file android.py e lanciando l'interprete Python i comandi sono eseguiti direttamente sul sistema Android del telefono

giovedì 22 dicembre 2011

Applet controllo volume audio su Ubuntu 10.04

Mi sono imbattuto in un problemino fastidioso..il controllo del volume audio posto nella barra in alto dello schermo e' sparito senza motivi particolari

Si puo' certo modificare in volume andando in Sistema/Preferenza/Audio oppure digitando da linea
di comando gnome-volume-control

se si vuole pero' il comodo controllo si puo' lanciare gnome-volume control-applet oppure ancora piu' semplice e definitivo e' andare sulla barra in altro, aggiungere un pannello e poi selezionare Indicatore

lunedì 19 dicembre 2011

Midnight commander

Insostuibile per la gestione da linea di comando

dpkg -i mc_4.7.0.9-1_i386.deb


rispetto ad un po' di tempo fa invocando l'editor viene aperto l'editor di sistema (su Squeeze nano)
per utilizzare l'editor interno di MC e' necessario F9/Opzioni/Configurazione/Usa Editor Interno

La base per compilare

Per la normale amministrazione di compilare pacchetti sorgenti in C e' necessario installare a parte il compilatore GCC/Make ...sempre utile anche gli header del kernel per compilare i moduli (per esempio delle schede di rete)

apt-get install build-essential
apt-get install linux-headers-$(uname -r)

Tux guitar su Debian

post per chitarristi...
una volta installato con

apt-get install tuxguitar


ci si trova con una versione di tuxguitar decisamente buona (la 1.2 nella stable di Debian 6.0.3) ma con il piccolo difetto che non si sente suonare il file di tab.
La soluzione e' quella di installare Timidity

apt-get install timidity

e poi di settare su Strumenti/Impostazioni (o piu' semplicemente F7)/Suono la porta MIDI a
Timidity 0 [128:0]

GDM vs XDM vs SLIM

Anche con Debian LXDE viene installato di default GDM che non e' il massimo come leggerezza del sistema.
per questo motivo e' utile

apt-get install xdm

confermando poi come default xdm
Si perdono alcune funzionalita' come per esempio la possibilita' di scegliere il window manager di volta in volta ma la partenza e' decisamente piu' brillante



Configurare repository Debian italiani


Ovviamente (?) facendo l'installazione tutta da Cd non vengono settati i repository di rete
in particolar modo quelli italiani per cui e' necessario provvedere a mano modificando il file /etc/apt/sources.list aggiungendo le seguenti righe


deb http://ftp.it.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.it.debian.org/debian/ stable main contrib non-free

Scheda di rete

All'installazione Debian ha riconosciuto la scheda di rete integrata nel portatile ma non e' riuscito a configurarla per cui tutte le operazioni di base sull'Acer 730 sono state quelle disponibili sul Cd

Come viene riconosciuta la scheda integrata da lspci
00:06.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08)


Per montare la scheda di rete e' necessario il pacchetto firmware-linux-nonfree ed installare
il modulo e100 (modprobe e100)

a questo punto la scheda e' funzionante ma va configurata e messa nella catena di boot per essere disponibile all'accensione si deve modificare il file /etc/network/interfaces con le seguenti righe


auto eth0
iface eth0 inet dhcp


Complicarsi la vita con la scheda wireless Atheros

Cosa e' un portatile senza una connessione wireless ad oggi??
Cosi' l'Acer 730 e' stato dotato della scheda wireless derivante da un Sony Vaio.
Non avevo molte informazioni al merito ma una volta inserita nello slot pcimcia e 
dato il comando "lspci" ho scoperto che si basa un chipset Atheros
Il pregio principale della scheda e' quello di avere l'antenna estremamente corta che sporge a filo dello chassis ed e'quindi difficile da rompere...il difetto principale e' che il driver della scheda Atheros non e' piu' compreso
nell'installazione base di Debian in quanto relegato nella categoria "non-free"

Installando il pacchetto "firmware-linux-nonfree" (scaricato da un altro computer dato che non e' presente nel cd) la scheda monta il modulo "ath5k" che vede correttamente la scheda wireless ma.....non funziona.

Alla prova su campo mediante WiCd e' stato verificato che il computer si collegava all'Access Point ma non riceveva l'indirizzo in DHCP. Provando impostando un IP fisso la scheda si connette alla rete Wireless ma perde circa tra il 60% e 40% dei pacchetti..in pratica non si naviga. Il problema e' conosciuto nei forum ed e' derivante da una pessima implementazione del modulo ath5k (ovviamente se uno prova Ubuntu tutto funziona al volo)

Come procedere.....ci vorrebbero i driver madwifi...peccato che anche questo sia stato rimosso dalla distribuzione base Debian. Andando sul sito ufficiale di Madwifi (http://madwifi-project.org/) e' disponibile il pacchetto http://madwifi-project.org/wiki/Releases/0.9.4 ma tentando di compilarlo non funziona con l'installazione base di Debian Squeeze 6.0.3....il pacchetto giusto e' http://snapshots.madwifi-project.org/madwifi-0.9.4-current.tar.gz

Per finire e' necessario installare i wireless-tools (all'interno si trova anche iwconfig) e wicd per configurare le connessioni wireless non da linea di comando (per usarlo e' meglio effettuare un reboot della macchina per far salire in modo corretto il servizio)

Google Chrome su Linux e Proxy Server

Non c'e' verso...Google Chrome su Linux non permette di impostare Http Proxy Server
Il messaggio di errore e' del tipo


Quando esegui Google Chrome in un ambiente desktop supportato, verranno utilizzate le impostazioni proxy del sistema. Tuttavia, il tuo sistema non è supportato o si è verificato un problema nell'avvio della tua configurazione di sistema.
Puoi comunque eseguire la configurazione tramite la riga di comando. Consulta man google-chrome per ulteriori informazioni su contrassegni e variabili di ambiente


Si puo' venirne a capo solo passando in shell la una stringa del tipo


google-chrome --proxy-server="http://proxy.mio.server.it:8080" 


Per il resto Google Chrome funziona bene sull'Acer 730 ... molto meglio che Iceweasel


Acer 730

La prima vittima dell'esperimento e' un vetusto Acer 730 (data di produzione 23/06/2000), un portatile con processore PIII a 500 Mhz, un disco fisso da 5700 Mb, scheda di rete Intel 100 ed un Winmodem (dimenticato lettore CD, niente DVD).
Al momento in cui mi e' stato donato (primavera 2010) la batteria era incredibilmente funzionante con una carica stimata di esercizio di 3 ore mentre era ormai scarica la batteria della CMOS.
Foto di Acer 730 (non e' una mia foto ma il modello e' identico)

La sostituzione della batteria della CMOS avviene facendo scivolare lateralmente i pezzi di plastica al di sotto delle cerniere laterali del monitor; guardando sopra la tastiera in corrispondenza di F1 ed il tasto INS si osservano delle fessure in cui far scivolare la punta del cacciavite e fare forza..successivamente si smonta la tastiera e si accede alla batteria

Quasi dimenticavo...l'unica modifica al sistema e' stata quella di sostituire la dotazione di memoria (non so quanto originale) di 128 Mb per farla passare al 256 Mb ....tutta rigorosamente P100

Iniziamo....

Questo blog e' nato per cercare di mantenere traccia delle esperienze sul come far rivivere macchine destinate all'abbandono in un museo dell'informatica (il mio) oppure alla discarica