[Progetto] [Olifant] programma antifurto pc!

Iniziative e progetti della comunità legati a Ubuntu.
Regole della sezione
Questa sezione ha lo scopo di raccogliere le iniziative/progetti della nostra Comunità legati ad Ubuntu. I progetti ospitati nascono da iniziative degli utenti o gruppi di utenti. In futuro i progetti potrebbero rimanere iniziative "personali" o essere integrate nella distribuzione, sponsorizzate da Ubuntu o da Canonical a discrezione dei responsabili. All'interno di essa sarà possibile inserire delle discussioni che hanno la funzione di pubblicizzare avvenimenti, iniziative e progetti software su Ubuntu e GNU/Linux in generale. Sarà inoltre possibile per gli utenti proporre lo sviluppo di nuovi software e in questo caso la discussione di richiesta avrà la funzione di generare un requisito funzionale del prodotto da sviluppare.

Sezione I - Iniziative
  • Fanno parte di iniziative, ad esempio, le seguenti categorie: corsi, progetti editoriali, libri.
  • La segnalazione di un'iniziativa avviene creando una discussione con l'annuncio.
  • Una volta effettuata la segnalazione, la discussione viene chiusa dal Gruppo Forum.
  • Se l'iniziativa esposta comporta un costo di adesione o fruizione, questo deve essere esplicitamente riportato all'interno della discussione.
  • È obbligatorio segnalare all'interno della discussione i riferimenti per poter contattare/partecipare all'iniziativa.
Sezione II - Progetti
  • La segnalazione di un progetto software, come per le iniziative, avviene e si sviluppa all'interno di una singola discussione.
  • Sarà consentito l'inserimento di software solo se rilasciati sotto licenza GPL (in tutte le sue versioni) o equivalente FOSS, tale da garantire agli utenti l'utilizzo del prodotto senza restrizioni e agli sviluppatori la proprietà intellettuale del codice prodotto.
  • Nell'oggetto della discussione dovrà essere riportata la categoria (es. [Iniziativa], [Progetto] o [Proposta]) e una semplice descrizione del progetto.
  • Se il progetto ha già un sito che lo ospita sarà a discrezione del Gruppo Forum chiuderla come segnalazione o lasciarla aperta.
  • Se il progetto non ha un sito che lo ospita si potranno aprire due discussioni, una per proporre modifiche/implementazioni (dove nel titolo occorre specificare [sviluppo]) ed una per segnalare problemi (e nel titolo dovrà comparire [supporto]).
  • Non è consentita l'apertura di nuove discussioni in riferimento a versioni superiori o modificate di un prodotto già riportato in precedenza.
  • Se il software oggetto del progetto ha una dimensione non superiore ai 128 kB, per prodotti che non hanno un sito che li ospita, sarà possibile allegarlo alla discussione.
Sezione III - Proposte
  • Una proposta deve essere eseguita e si svilupperà all'interno di una singola discussione.
  • Le proposte dovranno essere inserite direttamente nella sezione "Progetti della Comunità".
  • Dovranno essere specificate le funzionalità che devono essere sviluppate.
  • Non dovranno essere riportate diciture tipo "...deve fare come questo software...", ma indicare nel miglior modo possibile i requisiti.
  • Una volta segnalata la discussione resterà aperta per consentire uno scambio di idee su come sviluppare il codice o finché gli sviluppatori non forniranno una soluzione (da pubblicizzare poi, come visto prima, nella sezione Progetti) che ne soddisfi il requisito.
Per quanto non esposto sopra, si fa comunque riferimento al Regolamento del forum ed al Codice di Condotta della Comunità.
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4428473#p4428473][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Scrivo soltanto per segnalare che sono riuscito a individuare l'errore relativo al messaggio postato in precedenza. Usando perror e strerror, ottengo:

Codice: Seleziona tutto

