Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Ihr habt Probleme mit anderen Marken? Oder mit Sachen, die nicht euren Löwen betreffen? Dann ist das genau die richtige Schublade für euch.
Antworten
Benutzeravatar
vulkanus
Polizistenkuschler
Beiträge: 5939
Registriert: Mi 21.03.01 00:00
Postleitzahl: 4655
Land: Oesterreich
Wohnort: GM/OÖ

Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von vulkanus » So 18.05.08 00:14

Morgen :)

Erst Mal zum Hintergrund: Ich möchte ein Tool entwickeln, das vordefinierte Aktionen durchführt (PC starten, Licht anschalten, ...), wenn sich ein bestimmtes Handy in der Umgebung befindet.

Allerdings muss ich dazu erst Mal rausfinden, dass das Handy überhaupt in der Nähe ist. Möglich wären Bluetooth oder WLAN, wobei letzteres aufgrund des hohen Stromverbrauches relativ unpraktisch ist. Daher wäre Bluetooth interessanter. Doch wie lässt sich prüfen, ob eine Bluetooth-Adresse erreichbar ist? Gibts dazu so ne Art Ping?
Wer kann mir mit Ideen oder Tipps weiterhelfen?

MfG Andreas
KTM - Ready to repair :D

gr4vy
NOS - Junky
Beiträge: 1164
Registriert: Mo 04.07.05 19:56
Land: Deutschland
Wohnort: Maintal

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von gr4vy » Di 20.05.08 15:19

Ohne jetzt da eine konkrete Lösung für parat zu haben, mal hier meine Vorstellungen des Ganzen:
Du hast ja bei BT die Möglichkeit, Geräte miteinander zu koppeln. Ist eine solche Kopplung erstmal eingerichtet und von beiden Geräten her akzeptiert, gibt es die Möglichkeit zur automatischen Verbindungsherstellung (wie z.B. du setzt Dich ins Auto, startest, und dein Autoradio verbindet sich sofort mit deinem Handy).
Also bräuchtest Du im Prinzip eine Blackbox, welche permanent versucht, eine BT-Verbindung zu einem gekoppelten Gerät herzustellen.
Ist dies gelungen, müssten dann die Aktionen ausgelöst werden.
Aber was die Realisierung angeht stell ich mir das weitaus komplizierter vor. Ich würde vermutlich eine Linux-Kiste so einrichten, dass sie permanent versucht, mit den gekoppelten Geräten eine Verbindung aufzubauen, und bei erfolgreicher Verbindung bestimmte Aktionen (Programme) ausführt..
Linux deshalb, weil hier der BT-Stack weitaus zugänglicher ist als unter Windoof :floet:
2005: '91 205 Look, 44kW
2005 - 2006: '94 306 XR, 55kW
2006 - 2007: '01 307 HDi, 79kW
2007 - 2008: '03 206 HDi, 66kW
2008 - 2010: '00 206 S16, 99kW
04/2008 - heute: '76 Simson KR51/1, 2kW
04/2011- heute: '11 Seat Leon FR TDi, 125kW

Benutzeravatar
Chakky
Felgenfetischist
Beiträge: 2631
Registriert: Mi 02.11.05 16:18
Postleitzahl: 09113
Land: Deutschland
Wohnort: Chemnitz
Kontaktdaten:

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von Chakky » Di 20.05.08 16:12

die MAC Addy des Handys bzw des BT Controller is einzigartig (software technische veränderungen ausgeschlossen) und somit kannst du es genau identifizieren, im netz gibt es aber doch diverse proggis schon die irgendwelche bluetooth was können!
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world

Benutzeravatar
vulkanus
Polizistenkuschler
Beiträge: 5939
Registriert: Mi 21.03.01 00:00
Postleitzahl: 4655
Land: Oesterreich
Wohnort: GM/OÖ

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von vulkanus » Di 20.05.08 19:24

@gr4vy: Jup, so Pi mal Daumen dachte ich in diese Richtung. Wobei's mir ohne Koppelung sympathischer wäre. Das doofe ist bloß, dass ich nur ein klein wenig was von der Konsole verstehe und hauptsächlich in PHP entwickle. C++ und Konsorten sind mir praktisch fremd, was den Spass nicht gerade einfacher macht ;) Werd mich dann wohl oder übel mal in die Bluetooth-Utils einlesen müssen. Ne grafische Oberfläche fällt nämlich schon mal weg, das verwendete System soll schließlich schlank bleiben...

