Calise - usare la webcam come sensore di luminosità ambientale

Condividi con noi i tuoi progetti e guide personali
nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 10:18

Ho visto che il progetto va avanti e è uscita la versione beta 0.1.0!
Innanzitutto complimenti!
2 domandine velocissime: 1) è utilizzabile ora da batteria (cioè non usa la webcam continuamente?)
2) adesso cerca la luminosita solo in /sys/class/backlight/acpi_video0 o anche intel_backlight ecc ecc?
Grazie!
edit: per il primo punto ho letto man calised e spiega tutto perfettamente, grazie mille!
edit2 : letto anche che hai fixato il secondo problema, grazie...
ora una domandina stupida: come si usa? se do un "sudo calised start" non mi dice nulla, se metto calised in rc.conf neppure (se dopo averlo lanciato provo a dare un "calised amb" mi dice che il demone non è stato avviato, e devo avviarlo con calised start...)
Ultima modifica di nierro il 23 febbraio 2012, 12:26, modificato 1 volta in totale.

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 23 febbraio 2012, 13:05

Eccomi qua.

Il demone l'ho pensato solo in user-space per ora, in realta cambiando una trentina di righe e facendo qualche test si potrebbe adattare anche come demone d'avvio -per me ha quasi più senso avviarlo all'avvio della sessione (dopo il login) così si può fermare e riavviare senza bisogno di essere root e non rallenta il boot del sistema-.
Quindi termina tutte le istanze che hai avviato (se si sono avviate) ed avvialo da utente, sicuramente la cosa del demone di sistema si farà.

Per l'utilizzo... ho provato ad essere il più chiaro possibile, ma a quanto pare non è stato abbastanza (non è colpa tua, sapevo fin dall'inizio che era complicato).
Consiglio di dare un occhio agli esempi che ho messo sulla pagina del manuale, in ogni caso, innanzitutto bisogna che ci siano tutti i dati necessari nel profilo utilizzato, con la versione 0.1.0 è obbligatorio avere latitudine e longitudine nel profilo, come segue:

Codice: Seleziona tutto

[Positional]
latitude = 46.04546789       # da sostituire con la propria latitudine
longitude = 13.568765156     # da sostituire con la propria longitudine
# potete trovare informazioni sulla vostra posizione su http://www.earthtools.org/
Se hai paura di sbagliare qualcosa o altro, semplicemente ri-lancia:

Codice: Seleziona tutto

calise --calibrate
Una volta che nel/nei profili c'è tutto quello che serve si avvia il demone col comando:

Codice: Seleziona tutto

calised start
e il demone avvia in automatico il thread di cattura.

A questo punto puoi o fregartene e lasciarlo lavorare che tanto va da Dio, oppure pucciare comandi per il gusto di farlo (e di nuovo rimando agli esempi alla fine della man-page)


Per la domanda sull'utilizzo da batteria, devo dire che test di durata non ne ho fatti, ma il numero di wakeup da idle e il tempo di utilizzo del processore sono tanto bassi da essere ignorabili: dopo un intero ciclo di una giornata (alba,giorno,tramonto) la percentuale media di utilizzo di cpu è di ~0.03%, se si considera solo tramonto o alba siamo su 0.09% (da notare che calise non demone usa ~1.10%)
Ultima modifica di smilzoboboz il 23 febbraio 2012, 13:06, modificato 1 volta in totale.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 13:48

Allora latitudine e longitudine li ho già settati sulla mia posizione...è solo che se do un calised start non varia la luminosità dello schermo (perlomeno, non mi sembra, la vecchia versione appena avviata giocherellava un po' con 2-3 luminosità e poi si stabilizzava, questo invece non lo fa).
Comunque se ho capito bene calised non va avviato da root, giusto? E a questo punto avviare invece calise come programma è del tutto inutile, no? In teoria dato

Codice: Seleziona tutto

calised start
dovrei essere a posto!
Scusa se faccio troppe domande! :)
Grazie