The following error occurred: Dispositivo o risorsa occupata
errno = 16, 'Dispositivo o risorsa occupata'
che dovrebbe corrispondere a un EBUSY :sisi:
Questo significa che non puoi acquisire il blocco della tastiera; cosa significa però praticamente? Che la tastiera è usata già da X.org e quindi tu non la puoi usare? Che devi essere root?

Prova a avviare il programma come root per vedere cosa succede... magari devi modificare qualche file di configurazione in /etc, oppure aggiungere uno script init.d che aggiunge l'utente a un determinato gruppo in grado di catturare la tastiera, magari creato ad-hoc... tanto ci sono vari modi per concedere l'accesso a root attraverso sudo a un utente appartenente a un determinato gruppo per eseguire un determinato programma, es. /etc/sudoers.d :)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Questo significa che non puoi acquisire il blocco della tastiera; cosa significa però praticamente? Che la tastiera è usata già da X.org e quindi tu non la puoi usare? Che devi essere root?
Secondo me, il blocco serve a impedire l'utilizzo della tastiera quando è attivo l'allarme (scorciatoie, tasti audio, ecc...) :)
Prova a avviare il programma come root per vedere cosa succede... magari devi modificare qualche file di configurazione in /etc, oppure aggiungere uno script init.d che aggiunge l'utente a un determinato gruppo in grado di catturare la tastiera, magari creato ad-hoc... tanto ci sono vari modi per concedere l'accesso a root attraverso sudo a un utente appartenente a un determinato gruppo per eseguire un determinato programma, es. /etc/sudoers.d :)
Il programma gira di default già con i permessi di root, altrimenti non potrebbe eseguire alcune operazioni a livello di sistema. Proprio come alcune applicazioni in ubuntu. E no, non credo che occorra agire sui permessi. Se lo provi, magari mi fai sapere se il problema lo riscontri anche sul tuo pc :)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4430329#p4430329][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Questo significa che non puoi acquisire il blocco della tastiera; cosa significa però praticamente? Che la tastiera è usata già da X.org e quindi tu non la puoi usare? Che devi essere root?
Secondo me, il blocco serve a impedire l'utilizzo della tastiera quando è attivo l'allarme (scorciatoie, tasti audio, ecc...) :)
Prova a avviare il programma come root per vedere cosa succede... magari devi modificare qualche file di configurazione in /etc, oppure aggiungere uno script init.d che aggiunge l'utente a un determinato gruppo in grado di catturare la tastiera, magari creato ad-hoc... tanto ci sono vari modi per concedere l'accesso a root attraverso sudo a un utente appartenente a un determinato gruppo per eseguire un determinato programma, es. /etc/sudoers.d :)
Il programma gira di default già con i permessi di root, altrimenti non potrebbe eseguire alcune operazioni a livello di sistema. Proprio come alcune applicazioni in ubuntu. E no, non credo che occorra agire sui permessi. Se lo provi, magari mi fai sapere se il problema lo riscontri anche sul tuo pc :)
Ehm, mmh, da dov'è che si scaricava? :)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

