Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Schaltungen mit dem Raspberry Pi

Handys mit Bluetooth wiedererkennen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Lernen Sie hier, wie Sie Bluetooth-Geräte in der Nähe erkennen und sich auf diese Weise eine elektronische Stechuhr basteln.
09:16

Transkript

Das hier ist ein Bluetooth-Dongle, damit können wir dem Raspberry Pi beibringen, wie er Bluetooth zu kommunizieren, also z.B. mit bluetoothfähigen Handys in Kontakt zu treten. In diesem Projekt, da werden wir jetzt mal dem Raspberry Pi anweisen, dass er immer messen soll, ob sich ein ihm bekanntes Telefon in der Nähe befindet. Wenn das der Fall ist, dann soll ein Zähler losgehen. Und wenn das Telefon sich wieder aus der Reichweite herausbewegt, dann soll der Zähler wieder auch stoppen. Das ist so eine Art elektronische Stechuhr, die wir in der Firma verwenden können. Alles, was ich dazu brauche, ist ein Raspberry Pi und diesen Bluetooth-Dongle. Den stecke ich jetzt einfach ganz normal in einen freien USB-Port ein. Das war's auch schon hardwaremäßig. Alles Weitere schauen wir uns jetzt auf der Software-Seite an. Ja, jetzt habe ich mich hier auf dem Raspberry eingeloggt. Zunächst einmal brauchen wir ein bisschen Software. Mit sudo apt-get install installiere ich Bluetooth und bluez-utils. Das sind Software-Pakete, mit deren HIlfe ich den Bluetooth-Dongle ansprechen kann. Ich hab das hier schon mal vorbereitet, deswegen geht es so schnell. Bei Ihnen kann es durchaus eine Minute dauern, bis die gesamte Software einmalig installiert ist. Als Nächstes schaue ich mal, ob ob der Bluetoth-Dongle auch tatsächlich korrekt erkannt wird. Mit lsusb mache ich das. Sie sehen hier in der letzten Zeile, Bluetooth-Dongle wird auch tatsächlich erkannt. Das heißt, die Vorbereitungen sind alle da. In dem Moment, in dem ich Bluetooth und bluez utils installiere, wird der Service auch automatisch gestartet. Und bei jedem Reboot des Raspberrys wird dieser Service auch automatisch erneut gestartet. Ich möchte das Ganze mal überprüfen mit sudo service bluetooth status sehe ich, jawohl, bluetooth is running. Alles ist in Ordnung. Als Nächstes möchte ich jetzt mal schauen, welche Geräte denn überhaupt erreichbar sind. Mit hcitool scan scanne ich jetzt mal hier meine Umgebung. Und Sie sehen, ich habe jetzt hier zwei Fernseher oder Monitore, die erkannt werden, aber nicht mein Telefon, ich muss darauf achten, dass ich in meinem Telefon natürlich auch Bluetooth installiert habe. Wenn ich jetzt ganz schnell hintereinander hcitool scan noch einmal ausführe, dann braucht es gar nicht mehr so lange. Das liegt daran, dass hcitool das Scanergebnis einfach aus dem Zwischenspeicher holt, d.h. wir müssen da schon ein paar Sekunden, eine halbe Minute etwa warten und erst dann wird, wenn ich diesen Befehl noch einmal ausführe, auch tatsächlich das Ganze noch mal neu gescannt. Wir schauen mal, ob das schon der Fall ist. Jawohl. Jetzt wird neu gescannt. Und jetzt habe ich auch hier mein Telefon erkannt-heidewitzka. Das ist der Name meines Telefons. Und mich interessiert jetzt vor allem hier vorne dieser Bereich, diese Zahlenkombination. Die markiere ich und dann gehe auf Steuerung C. Das habe ich zwar hier auch noch mal etwas eingegeben, aber jetzt habe ich diesen Nummerncode im Zwischenspeicher, und jetzt möchte ich das Ganze mal mit sudo l2pin-c 3 anpingen. Dieses Gerät, jetzt tippe ich auf die rechte Maustaste. Und jetzt versuche ich drei Pakete an dieses Gerät zu schicken. Und da schauen wir mal, was rauskommt. Jawohl. Alle drei Pakete wurden verschickt und sich auch tatsächlich wieder zurückgekommen. Alles ist in Ordnung. Mit diesem hcitool kann ich noch vielmehr machen. Also ich könnte mir z.B. den Namen eines Gerätes anzeigen lassen, dessen Geräte-ID ich habe. Hier in dem Fall heidewitzka kenne ich ja schon, aber nur mal so der Vollständigkeit halber. Als Letztes brauchen wir jetzt noch einen Befehl, den wir immer wieder auf dem Computer automatisch ausführen wollen. Und dieser Befehl heißt rfcomm connect 0 und dann "Device" 10. Ich möchte mich jetzt mit diesem Bluetooth-Gerät, das hier angegeben ist, verbinden. Jetzt schauen wir mal, was passiert. Er sagt, die Connection wurde zurückgewiesen. Warum?-Weil ich mich natürlich mit diesem Gerät nicht gekoppelt habe. Ist auch völlig in Ordnung. Und in dem Moment, in dem eine Connection refused wurde, also zurückgewiesen wurde, ist das Gerät offensichtlich auch da. Und mir geht es ja nicht darum, mich mit dem Gerät zu verbinden, sondern ich möchte nur testen, ob das Gerät da ist oder nicht. Jetzt habe ich mal das Bluetooth auf meinem Telefon ausgeschaltet. Und jetzt möchte ich noch mal dieses rfcomm absetzen. Und Sie sehen, jetzt ist der Host down. Ich bekomme also eine andere Meldung zurück, das Telefon ist offensichtlich nicht mehr erreichbar, weil der Besitzer wahrscheinlich sich entfernt hat. Ich starte das Bluetooth noch mal bei mir auf dem Telefon. Und jetzt mache ich das Ganze noch mal von vorne. sudo rfcomm connect Es kann sein, dass das ein bisschen dauert. Weil das Gerät sich natürlich jetzt erstmal verbinden muss usw. Und jetzt sehen Sie hier wieder Connection refused Also wir werden zwar zurückgewiesen, aber das ist doch eigentlich die Meldung, die wir haben möchten. Wir haben das entsprechende Gerät in Reichweite. Was wir jetzt per Hand gemacht haben, das möchte ich natürlich, dass der Raspberry automatisch macht. Also brauche ich ein kleines Programm, starte ein Editor und dieses Programm nenne ich dann nano stechuhr.sh. Programm habe ich schon in der Zwischenablage und mit 'nem Tastenklich auf die rechte Maustaste bekomme ich den Code hier hinein. Und jetzt gehen wir mal Zeile für Zeile durch. Zunächst einmal sage ich, um welches Gerät es sich handelt. Das ist genau die Nummer von meinem Telefon namens heidewitzka. Die ist bei Ihnen natürlich entsrechend anders. Dann merke ich mir die aktuelle Uhrzeit und das aktuelle Datum. Und jetzt gehe ich in diese if else Schleife hinein. Ich frage zunächst einmal ab, bekomme ich denn von diesem Befehl rfcomm connect auf dieses Device eine Fehlermeldung namens Connection refused ja oder nein. Wenn ich diese Fehlermeldung bekomme, dann gehe ich hier in den ersten IF-Zweig hinein. Ich sage zunächst einmal "Jawohl, das Telefon ist da." Und dann hänge ich an die Datei stechuhr.txt noch das aktuelle Datum an, und die aktuelle Uhrzeit und sage, "die Person ist gekommen." Wenn ich diese Antwort Connection refused nicht erhalte, dann ist das Gerät auch offensichtlich nicht erreichbar. Dann schreibe ich hier weg und an die Datei stechuhr.txt, da gebe ich eben an, dass die Person gegangen ist. Dieses 2&1 sorgt dafür, dass die Fehlermeldung, die ich normalerweise auf der zweiten Konsole bekomme, auf die erste geschrieben wird, so dass ich mit grep drauf zugreifen kann. Das war's schon mit der ganzen Datei. Mit Steuerung o speichere ich sie ab und mit Steuerung x gehe ich hier wieder raus. Als Nächstes möchte ich mal mit touch stechuhr.txt überhaupt so eine stechuhr.txt-Datei erstmal anlegen, ohne dass da irgendwas drin ist. Wenn ich mir das Ganze jetzt anschaue, dann sehen Sie, gibt es auch die Datei stechuhr.txt, die ganz leer ist, weil ich sie gerade angelegt habe. Mit chmod 755 stechuhr.sh mache ich mein Script jetzt ausführbar. Und jetzt schauen wir mal, was passiert. Bin ich jetzt da oder nicht. Jawohl, ich bin da. Und wenn ich jetzt das Script immer wieder ausführe, dann überprüft er, ob ich immer noch da bin. Jawohl, ich bin da. Und jetzt habe ich mein Bluetooth ausgeschaltet. Führe das Script noch einmal aus und jetzt schauen wir, was jetzt rauskommt. Jawohl, weg, ich bin fortgegangen. Schauen wir uns mal an, was in der Datei stechuhr.txt enthalten ist. Da sehen Sie jetzt hier die genauen Uhrzeiten, dass ich gekommen bin, dass ich gegangen bin usw. Abschließend muss ich jetzt nur noch dafür sorgen, dass dieses Script z.B. alle fünf Minuten ausgeführt wird. Ich mache das mit einem Chront Job. Also schreibe ich chrontab-e, um die Chront-Jobs aufzumachen. Und jetzt gehe ich hier ganz runter in diese Datei. Und ich sage jetzt, alle fünf Minuten soll zu jeder Stunde an jedem Tag des Monats in jedem Monat an jedem Tag der Woche der Befehl home/pi/stechuhr.sh ausgeführt werden. Mit Steuerung o speichere ich das Ganze ab und mit Steuerung x gehe ich hier wieder raus. Und jetzt sehen Sie, wird auch eine neue chrontab installiert. Das heißt, wenn ich jetzt den Raspberry laufen lasse oder auch wenn ich ihn neu starte, da schaut er alle fünf Minuten nach, ob mein Telefon erreichbar ist oder nicht und je nach dem, was er da zurückgemeldet bekommt, speichert er das Ganze in der Datei stechuhr.txt ab.

Schaltungen mit dem Raspberry Pi

Experimentieren Sie mit dem Raspberry Pi und entdecken Sie viele sinnvolle und spielerische Anwendungen mit dem Einplatinencomputer.

1 Std. 0 min (11 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!