EDIT: chiedo umilmente perdono, provato ad abbassare al minimo e a dare un restart a calised, e effettivamente alza la luminosità! Grazie, 17mb di ram ben spesi :D
Ultima modifica di nierro il 23 febbraio 2012, 13:56, modificato 1 volta in totale.

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 23 febbraio 2012, 14:44

nierro ha scritto:17mb di ram ben spesi
Strano, sul mio laptop segna ~11 MiB, la RAM non dovrebbe essere opinabile (a meno che forse, da me, non condivida roba con altri processi)

Se hai voglia di vedere quanto il programma è una fig@ta controlla ogni tanto il parametro slp:

Codice: Seleziona tutto

calised -g slp
È il tempo che intercorre fra una cattura e l'altra, che varia a seconda dell'altezza del sole sull'orizzonte (alba,tramonto) o delle condizioni meteo (proprio pochi minuti fa il parametro è cambiato da 300 -soleggiato- a 180 -nuvoloso- :D ).

PS: Ho provato a scrivere qualcosa per salvare il "vecchio" calise dall'obsoletezza ma non sono riuscito a trovare motivazioni valide... con ogni probabilità verrà abbandonato per come è ora e la sua gui verrà reinterpretata per diventare un interfaccia al demone.
PPS: Se il valore attuale di retroilluminazione ti sembra non rispecchi appieno la situazione ambientale, è comunque possibile chiedere al demone (che quindi deve essere in esecuzione) una cattura "manuale" col comando:

Codice: Seleziona tutto

calised -s
Ultima modifica di smilzoboboz il 23 febbraio 2012, 15:04, modificato 1 volta in totale.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 17:06

Ahah mi divertirò allora!
Comunque guarda mi usa esattamente 17804kb di ram! (vabbè su 4gb chi se ne accorge??)
Ah una cosa: però adesso, se copro la webcam, oppure entro in uno stanzino buio buio (musica da thriller :) ) da una stanza illuminata, non varia subito la luminosità, giusto?

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 23 febbraio 2012, 17:28

si e no, diciamo che ci mette il tempo al parametro slp (ovvero da ~20 sec a 5 minuti) per capire cosa è successo...
Come accennavo prima, c'è anche il comando manuale.

Una cosa di cui mi sono accorto ora, nel file degli errori (/tmp/calise-XXXXXX/pstderr) vengono raccolti gli errori fatali (che terminano perciò il thread del demone o il demone stesso).
Non ho messo (mannaggia a me) nessun controllo indipendente dall'utente circa l'esecuzione del thread, per cui mi è capitato, ad esempio, che il thread si bloccasse a causa di quest'errore:

Codice: Seleziona tutto

SystemError: ioctl(VIDIOC_S_FMT) failure
relativo alla libreria camera di pygame. A quel punto il programma sapeva in effetti che il thread era terminato, ma non sapeva cosa fare e così si è messo a giocare a briscola... e io ho dovuto MANUALMENTE rimuovere il file /tmp/calise-XXXXXX/pid per riavviare il demone.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 17:57

Ma che features vuoi ancora implementare prima della versione stabile 1.0? :)

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 18:41