L'ultimo upload lo puoi trovare qui (che dovrebbe essere lo stesso di launchpad): http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4078626
Però ti occorre anche sostituire il file gui.py con quello a cui ho aggiunto delle correzioni (che ho sul mio PC) :-)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4430551#p4430551][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
L'ultimo upload lo puoi trovare qui (che dovrebbe essere lo stesso di launchpad): http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4078626
Però ti occorre anche sostituire il file gui.py con quello a cui ho aggiunto delle correzioni (che ho sul mio PC) :-)
Beh dal momento che non sono il tipo che ha scassinato il forum di Ubuntu internazionale penso che mi dovrai mandare anche quello :)
Mettilo su Dropbox, è comodo, ti salva tutte le revisioni del file e ti permette di inviarlo agli altri ;)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Beh dal momento che non sono il tipo che ha scassinato il forum di Ubuntu internazionale penso che mi dovrai mandare anche quello :)
Ciao, scusa per il ritardo :shy:
Posto il file in allegato (occorre rimuovere l'estensione .txt):
gui.py.txt
gui.py
(25.54 KiB) Scaricato 140 volte
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4437383#p4437383][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Beh dal momento che non sono il tipo che ha scassinato il forum di Ubuntu internazionale penso che mi dovrai mandare anche quello :)
Ciao, scusa per il ritardo :shy:
Posto il file in allegato (occorre rimuovere l'estensione .txt):
gui.py.txt
Sarebbero graditi anche i sorgenti di libdevicelock.so e un howto su come compilarlo, così me lo compilo a 64 bit, grazie :p :D

Codice: Seleziona tutto

Traceback (most recent call last):
  File "olifant.py", line 6, in <module>
    from olifantDeviceLock import DeviceLocker
  File "/home/davideddu/beta1/olifantDeviceLock.py", line 5, in <module>
    lib = cdll.LoadLibrary('./libdevicelock.so') #this is the C library which does magic
  File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: ./libdevicelock.so: wrong ELF class: ELFCLASS32
EDIT: e poi perché usi sia pyaudio che alsaaudio? Uno non basta?
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Sarebbero graditi anche i sorgenti di libdevicelock.so e un howto su come compilarlo, così me lo compilo a 64 bit, grazie :p :D
I sorgenti sono presenti all'interno della relativa cartella nel tarball di olifant. È molto semplice: basta lanciare lo script che compila il codice di libdevicelock e crea automaticamente il file .so :sisi:
EDIT: e poi perché usi sia pyaudio che alsaaudio? Uno non basta?
Da quel che mi ricordo nella lettura dei sorgenti, olifant utilizza i metodi sia dell'una che dell'altra :)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4437443#p4437443][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Sarebbero graditi anche i sorgenti di libdevicelock.so e un howto su come compilarlo, così me lo compilo a 64 bit, grazie :p :D
I sorgenti sono presenti all'interno della relativa cartella nel tarball di olifant. È molto semplice: basta lanciare lo script che compila il codice di libdevicelock e crea automaticamente il file .so :sisi:
A me non risulta...

Codice: Seleziona tutto

.:
alarm.wav  gui.py~  libdevicelock.so  olifantAudio.pyc      olifantDeviceLock.pyc  olifantException.pyc  olifant.py   olifantUSB.py
gui.py     images   olifantAudio.py   olifantDeviceLock.py  olifantException.py    olifantPowerLock.py   olifant.py~  usb

./images:
icon.png  icon_writing.png

./usb:
backend  control.py  control.pyc  core.py  core.pyc  _debug.py  _debug.pyc  __init__.py  __init__.pyc  _interop.py  _interop.pyc  legacy.py  legacy.pyc  util.py  util.pyc

./usb/backend:
__init__.py  __init__.pyc  libusb01.py  libusb01.pyc  libusb10.py  libusb10.pyc  openusb.py  openusb.pyc
Comunque la libreria l'ho trovata già compilata a 64 bit, ma la batteria in /proc/acpi mi sa che non la trovi...

Codice: Seleziona tutto

Traceback (most recent call last):
  File "olifant.py", line 348, in <module>
    ol = Olifant(Olifant.PASSWD_MODE, [Olifant.AC_ALARM])
  File "olifant.py", line 86, in __init__
    self.__initSystemFiles()
  File "olifant.py", line 308, in __initSystemFiles
    DEV_batt = os.listdir(folder_batt)
OSError: [Errno 2] No such file or directory: '/proc/acpi/battery'
La batteria la trovi in /sys/class/power_supply/. Stai attento perché c'è anche il caricatore: il caricatore si chiama AC e puoi vedere se è attaccato leggendo "online" (0 staccato, 1 attaccato) e la batteria è invece BAT#, dove # è un numero che parte da 0, e puoi vedere se è presente leggendo "present" (tanto è quello che vuoi sapere, vero?)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

A me non risulta...
Si trova all'interno della directory libpower situata a sua volta nella directory principale dei sorgenti di olifant :)
La batteria la trovi in /sys/class/power_supply/. Stai attento perché c'è anche il caricatore: il caricatore si chiama AC e puoi vedere se è attaccato leggendo "online" (0 staccato, 1 attaccato) e la batteria è invece BAT#, dove # è un numero che parte da 0, e puoi vedere se è presente leggendo "present" (tanto è quello che vuoi sapere, vero?)
Interessante. Quando ho testato il programma su vari laptop, ho trovato i file sempre nel path specificato dal codice, ma se nel tuo caso è diverso, occorre aggiungere al codice come possibile target anche il path cui fai riferimento. Appena posso, testo olifant su un ulteriore altro laptop per vedere dove si trovano i file :D
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4437733#p4437733][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
A me non risulta...
Si trova all'interno della directory libpower situata a sua volta nella directory principale dei sorgenti di olifant :)
Forse parli di questo... http://bazaar.launchpad.net/~phate867/o ... ying/files
La batteria la trovi in /sys/class/power_supply/. Stai attento perché c'è anche il caricatore: il caricatore si chiama AC e puoi vedere se è attaccato leggendo "online" (0 staccato, 1 attaccato) e la batteria è invece BAT#, dove # è un numero che parte da 0, e puoi vedere se è presente leggendo "present" (tanto è quello che vuoi sapere, vero?)
Interessante. Quando ho testato il programma su vari laptop, ho trovato i file sempre nel path specificato dal codice, ma se nel tuo caso è diverso, occorre aggiungere al codice come possibile target anche il path cui fai riferimento. Appena posso, testo olifant su un ulteriore altro laptop per vedere dove si trovano i file :D
Non penso sia un problema di portatile, quanto un problema di kernel.
Che versione di Linux hai? Io ho la 3.8.0-27-generic di Linux Mint (penso che non abbiano fatto alcuna modifica rispetto al kernel di Ubuntu Raring).

In ogni caso fai in modo che vengano controllati entrambi i percorsi :)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Forse parli di questo...
Hai ragione :D Guarda qui: http://bazaar.launchpad.net/~olifantcod ... actorying/ ;)
Non penso sia un problema di portatile, quanto un problema di kernel.
Che versione di Linux hai? Io ho la 3.8.0-27-generic di Linux Mint (penso che non abbiano fatto alcuna modifica rispetto al kernel di Ubuntu Raring).
Onestamente, non ricordo con quante serie di kernel ho provato olifant :shy: Appena posso, eseguo un test e ti faccio sapere :)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Ok, ho fatto un test su debian con kernel della serie 3.2.0 :sisi:

