Die kurze Antwort lautet: Ja, Bluetooth kann ohne Pairing verwendet werden. Es wird jedoch immer eine Punkt-zu-Punkt-Verbindung sein. Es gibt auch potenzielle Probleme, wenn das Pairing nicht verwendet wird (hauptsächlich mangelnde Sicherheit und mangelnde Unterstützung für diesen Betriebsmodus). Ob dies möglich ist, hängt von der Bluetooth-Hardware Ihres Receivers ab. Ich gehe davon aus, dass Sie "Standard" -Bluetooth anstelle von energiesparendem Bluetooth verwenden (was völlig anders ist und bei Mobiltelefonen nicht besonders gut unterstützt wird). Wenn Sie energiesparend arbeiten, ist Ihr Sender ein energiesparendes Gerät und Ihr Empfänger lauscht auf Nachrichten. Ich habe dies nicht verwendet, daher kann ich Ihnen keine Informationen dazu geben. Deshalb bleibe ich bei "normalem" Bluetooth.
Aus meiner Sicht sind zwei Probleme zu lösen:
Pin-Paarung ausschalten
Automatischer Verbindungsaufbau
Ich werde zuerst auf Nummer 2 eingehen, da ich den Eindruck habe, dass Sie daran wirklich interessiert sind (entschuldige mich, wenn ich das falsch lese). Um dies von einem Telefon oder einem anderen „Master“ -Gerät aus zu tun, müsste es kontinuierlich nach Remote-Bluetooth-Geräten suchen. Wenn es eines erkannte, das zutreffend war, stellte es automatisch eine Verbindung zu diesem her und sendete einige Daten, die die erforderlichen Aktionen auslösten. Andere haben die Verwendung des Bluetooth-freundlichen Namens für diesen Prozess erwähnt, und das ist sicherlich eine Möglichkeit, dies zu tun. Meine Erfahrungen mit Bluetooth-freundlichen Namen (insbesondere, aber nicht ausschließlich, mit dem Microsoft Bluetooth-Stack) zeigen, dass sie keine so robuste Scanmethode sind. Du würdest es wahrscheinlich viel besser machen, das zu benutzen Bluetooth-Geräteklasse, der gleichzeitig mit der eindeutigen Geräteadresse gesendet wird. Diese Geräteklasse verfügt über eine große Anzahl vordefinierter Einträge für Mobiltelefone, Laptops, Desktops usw. usw. Wenn Sie eine der nicht standardmäßigen Geräteklassen verwenden (z. B. 00:00:00), können Sie sofort darauf zugreifen die überwiegende Mehrheit der Bluetooth-Geräte herauszufiltern. Sie können dann eine Verbindung zum verbleibenden Gerät herstellen und eine Art Anforderungsbestätigungskommunikation durchführen, um Ihre Aktion einzuleiten. Wenn Sie dies in geeigneter Weise undeutlich machen (oder den Anzeigenamen als zweites prüfen), sollte dies implizit alle verbleibenden falschen Geräte herausfiltern.
In Bezug auf Nummer 1 ist die Pin-Paarung nicht besonders logisch, wenn Sie vorübergehende Verbindungen herstellen, aber es ist immer noch der beste Weg, um das zu erreichen, was Sie tun möchten. Wenn Sie das Pin-Pairing vermeiden möchten, können Sie es deaktivieren und eine ungepaarte Verbindung herstellen. Wie Sie dies tun, hängt von der Implementierung des Bluetooth-Empfängers ab. Hier einige Beispiele:
- Bluegiga WT12: benutze den Befehl SET BT AUTH *
- National Semiconductor LMX9838: Befehl GAP_SET_SECURITY_MODE mit Sicherheitsmodus 1 verwenden (kein Pairing)
etc.
Die Verbindung zum Gerät kann dann ohne Pairing hergestellt werden. Wenn das Gerät, das die Verbindung herstellt, mit dem Empfänger identisch ist, ist dies sehr einfach. Wenn Sie einen Windows - PC verwenden, können Sie mühsam einen neuen Verbindungsprozess erstellen und "Keine PIN verwenden" auswählen, obwohl Windows Sie wahrscheinlich nach einer PIN fragen wird, wenn Sie eine Verbindung herstellen (0000 funktioniert normalerweise, aber es ist sehr schuppig). Wenn Sie mit pybluez Python verwenden, ist das ganz einfach:
import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))
Wenn Sie jedoch von einem Mobiltelefon aus eine Verbindung herstellen möchten, wird dies viel komplizierter. Das Android SDK unterstützt offenbar keine ungepaarten Verbindungen:
Die aktuellen Android-Bluetooth-APIs erfordern, dass Geräte gekoppelt werden, bevor eine RFCOMM-Verbindung hergestellt werden kann. (Das Pairing wird automatisch durchgeführt, wenn Sie eine verschlüsselte Verbindung mit den Bluetooth-APIs herstellen.)
(von http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Es gibt Möglichkeiten, dies zu umgehen, aber sie sind sehr kompliziert und werden nicht gut unterstützt. Wenn Sie ein iPhone verwenden, ist die Bluetooth-Konnektivität eine ganz andere Dose Würmer (Lizenzierung usw.).
Trotzdem erlaubt so ziemlich jede API, die ich mir jemals angesehen habe, das Pairing undUnpairing ausgeführt werden (mit Ausnahme von Python / Pybluez, aber das ist nur ein Wrapper um den Microsoft-Stack unter Windows, so dass Sie die Low-Level-Funktion immer direkt aufrufen können). Wenn Sie also ein Gerät mit der richtigen Geräteklasse gefunden haben, stellen Sie die Verbindung her, senden Sie die erforderlichen Daten, trennen Sie die Verbindung und trennen Sie die Verbindung. All dies würde keinen Benutzereingriff erfordern, und solange Sie dies nicht tausende Male tun (was möglicherweise zu Problemen mit dem EEPROM-Verschleiß führen kann), sollten Sie keine Probleme haben. Es erspart Ihnen außerdem viel Aufwand, wenn Sie versuchen, verschiedene APIs so zu konfigurieren, dass sie mit einer als nicht standardgemäß geltenden Methode zur Verwendung von Bluetooth gut funktionieren.