Uhm provando sul mio netbook, do un calise --calibrate, ma al terzo passo si ferma (al passo 2 mi chiede quale directory usare e do quella giusta (quella che uso con laptop-mode-tools per variare la luminosità, e provato anche con cat /sys/class/backlight ed è corretto), poi mi dice di impostare la luminosità al minimo ma poi mi restituisce questo errore:

Codice: Seleziona tutto

This passage obtains available backlight steps with selected sysfs backlight path and displays them ordered from lower to higher backlight level.
Imposta la retroilluminazione al minimo e premi invio
Traceback (most recent call last):
  File "/usr/bin/calise", line 123, in <module>
    CliCalibration( defConf, brPath=calise.options.arguments.path )
  File "/usr/lib/python2.7/site-packages/calise/calibration.py", line 318, in __init__
    self.BacklightPassage()
  File "/usr/lib/python2.7/site-packages/calise/calibration.py", line 469, in BacklightPassage
    step0.get_values( "all", pos=self.bfile )
NameError: global name 'step0' is not defined

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 23 febbraio 2012, 19:23

Vedi che ti sei risposto da solo... perché è ancora molto distante dalla stabilità.
Piuttosto, quell'errore è una c@zzata, una riga che mi sono dimenticato di aggiungere dopo che ho diviso una funzione in due:

Codice: Seleziona tutto

step0 = computation()
Fra massimo 10 minuti aggiorno mantenendo la stessa release, cambiando versione (e "faccio finta di pomi" come si dice dalle mie parti)

PS: Scrivendo un programma, soprattutto se pieno di applicazioni più o meno utili (come può essere calise), sono migliaia le idee che ti passano per la testa e posso assicurarti che una eventuale versione 1.0 sarà irriconoscibile rispetto a questa misera 0.1.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 19:27

Sei un eroe :D
immaginavo fosse una svista per questo l'ho subito segnalata! Beh dai te lavori da sviluppatore, noialtri da tester! A ognuno il suo :)
Ok allora stasera aggiorno e riprovo! grazie!

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 20:15

Ultimissima segnalazione: i nuovi profili li salva come default.cfg.cfg
Devo andare a rinominare il file a mano altrimenti non avvia nè il demone nè calise-cli perchè non trova il profilo!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 23 febbraio 2012, 20:19

in realtà me ne ero accorto proprio dopo aver aggiornato alla versione 0.1.0-3, quindi ora c'è una versione 0.1.0-4... che male

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 23 febbraio 2012, 20:22

ahahahah ok, non avevo ancora guardato su aur!! Benissimo dunque, credo perora non ci siano altri problemi :)
Grazie dell'ottimo lavoro!

edit: comunque anche sul mio netbook la ram utilizzata si aggira sui 15-16mb!
Ultima modifica di nierro il 23 febbraio 2012, 20:22, modificato 1 volta in totale.

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 23 febbraio 2012, 20:26

Si, è da vergognarsi però...
C'erano ben 3 errori fatali (banali ma pur sempre fatali) nella calibrazione :facepalm:
«prima di pubblicare qualcosa» -diceva il vecchio saggio- «fallo il debug delle funzioni»

Ora come ora dovrebbe essere tutto a posto dato che era solo il passaggio di calibrazione che non avevo controllato ( :facepalm: )
Ultima modifica di smilzoboboz il 23 febbraio 2012, 20:28, modificato 1 volta in totale.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Messaggio da nierro » 24 febbraio 2012, 22:01

Ok oggi si è stabilizzato sugli 11mega :D

Avatar utente
Ninquitassar
Little John
Messaggi: 1085
Iscritto il: 16 settembre 2011, 21:07
Architettura: x86_64 (64bit)
Località: 127.0.0.1

Messaggio da Ninquitassar » 29 febbraio 2012, 15:15

1) Domanda, magari sciocca: c'è modo di bloccare il led "flash" della webcam?
2) Ho inserito nell'autostart.sh di WMFS

Codice: Seleziona tutto

calised start &
ma il demone non parte... Idee?

Complimentissimi per l'applicazione. Ha grandi potenzialità e sono certo che tra non tantissimo potrebbe diventare non AUR. :)
Ultima modifica di Ninquitassar il 29 febbraio 2012, 17:07, modificato 1 volta in totale.
CPU: Intel Core i5-4460 (3.20GHz) Video: NVIDIA GeForce GT610 RAM: 8Gb Kingston DDR3
OS: Arch x86_64 + i3 + GTK+
My DeviantART

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Re: calise - usare la webcam come sensore di luminosità

Messaggio da smilzoboboz » 12 giugno 2012, 13:03