In buona parte hai ragione tu, nel senso che nel mio caso la batteria non ha il percorso /proc/acpi/battery (file 'state' e stringa 'yes', come da codice) ma /sys/class/power_supply/ nella directory BAT1 (con file 'present' e stringa '1'). La differenza sta nel fatto che se rimuovi la batteria, scompare tutta la cartella BAT1 da power_supply. Mentre, per quanto riguarda l'alimentazione da corrente, essa ha pure il percorso /sys/class/power_supply/ ma, se la scollego, la cartella ACAD non scompare e il file 'online' contiene il valore '0' (se collegata, il file 'online' contiene il valore '1'). Sugli altri pc, trovavo in /proc/acpi/ac_adapter il file 'state' con valore 'on-line' :D

Invece, per quanto riguarda la chiusura del coperchio, essa ha ancora il percorso /proc/acpi/button/lid dove compare la cartella LID con il file 'state' contenente anche la stringa 'open' ;)

Ricordo che, una volta, alimentazione via cavo, a batteria e chiusura del coperchio si trovavano tutte e tre in /proc/acpi, mentre adesso si verifica la situazione che ho appena descritto. Ci sono differenze tra ciò che ho visto ora qui su debian e ciò che hai visto tu? :)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4438535#p4438535][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ok, ho fatto un test su debian con kernel della serie 3.2.0
In buona parte hai ragione tu, nel senso che nel mio caso la batteria non ha il percorso /proc/acpi/battery (file 'state' e stringa 'yes', come da codice) ma /sys/class/power_supply/ nella directory BAT1 (con file 'present' e stringa '1'). La differenza sta nel fatto che se rimuovi la batteria, scompare tutta la cartella BAT1 da power_supply. Mentre, per quanto riguarda l'alimentazione da corrente, essa ha pure il percorso /sys/class/power_supply/ ma, se la scollego, la cartella ACAD non scompare e il file 'online' contiene il valore '0' (se collegata, il file 'online' contiene il valore '1'). Sugli altri pc, trovavo in /proc/acpi/ac_adapter il file 'state' con valore 'on-line'

