Коротка відповідь - так, можна використовувати Bluetooth без сполучення. Однак це все ще буде завжди точковим зв’язком. Існують також потенційні проблеми із невстановленням парування (в основному відсутність безпеки та відсутність належної підтримки для цього режиму роботи). Чи можна це зробити, залежить від обладнання Bluetooth вашого приймача. Я припускаю, що ви використовуєте «стандартний» Bluetooth замість низько енергетичного Bluetooth (який зовсім інший і не особливо добре підтримується в мобільних телефонах). Якщо ви використовуєте малоенергетичний, то ваш передавач буде пристроєм з низькою енергією, і ви приймач буде те, що слухає повідомлення. Я цього не використовував, тому не можу надати вам жодної інформації щодо цього, тому буду дотримуватися "звичайного" Bluetooth.
Як я бачу, необхідно вирішити два питання:
Вимкнення з'єднання контактів
Автоматичне ініціювання з'єднання
Я спочатку висвітлю номер 2, коли у мене складеться враження, що саме це вас цікавить (вибачте, якщо я читаю це неправильно). Для того, щоб зробити це з телефону чи іншого "головного" пристрою, йому доведеться постійно шукати віддалені пристрої Bluetooth. Коли він розпізнає той, що застосований, він автоматично підключиться до нього та надішле ті чи інші дані, які б ініціювали будь-які дії, які були потрібні. Інші згадали про використання цього способу Bluetooth-імені, і це, безумовно, один із способів. Мій досвід друкуючих імен Bluetooth (особливо, але не виключно зі стеком Microsoft Bluetooth) полягає в тому, що вони не є таким надійним методом сканування. Можливо, ви б набагато краще використали клас пристроїв Bluetooth, яка транслюється одночасно з унікальною адресою пристрою. Цей клас пристроїв має велику кількість попередньо заданих записів для таких речей, як мобільні телефони, ноутбуки, настільні комп'ютери тощо. Якщо ви користуєтесь одним із нестандартних класів пристроїв (наприклад, 00:00:00), миттєво зможете щоб відфільтрувати переважну більшість пристроїв Bluetooth. Потім можна підключитися до пристрою, що залишився, і зробити якесь повідомлення про підтвердження запиту, щоб ініціювати свою дію. Якщо ви зробите це належним чином незрозумілим (або перевірте дружнє ім’я в якості другого розгляду), воно має неявно відфільтрувати всі інші неправильні пристрої.
Щодо числа 1, з'єднання контактів не є особливо логічним, якщо ви створюєте тимчасові з'єднання, але це все ж може бути найкращим способом досягти того, що ви хочете зробити. Якщо ви хочете уникнути з’єднання штифтів, його можна вимкнути та встановити непорядне з'єднання. Як це зробити, залежить від реалізації Bluetooth-приймача, але ось кілька прикладів:
- Bluegiga WT12: використовуй команду SET BT AUTH *
- Національний напівпровідник LMX9838: використовуйте команду GAP_SET_SECURITY_MODE в режимі безпеки 1 (без сполучення)
тощо.
Підключення до пристрою може бути здійснено без пари. Якщо пристрій, який ініціює з'єднання, такий самий, як у приймача, це дуже просто. Якщо ви використовуєте комп'ютер під керуванням Windows, ви можете пройти кропіткий процес створення нового підключення і вибрати "не використовувати штифт", хоча Windows, ймовірно, все-таки попросить вас ввести PIN-код при підключенні (0000 зазвичай працює, але це дуже лускато). Якщо ви використовуєте python з pybluez, це дуже просто:
import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))
Якщо ви хочете підключитися з мобільного телефону, це стає набагато складніше. Здається, SDK для Android не дуже підтримує парні з'єднання:
Поточний Android Bluetooth API вимагає, щоб пристрої були з'єднані до того, як можна встановити з'єднання RFCOMM. (З'єднання пари виконується автоматично, коли ви ініціюєте зашифроване з'єднання з інтерфейсами API Bluetooth.)
(з http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Існують способи цього, але вони дуже складні і не дуже підтримувані. Якщо ви використовуєте iPhone, то Bluetooth-з'єднання - це зовсім інша банка глистів (ліцензування тощо), тому я покину це.
Сказавши все це, майже кожен API, який я коли-небудь переглядав, дозволяє поєднувати тавідключення, яке потрібно здійснити (за винятком винятків python / pybluez, але це лише обгортка навколо стека Microsoft в Windows, тому ви завжди можете безпосередньо викликати функцію низького рівня). Отже, коли ви помітили пристрій із правильним класом пристроїв, чому б не просто автоматично з'єднати пару (із заздалегідь визначеним номером шпильки для сполучення), встановити з'єднання, надіслати потрібні дані, від’єднати та відключити. Ніщо з цього не потребує втручання користувача, і поки ви цього не робите тисячі разів (що потенційно може спричинити проблеми з зносом EEPROM), це не повинно створювати вам ніяких проблем. Це також заощадить вам багато клопоту, намагаючись змусити різні API працювати добре з тим, що сприймається як нестандартний метод використання Bluetooth.