Chiedo scusa a Ninquitassar (e in realtà a tutti i poveri cristi che mi hanno chiesto qualcosa in questi mesi) se non ho risposto che ora. Il fatto è che se non mi arrivano le email di notifica non mi muovo a meno di non capitarci per caso come adesso...

Fatta la doverosa (e mi scuso ancora) premessa, volevo, oltre che rispondere per quel che posso a Ninquitassar, chiedere informazioni riguardo alla vostra esperienza di utilizzo di Calise.

@Ninquitassar:
1. Non so cosa intendi con led "flash", intendi che hai la lucetta (verde/blu) accesa quando va la webcam oppure che la tua webcam ha il "flash" e quando si accende parte anche quello?
Nel primo caso, è normale e non ci puoi fare niente (a meno di pucciare roba hardware), nel secondo *non* ne ho idea...
2. Nel frattempo è uscita una nuova versione (0.2.0) *veramente* buona, per ora l'ho provata personalmente su più di 10 macchine (Fedora +spins, [X,L]Ubuntu, Archlinux) e tutte hanno risposto bene, solo una aveva un bilanciamento del bianco troppo forte che vanificava ogni cosa

@Everyone:
Ora la mia richiesta: la versione "demone" (che in realtà è un vero e proprio servizio di sistema) c'è qualcuno che la usa, se sì, come vi ci trovate?

Per chi non l'avesse ancora provata consiglio di avviare il demone all'avvio di sistema con

Codice: Seleziona tutto

nice calised
NOTA: nice (per chi non lo sapesse) cambia priorità al processo (in questo caso ne "toglie") e, poiché calise sta idle per parecchi secondi e poi fa una cattura ed elabora, conviene farlo stare al suo posto, così se nel particolare momento in cui venga effettutata una cattura voi state usando il 100% delle risorse di sistema, calise aspetta da bravo cucciolo

In più, alle volte, per repentini cambi di luminosità ambientale causati dalle più disparate circostanze, dover aspettare qualche decina di secondi è troppo... quindi io nella mia macchina ho un launcher sul pannello col comando

Codice: Seleziona tutto

calised -c
che mi permette di effettuare una cattura manuale con un click

In ogni caso vi consiglio caldamente di usare il demone perché, grazie ad una attenta cura, ha dei consumi energetici del tutto trascurabili (~0.3Wh durante alba e tramonto -un mouse usb consuma 0.5Wh- e meno di ~0.1Wh per il resto della giornata), consumo di tempo della cpu sotto lo 0.1% e ~10MB di RAM.
Su questo ci tenevo parecchio perché così, ora, può essere usato anche da batteria senza nessun problema.

Mmm, ok, bigPost, scusate l'esuberanza,
Nicolò

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: calise - usare la webcam come sensore di luminosità

Messaggio da nierro » 12 giugno 2012, 15:09

Non l'ho ancora provato...comunque adesso utilizzo systemd, e quindi credo di dovrermi creare un .service per avviare il demone, giusto? In tal caso, appena lo provo e vedo se funziona per bene, potrei passarti il servizio per systemd, cosi potresti integrarlo nel pacchetto.
Grazie dell'ottimo lavoro :)

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Re: calise - usare la webcam come sensore di luminosità

Messaggio da smilzoboboz » 12 giugno 2012, 15:18

visto che son qua ti rispondo subito.
Proprio perché non è un "demone" vero e proprio ma un servizio che può sia girare da root (copiando il profilo default in /etc/calise.conf), sia su spazio-utente (che io consiglierei), si può usare come si meglio si crede.
Se uno usa il PC in multiutenza probabilmente conviene avviarlo come servizio di sistema (deamon like) avviato da root al boot-up, altrimenti decisamente vale la pena avviarlo da utente semplice a inizio sessione.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: calise - usare la webcam come sensore di luminosità

Messaggio da nierro » 12 giugno 2012, 15:27

