Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Loop scriptje programmeren voor bluetooth scanner  (gelezen 2258 keer)

Blambo

  • Gast
Loop scriptje programmeren voor bluetooth scanner
« Gepost op: 2008/12/24, 15:28:12 »
Voor mijn thesis wil ik de beweging van individuen analyseren, gebruik makend van een bluetooth scanner.

Het is de bedoeling een computer met bluetooth-dongle een bepaalde tijd voortdurend te laten scannen.
Deze moet alle gedetecteerde apparaten noteren in een logfile.
De nodige informatie zijn: ID (mac address) en een timestamp, bij voorkeur aangevuld met de signaalsterkte per toestel.

Ondertussen ben ik al te weten gekomen dat je met 2 commando's al heel ver kan geraken, namelijk "date" en "hcitool scan".

Ik heb ondervonden dat 1 scan 10 seconden duurt.
Hoe kan ik ervoor zorgen dat na deze 10 seconden er opnieuw een scan uitgevoerd wordt?
En dat alles genoteerd wordt in een logfile?

Ik veronderstel dat dit niet moeilijk zal zijn, maar ik ben geen programmeur, maar een student geografie met optie landmeetkunde.
Alvast bedankt voor jullie hulp

Met vriendelijke groeten

Bram Van Londersele

Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #1 Gepost op: 2008/12/24, 16:47:04 »
while true; do echo '[ '`date`' ] ' `hcitool scan` >> /var/log/mijnlogfile.log; done

Die vierkante haakjes zijn niet nodig, maar maken het mooier ogen als je het logfile gaat lezen. Dan ziet het er bijvoorbeeld uit:
[ wo dec 24 16:45:18 CET 2008 ] bash: hcitool: command not found
[ wo dec 24 16:45:19 CET 2008 ] bash: hcitool: command not found
[ wo dec 24 16:45:20 CET 2008 ] bash: hcitool: command not found

Kennelijk moet ik hcitool installeren. Maar je snapt wat ik bedoel ;)
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Blambo

  • Gast
Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #2 Gepost op: 2008/12/24, 17:02:32 »
SeySayux, bedankt voor je snelle reactie.

Ik ga het onmiddellijk proberen. Maar hoe stop ik deze lus?
Want je schrijft: while true; maar is dat dan geen "endless loop"?

Misschien is mijn opmerking heel dom, maar zoals eerder gezegd, ik heb echt heel weinig programmeerervaring.

Met vriendelijke groeten

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #3 Gepost op: 2008/12/24, 17:18:17 »
ctrl-c zou kunnen werken.. maar eigenlijk is dat niet zo netjes.. eigenlijk zou het misschien beter zijn dat je een iets geavanceerder scriptje schrijft met bv. een GUI met een stopknop die na elke scan controleert of er op de knop geklikt is geweest.. zoiets wil ik best wel eens voordoen.. als ik hcitool werkende krijg..
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Blambo

  • Gast
Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #4 Gepost op: 2008/12/24, 17:37:32 »
De lus werkt prima.
Het probleem is dat hij 295 x per seconde!! scant.
Dit is veel te veel en zorgt ervoor dat de logfile snel immens groot zal worden.

Is het mogelijk om hier een interval in te stellen?
Zodat bijvoorbeeld om de seconde 1 scan wordt uitgevoerd.

Het is, zoals profoX voorstelde, inderdaad misschien beter om een iets gesofisticeerder script te schrijven. Maar aangezien ik geen programmeur ben, kan ik dit zelf niet. Dus als iemand zich geroepen voelt om dit te doen, be my guest...

Zoals ik eerder had verteld, is het de bedoeling om bewegingen te kunnen monitoren. Op het terrein zouden verschillende scanners opgesteld worden, die hun informatie verzamelen in een logfile. Elke file zal dan in een database gestopt worden.
Aan de hand van de combinatie tijd, scanner en ID zal dan de gevolgde route bepaald kunnen worden.

Dus als je weet hoe dit best aangepakt wordt, mag je me altijd contacteren op bramvanlondersele (at) gmail (dot) com

Met vriendelijke groeten

Bram Van Londersele

Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #5 Gepost op: 2008/12/24, 19:22:47 »
waarschijnlijk wil je dit als daemon runnen of zoiets, nee? Dus dan hoef je niet te ctrl-c'en, en zal het ubuntu-systeem het in- en uitschakelen voor zich nemen.

dus (aangepaste versie omdat ie te snel werkt):
while true; do
    echo '[ '`date`' ] ' `hcitool scan` >> /var/log/mijnlogfile.log
    sleep 10
done

of gebruik een C++-versie: (kan later verder uitgebreid worden en werkt beter met signalling en zo). (sorry, geen voorbeeld beschikbaar, ik kom er maar niet uit hoe je de uitvoer van een programma kan rerouten)

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #6 Gepost op: 2008/12/24, 23:07:50 »
...niet het uitschakelen
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #7 Gepost op: 2008/12/25, 23:59:02 »
...niet het uitschakelen
Afaik deed init (of in Ubuntu's geval, upstart) toch ook het uitschakelen? start-stop-daemon --stop ?

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Loop scriptje programmeren voor bluetooth scanner
« Reactie #8 Gepost op: 2008/12/26, 00:25:21 »
jazeker maar dan zou je nog extra code moeten schrijven in de daemon om het proces te killen (wat opzich al niet netjes is) of (in het betere geval) deze code eveneens aanpassen zodat het een stopconditie bevat
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)