@Chakky: 1. Satzteil: Das wusste ich bereits (hab ich mal vor 13 Jahren wo gelernt :)). 2. Satzteil: Wat? Bitte etwas detaillierter und nicht auf sächsisch, damit ich verstehe was du mir sagen willst :D
KTM - Ready to repair :D

Benutzeravatar
Chakky
Felgenfetischist
Beiträge: 2631
Registriert: Mi 02.11.05 16:18
Postleitzahl: 09113
Land: Deutschland
Wohnort: Chemnitz
Kontaktdaten:

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von Chakky » Di 20.05.08 19:49

ohje sry vulkanus hab grade noch mal gelesen da fehlen ja "diverse wörter" ;)

alsooooooooooooooooooooooooooo nochmal extra für dich (und die anderen)

Im World Wide Web gibt es ja schon diverse Programme die alles mögliche können, wenn ein Bluetoothhandy in der nähe is bzw eine Kopplung stattfindet
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world

gr4vy
NOS - Junky
Beiträge: 1164
Registriert: Mo 04.07.05 19:56
Land: Deutschland
Wohnort: Maintal

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von gr4vy » Di 20.05.08 20:24

Dann denke ich mal, dass das finden des Telefons per MAC wohl am sinnigsten ist..
C++ mag ich auch nicht, ich bevorzuge Java, dass geht ähnlich schmerzfrei von der Hand wie PHP, was das coden angeht ;)

Würd dir für den Start mal folgenden Link empfehlen:
http://www.caside.lancs.ac.uk/java_bt.php
(Wobei in deinem Fall die Kommunikation ja aufhört, wenn das Handy gefunden wurde, und z.B. ein anderes Programm ausgeführt wird)

EDIT:
Ich denke mal, du kannst selbst auf das Java verzichten, das was Du möchtest, sollte mit geringstmöglichem Skriptaufwand realisiert werden.
Schau mal da: http://www.bluez.org/documentation.html
Dort gibts ne Menge HowTos, da sind auch Beispielbefehle zum Scannen nach Geräten.
2005: '91 205 Look, 44kW
2005 - 2006: '94 306 XR, 55kW
2006 - 2007: '01 307 HDi, 79kW
2007 - 2008: '03 206 HDi, 66kW
2008 - 2010: '00 206 S16, 99kW
04/2008 - heute: '76 Simson KR51/1, 2kW
04/2011- heute: '11 Seat Leon FR TDi, 125kW

Benutzeravatar
vulkanus
Polizistenkuschler
Beiträge: 5939
Registriert: Mi 21.03.01 00:00
Postleitzahl: 4655
Land: Oesterreich
Wohnort: GM/OÖ

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von vulkanus » Di 20.05.08 20:44

Uff, das sieht nach ner Menge Lesestoff aus... Aber mit so ner Unterstützung kann ja kaum noch was schief gehen ;)
Das verschiebe ich aber mal auf die kommenden Tage, denn für heute steht erst mal die (fast) neue Ubuntu-Release beschnuppern an. Die soll auf nen USB-Stick, damit ich zumindest ein vernünftiges System in der Tasche hab, wenn wir im Büro schon nur Windows haben *g*
KTM - Ready to repair :D

gr4vy
NOS - Junky
Beiträge: 1164
Registriert: Mo 04.07.05 19:56
Land: Deutschland
Wohnort: Maintal

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von gr4vy » Di 20.05.08 20:55

Wenn du ein minimales System haben möchtest, kann ich dir die Ubuntu Server Edition empfehlen, die bietet nen ziemlich guten Kompromiss zwischen Bedienbarkeit und Schlankheit..
Macht sich auch ganz gut für Minimalrechner ohne Festplatte mit Betriebssystem z.B. auf CompactFlashDisk und sonst RamDisk ;)

So wie ich das sehe ist die Bluetooth-Software BlueZ auch bei der Ubuntu Distri dabei, also im Prinzip Ubuntu incl. BlueZ installieren -> Bluetooth-Dongle einstecken -> BlueZ benutzen -> freuen ;)
Und halt ggf. ein kleines Script installieren...

Viel Spaß beim basteln!
2005: '91 205 Look, 44kW
2005 - 2006: '94 306 XR, 55kW
2006 - 2007: '01 307 HDi, 79kW
2007 - 2008: '03 206 HDi, 66kW
2008 - 2010: '00 206 S16, 99kW
04/2008 - heute: '76 Simson KR51/1, 2kW
04/2011- heute: '11 Seat Leon FR TDi, 125kW

