La respuesta corta es sí, es posible usar el Bluetooth sin necesidad de emparejamiento. Sin embargo, es todavía va a ser siempre un punto-a-punto. También hay problemas potenciales con la no-utilización de emparejamiento (principalmente la falta de seguridad y la falta de un buen soporte para este modo de operación). Si se puede hacer depende de su receptor de Bluetooth del hardware. Estoy asumiendo que usted está utilizando el estándar Bluetooth en lugar de Bluetooth de baja energía (que es completamente diferente y no muy bien apoyado en los teléfonos móviles). Si usted está usando de baja energía, entonces estás transmisor sería una baja de un dispositivo de energía y estás receptor sería algo que está a la escucha de los mensajes. No he usado este, así que no puedo dar ninguna información sobre esto, así que me quedo con 'normal' Bluetooth.
Como yo lo veo, hay dos problemas a superar:
Desactivar el pin de emparejamiento
Conexión automática de la iniciación
Voy a cubrir el número 2 en la primera como me da la impresión de que esto es lo que realmente estás interesado (disculpas si me estoy leyendo este equivocado). Con el fin de hacer esto desde un teléfono u otro 'maestro' del dispositivo, esto es la continua búsqueda de dispositivos Bluetooth remotos. Cuando reconoció que era aplicable, sería conectará automáticamente y enviar algunos datos o de otros que se iba a iniciar cualquier acción que se requiere. Otros han mencionado el uso del Bluetooth nombre descriptivo para este proceso y que es sin duda una manera de hacerlo. Mis experiencias de Bluetooth nombres descriptivos (especialmente, pero no exclusivamente, con la pila Bluetooth de Microsoft) es que no son tan robustos un método de escaneo. Usted probablemente iba a hacer mucho mejor utilizar el Dispositivo Bluetooth de Clase, que se emiten a la misma hora, que es el único dispositivo de dirección. Esta clase de dispositivo tiene un gran número de pre-especificado entradas para cosas como teléfonos móviles, ordenadores portátiles, ordenadores de sobremesa, etc, etc. Si utiliza uno de los no-estándar, las clases de dispositivo (por ejemplo, 00:00:00), recibirás al instante capaces de filtrar la gran mayoría de los dispositivos Bluetooth. Usted puede entonces conectarse con el resto del dispositivo y hacer algún tipo de petición-reconoce comunicación para iniciar su acción. Si usted hace esto adecuadamente oscuro (o comprobar el nombre descriptivo como una segunda consideración), debe implícitamente filtrar cualquier incorrecta de los dispositivos.
En cuanto a número 1, el pin de emparejamiento no es muy lógico si vas a crear transitoria conexiones, pero todavía puede ser la mejor manera de lograr lo que usted desea hacer. Si quieres evitar el pin de emparejamiento, se pueden encender y apagar un pareadas conexión se puede hacer. La forma de hacerlo depende del receptor Bluetooth a la aplicación, pero aquí hay algunos ejemplos:
- Bluegiga WT12: utilice el comando SET BT AUTH *
- National Semiconductor LMX9838: uso GAP_SET_SECURITY_MODE comando con el modo de seguridad 1 (sin vinculación)
etc.
Conectar el dispositivo puede hacerse sin necesidad de emparejamiento. Si el dispositivo de iniciar la conexión es la misma que la del receptor, esto es muy sencillo. Si usted está usando un PC con Windows, usted puede ir a través de la laboriosa tarea de crear un nuevo proceso de conexión y seleccione "no usar un pin", aunque Windows probablemente la va a pedir un pin cuando se conecta (0000 generalmente funciona, pero es muy escamosa). Si usted está usando python con pybluez, es muy simple:
import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))
Sin embargo, si desea conectarse desde un teléfono móvil, se vuelve mucho más complicado. El SDK de Android no parece apoyo impares conexiones:
El actual Android Bluetooth API requiere que los dispositivos emparejados
antes de que una conexión RFCOMM puede ser establecido. (Emparejamiento es
se realiza de forma automática cuando se inicia una conexión cifrada
con la Api de Bluetooth.)
(a partir de http://developer.android.com/guide/topics/connectivity/bluetooth.html). Hay maneras de evitar esto, pero son muy complicadas y no se admite también. Si usted está usando un iPhone, a continuación, conectividad Bluetooth es una lata de gusanos (licencias, etc), así que se los dejo por ahora.
Habiendo dicho todo esto, casi todas las API que he mirado permite emparejar y cómo desvincular a ser llevada a cabo (con la notable excepción de python/pybluez, pero eso es sólo una envoltura alrededor de la pila de Microsoft en Windows, así que usted puede llamar siempre a la baja de nivel de la función directamente). Así, cuando se ha detectado un dispositivo con el derecho a la clase de dispositivo, ¿por qué no se conecta automáticamente (con un predefinidos de vinculación número de pin), realizar la conexión, enviar los datos que se requiere, desconecte y vuelva a desincronizar. Nada de esto requeriría la intervención del usuario, y mientras no lo estás haciendo miles de veces (lo que potencialmente podría causar problemas con la memoria EEPROM de desgaste), no debería causar ningún problema. También le ahorrará un montón de problemas con el intento de obtener diferentes APIs para trabajar bien con lo que es percibido como un método no estándar a través de Bluetooth.