Invece, per quanto riguarda la chiusura del coperchio, essa ha ancora il percorso /proc/acpi/button/lid dove compare la cartella LID con il file 'state' contenente anche la stringa 'open' ;)

Ricordo che, una volta, alimentazione via cavo, a batteria e chiusura del coperchio si trovavano tutte e tre in /proc/acpi, mentre adesso si verifica la situazione che ho appena descritto. Ci sono differenze tra ciò che ho visto ora qui su debian e ciò che hai visto tu? :)
Premetto che dovresti evitare di usare procfs per ottenere queste informazioni: non è fatto per quello ma per contenere la lista dei processi attivi; non so per quanto tempo ce le lasceranno, le stanno togliendo piano piano.
Cerca per quanto possibile di usare sysfs.

Non è questione di Ubuntu, Debian o altra distro, la questione è quella sopra: da quando hanno inventato sysfs stanno migrando tutto verso sys, perché proc serve ad altro. Anche in Android è più o meno lo stesso ;)

Per il resto confermo: la directory BAT# è presente finché è presente la batteria (ma controlla per sicurezza anche il file present, non è detto che tutti i PC reagiscano allo stesso modo), e AC è sempre presente.

Dovresti controllare tanti PC con una versione recente del kernel e vedere come appaiono, in modo da poter elaborare una regex per trovare sempre una batteria e un caricatore. Armati di una live di Lubuntu Raring o Saucy (così puoi provarlo anche nei PC vecchi) e chiedi a tutti quanti di farti controllare ;)