Benutzeravatar
vulkanus
Polizistenkuschler
Beiträge: 5939
Registriert: Mi 21.03.01 00:00
Postleitzahl: 4655
Land: Oesterreich
Wohnort: GM/OÖ

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von vulkanus » Di 20.05.08 21:17

Die Howtos auf der bluez.org-Seite sind echt hilfreich. Gleich in der ersten deutschen Howto wird das hcitool erwähnt, auf das ich auch selber kommen können hätte, weils mir ohnehin schon öfter unter die Finger kam.
Genauer ist dann der Befehl hcitool name [Remote-Address] interessant, der entweder den Namen des Gerätes oder eben nichts zurückgibt. Sowas lässt sich dann schön simpel auswerten - da freut sich das lernfaule PHP-Entwicklerherz *g*

Was Ubuntu betrifft: Ich möchte nur mal wieder wissen, was man in der Debian-basierten Ecke so bastelt. Denn eigentlich komme ich aus der RedHat-Ecke (CentOS bzw. Fedora). Auf nen USB-Stick solls deshalb, weil ich damit schon weiterplane und Erfahrungen für eine eventuelle Weiternutzung bei uns in der Firma sammeln möchte. So ala "tschau bis morgen, wenns was wichtiges gibt hab ich mein Büro eh dabei".
Was die ganzen Flash-Lösungen betrifft: Daheim nutze ich eine Hama-SSD als einzigen Datenträger in meinem System. Und obwohl das System kaum gedämmt ist ists ein fast lautloses System (der lauteste Kühler hat ne Angabe von 18 dB(A)). So lob ich mir das, da macht dann auch das Arbeiten Spass :)
KTM - Ready to repair :D

ProgLocker
Strafzettelsammler
Beiträge: 466
Registriert: Do 10.06.04 03:33
Land: Deutschland
Wohnort: Berlin/Mitte
Kontaktdaten:

Re: Wie prüfen, ob ein bestimmtes Handy in der Nähe ist?

Beitrag von ProgLocker » Mi 21.05.08 10:39

Hi,


stichwort proximity.
Habe hier mal nen script das auch gan gut funktioniert. war eigentlich mal dazu gedacht den rechner zu sperren etc. aber kannst auch andere kommandos angeben ...

Code: Alles auswählen

#!/bin/sh

DEVICE="MAC ADRESSE VOM BT DEVICE HIER REIN"
CHECK_INTERVAL=2
THRESHOLD=-20
PID=0
START_CMD='/usr/bin/xscreensaver -nosplash'
FAR_CMD='/usr/bin/xscreensaver-command -activate'
NEAR_CMD='/bin/killall xscreensaver'
HCITOOL="/usr/bin/hcitool"
DEBUG="/var/log/btproximity.log"

connected=0

function msg {
    echo "$1" >> $DEBUG
}

function check_connection {
    connected=0;
    found=0
    for s in `$HCITOOL con`; do
        if [[ "$s" == "$DEVICE" ]]; then
            found=1;
        fi
    done
    if [[ $found == 1 ]]; then
        connected=1;
    else
       msg 'Attempting connection...'
        if [ -z "`$HCITOOL cc $DEVICE 2>&1`" ]; then
            msg 'Connected.'
            connected=1;
        else
            msg "ERROR: Could not connect to device $DEVICE."
        fi
    fi
}

function check_xscreensaver {
    PID=`ps -C xscreensaver --no-heading | awk '{ print $1 }'`
    if [ "$PID" == "" ];  then
        $START_CMD &
    fi
}

check_connection

while [[ $connected -eq 0 ]]; do
    check_connection
done

name=`$HCITOOL name $DEVICE`
msg "Monitoring proximity of \"$name\" [$DEVICE]";

state="near"
while /bin/true; do

#    check_xscreensaver
    check_connection

    if [[ $connected -eq 1 ]]; then
        rssi=`$HCITOOL rssi $DEVICE | sed -e 's/RSSI return value: //g'`

        if (( $rssi <= $THRESHOLD )); then
            if [[ "$state" == "near" ]]; then
                msg "*** Device \"$name\" [$DEVICE] has left proximity"
                state="far"
                $FAR_CMD > /dev/null 2>&1
            fi
        else
            if [[ "$state" == "far" ]]; then
                msg "*** Device \"$name\" [$DEVICE] is within proximity"
                state="near"
                $NEAR_CMD > /dev/null 2>&1
                $START_CMD &
            fi
        fi
        msg "state = $state, RSSI = $rssi, PID = $PID"
    fi

    sleep $CHECK_INTERVAL
done

Antworten