Ok, quindi col vecchio calised start, giusto? Ancora meglio, mi risparmio un servizio in avvio di systemd :)
Perfetto, l'ho appena compilato, adesso riavvio, mi rifaccio la calibrazione, provo e ti faccio sapere come mi trovo!
Grazie ancora!

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: calise - usare la webcam come sensore di luminosità

Messaggio da nierro » 12 giugno 2012, 15:30

Ahia, trovato forse un microbug:

Codice: Seleziona tutto

ls /sys/class/backlight/
eeepc-wmi  intel_backlight

Codice: Seleziona tutto

Step 2 of 7
This passage lists all available sysfs backlight directories and, if more than one, asks wich has to be used.

1: /sys/class/backlight/eeepc-wmi/brightness
2: /sys/class/backlight/eeepc-wmi/brightness
EDIT: fixato usando --path...comunque quest'altro errore, te come lo risolvi?

Codice: Seleziona tutto

IOError: [Errno 13] Permission denied: '/sys/class/backlight/intel_backlight/brightness'
Please set write permission for current user on that file

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Re: calise - usare la webcam come sensore di luminosità

Messaggio da smilzoboboz » 12 giugno 2012, 15:43

yup, bug!
Il valore viene settato una volta ma la seconda lo vede già settato e non fa nulla > il valore resta lo stesso.
Per risolvere, temporaneamente, dagli in pasto il percorso che vuoi:

Codice: Seleziona tutto

calise --calibrate --path /sys/class/backlight/quelchevuoi/brightness
l'errore è semplice risolverlo:
o dai (sconsigliato)

Codice: Seleziona tutto

# chmod 666 /sys/class/backlight/intel_backlight/brightness
o fai quello che c'è sulle regole udev che il pacchetto crea (devi essere membro del gruppo video):

Codice: Seleziona tutto

# chmod 664 /sys/class/backlight/intel_backlight/brightness
# chgrp root:video /sys/class/backlight/intel_backlight/brightness
PS: Per scegliere quale fra i due ti do un consiglio, guarda il valore di $percorsoscelto/actual_brightness, cambia manualmente la retoilluminazione, riguarda, se è cambiato, prendi quello, altrimenti prendi l'altro
PPS: mille grazie, decisamente un bug... una caxxata ma pur sempre un bel brucozzo
Ultima modifica di smilzoboboz il 12 giugno 2012, 15:46, modificato 1 volta in totale.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: calise - usare la webcam come sensore di luminosità

Messaggio da nierro » 12 giugno 2012, 15:44

Si si l'avevo già superato quello :)
Per quanto riguarda invece l'altro errore, quello del permesso di scrittura? Tu come lo risolvi? chmod 666 in rc.local?
EDIT: ma anche nel secondo caso devo sempre piazzarlo in rc.local?
Ah forse ho capito, con la regola udev dovrebbe essere automatizzato il processo, giusto? Però a me la regola udev l'ha creata con nome sbagliato per quel bug del path...provo a rinominarla e modificarla per adattarla e vedo cosa succede!
Ultima modifica di nierro il 12 giugno 2012, 15:50, modificato 1 volta in totale.

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Re: calise - usare la webcam come sensore di luminosità

Messaggio da smilzoboboz » 12 giugno 2012, 15:50

che poi, dopo aver installato hai riavviato?
In teoria, riavviando, le regole udev contenute in /usr/lib/udev/rules.d/ dovrebbero entrare in funzione e garantirti i permessi su quel file.
(Certo, invece di riavviare basta darle manualmente per la prima volta)

se mi dai un

Codice: Seleziona tutto

cat /usr/lib/udev/rules.d/99-backlight-*
posso dirti se c'è qualcosa che non va

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: calise - usare la webcam come sensore di luminosità

Messaggio da nierro » 12 giugno 2012, 15:54

No ti spiego, mi trovava solo l'altro file, quello in /eeepc-wmi. Che però non uso e non funziona.
Ho riadattato la .rules a intel_backlight, e adesso riavviando, tutto funzionerà!

Rispondi