La lid non riesco a trovarla in /sys, prova a cercare tu, altrimenti continua a usare /proc.
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Per il resto confermo: la directory BAT# è presente finché è presente la batteria (ma controlla per sicurezza anche il file present, non è detto che tutti i PC reagiscano allo stesso modo), e AC è sempre presente.
Sto correggendo il codice di olifant.py ma trovo difficoltà proprio su questo punto: quando il programma tenta di aprire i file in questione, non si tiene conto che l'assenza della batteria può riflettersi anche nella mancanza della relativa directory. In pratica, os.listdir crea una lista di directory presenti in /sys/class/power_supply/ e itera su di essa finché non trova il file 'present'. Ma se la batteria non è inserita, open non potrà mai aprire tale file. Il metodo isBatteryInserted potrebbe risultare abbastanza inutile, in questo caso. Come posso correggere l'intero algoritmo per adattarlo a tutti questi casi? :)
Dovresti controllare tanti PC con una versione recente del kernel e vedere come appaiono, in modo da poter elaborare una regex per trovare sempre una batteria e un caricatore. Armati di una live di Lubuntu Raring o Saucy (così puoi provarlo anche nei PC vecchi) e chiedi a tutti quanti di farti controllare
Purtroppo, non ho molte possibilità di testare su vari laptop. Se conosci qualche cavia utente che volesse controllare le directory, benvenga :D
La lid non riesco a trovarla in /sys, prova a cercare tu, altrimenti continua a usare /proc.
Anche con una ricerca approfondita, non sono riuscito a trovarla :(
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4441332#p4441332][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Per il resto confermo: la directory BAT# è presente finché è presente la batteria (ma controlla per sicurezza anche il file present, non è detto che tutti i PC reagiscano allo stesso modo), e AC è sempre presente.
Sto correggendo il codice di olifant.py ma trovo difficoltà proprio su questo punto: quando il programma tenta di aprire i file in questione, non si tiene conto che l'assenza della batteria può riflettersi anche nella mancanza della relativa directory. In pratica, os.listdir crea una lista di directory presenti in /sys/class/power_supply/ e itera su di essa finché non trova il file 'present'. Ma se la batteria non è inserita, open non potrà mai aprire tale file. Il metodo isBatteryInserted potrebbe risultare abbastanza inutile, in questo caso. Come posso correggere l'intero algoritmo per adattarlo a tutti questi casi?
Dovresti controllare tanti PC con una versione recente del kernel e vedere come appaiono, in modo da poter elaborare una regex per trovare sempre una batteria e un caricatore. Armati di una live di Lubuntu Raring o Saucy (così puoi provarlo anche nei PC vecchi) e chiedi a tutti quanti di farti controllare
Purtroppo, non ho molte possibilità di testare su vari laptop. Se conosci qualche cavia utente che volesse controllare le directory, benvenga
La lid non riesco a trovarla in /sys, prova a cercare tu, altrimenti continua a usare /proc.
Anche con una ricerca approfondita, non sono riuscito a trovarla :(
Non ho voglia di ritagliare le citazioni :p
1)

Codice: Seleziona tutto

import os, sys
from os.path import join, isdir, exists

assert "linux" in sys.platform  # Non vorrai che qualcuno si metta a provarlo su BSD o Mac... :P

def check_batteries():
    for i in sorted(os.listdir("/sys/class/power_supply")):
        if "BAT" in name and isdir(join("/sys/class/power_supply", i)):
            if exists(join("/sys/class/power_supply", i, "present")):
                with open(join("/sys/class/power_supply", i, "present"), "r") as f:
                    yield i, bool(int(f.read()))

def ac_present():
    if exists("/sys/class/power_supply/AC/present"):
        with open("/sys/class/power_supply/AC/present", "r") as f:
            return bool(int(f.read()))
    else:
        return False


##############################################################################################################
######### Da eseguire al bloccaggio (uso self supponendo che questo codice sia eseguito dentro un oggetto)
##############################################################################################################
self.batteries = {battery: present for battery, present in check_batteries()}
self.acpresent = ac_present()


##############################################################################################################
######## Da eseguire a ogni iterazione del loop di controllo
######## Puoi eseguirlo all'interno di un ciclo "try", e "sganciare la bomba" se viene sollevata AsserionError
##############################################################################################################
assert self.acpresent == ac_present()

for battery, present in check_batteries():
    assert battery in self.batteries.keys()
    assert self.batteries[battery] == present

# Controlla anche "al contrario", per verificare che non siano state aggiunte batterie
batteries = {battery: present for battery, present in check_batteries()}
for battery in self.batteries:
    present = self.batteries[battery]
    assert battery in batteries.keys()
    assert batteries[battery] == present
Era così difficile? :p
Ricorda che "assert" solleva AssertionError se non è vero quello che gli dici! E non gli piace avere il naso lungo, quindi è affidabile :D

2) Sì, posso verificare in quello di mia cugina, di mia sorella, di mia zia, nel mio netbook e nel mio cellulare.

3) Vabbé, prendiamo la filosofia "finché la barca va, lasciala andare..." :D Tu lascialo così, poi se qualcuno si lamenta approfondirai!
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Era così difficile? :p
Ricorda che "assert" solleva AssertionError se non è vero quello che gli dici! E non gli piace avere il naso lungo, quindi è affidabile
Davvero bravo! :o Il problema è che il codice che hai scritto va letteralmente a 'distruggere' la struttura creata dal precedente sviluppatore di olifant per quanto riguarda il controllo degli 'stati' dei tre 'device' :-(
Infatti, i compiti eseguiti dagli algoritmi che hai postato, nell'attuale codice, sono divisi tra i metodi __initSystemFiles, __isBatteryInserted, __isCablePlugged e __isLidOpen. Senza contare che anche __checkLaptopStatus chiama gli ultimi tre :sisi:
Come posso risolvere questo problema? :)
2) Sì, posso verificare in quello di mia cugina, di mia sorella, di mia zia, nel mio netbook e nel mio cellulare.
Eh, sarebbe ottimo! Ti ringrazio ;D
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4443798#p4443798][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Era così difficile? :p
Ricorda che "assert" solleva AssertionError se non è vero quello che gli dici! E non gli piace avere il naso lungo, quindi è affidabile
Davvero bravo! :o Il problema è che il codice che hai scritto va letteralmente a 'distruggere' la struttura creata dal precedente sviluppatore di olifant per quanto riguarda il controllo degli 'stati' dei tre 'device' :-(
Infatti, i compiti eseguiti dagli algoritmi che hai postato, nell'attuale codice, sono divisi tra i metodi __initSystemFiles, __isBatteryInserted, __isCablePlugged e __isLidOpen. Senza contare che anche __checkLaptopStatus chiama gli ultimi tre :sisi:
Come posso risolvere questo problema? :)
Diciamo che non c'ho capito niente... magari domani controllo il sorgente e vedo di cosa stai parlando...
e poi adatto il codice. Comunque potresti sempre modificare il codice originale (ora lo stai sviluppando tu, se il vecchio sviluppatore non se ne occupa più non è un problema tuo, l'importante è che funzioni: se mantieni sempre la "vecchia struttura" rischi di fare l'errore di GTK, e cioè un interfaccia che ti può crashare da un momento all'altro); oppure puoi esaminare il mio codice e adattarlo, non dovrebbe essere complicato...
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Diciamo che non c'ho capito niente... magari domani controllo il sorgente e vedo di cosa stai parlando...
e poi adatto il codice. Comunque potresti sempre modificare il codice originale (ora lo stai sviluppando tu, se il vecchio sviluppatore non se ne occupa più non è un problema tuo, l'importante è che funzioni: se mantieni sempre la "vecchia struttura" rischi di fare l'errore di GTK, e cioè un interfaccia che ti può crashare da un momento all'altro); oppure puoi esaminare il mio codice e adattarlo, non dovrebbe essere complicato...
Sto provando a importare il tuo codice e adattarlo a quello attuale ma incontro delle difficoltà :( Per fortuna, questo programma è poco soggetto ai crash. Se dovessimo riscrivere un'applicazione da zero per ogni bugfix, questa resterebbe sempre inchiodata alla prima versione alpha :D
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4445445#p4445445][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Diciamo che non c'ho capito niente... magari domani controllo il sorgente e vedo di cosa stai parlando...
e poi adatto il codice. Comunque potresti sempre modificare il codice originale (ora lo stai sviluppando tu, se il vecchio sviluppatore non se ne occupa più non è un problema tuo, l'importante è che funzioni: se mantieni sempre la "vecchia struttura" rischi di fare l'errore di GTK, e cioè un interfaccia che ti può crashare da un momento all'altro); oppure puoi esaminare il mio codice e adattarlo, non dovrebbe essere complicato...
Sto provando a importare il tuo codice e adattarlo a quello attuale ma incontro delle difficoltà :( Per fortuna, questo programma è poco soggetto ai crash. Se dovessimo riscrivere un'applicazione da zero per ogni bugfix, questa resterebbe sempre inchiodata alla prima versione alpha :D
Scusami se non te l'ho adattato io, sono impegnato questi giorni e non hp nemmeno una gran voglia...
Prometto che appena ce la faccio controllo :)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Scrivi risposta

Ritorna a “Progetti della Comunità”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti