Идентификатор устройства не получил Bluetooth

Обновлено: 06.07.2024

Устройства третьего поколения (Argon, Boron, Xenon) поддерживают Bluetooth. Bluetooth используется для настройки вашего устройства из мобильных приложений Particle для iOS и Android, а Bluetooth LE (BLE) может использоваться в вашей прошивке для связи с другими устройствами, поддерживающими BLE.

Устройства частиц поддерживают как периферийные, так и центральные роли:

  • Периферийные устройства, как правило, представляют собой маломощные устройства, такие как датчики сердечного ритма, весы, термометры, бесконтактные метки и т. д. Когда ваше устройство Particle настроено как периферийное устройство, оно может быть подключено к датчику и предоставлять эту информацию мобильное приложение. Его также можно запрограммировать как iBeacon, чтобы приложения iOS знали, что они находятся рядом с определенным маяком.
  • Центральные устройства – это такие устройства, как мобильные телефоны и планшеты, которые взаимодействуют с периферийными устройствами. Компьютеры с поддержкой BLE также могут быть центральными устройствами. Когда ваше устройство Particle настроено как центральное устройство, оно может собирать данные с датчика, например датчика частоты сердечных сокращений, и загружать их в облако по Wi-Fi или сотовой связи вместо приложения для мобильного телефона.

BLE предназначен для приложений датчиков с низкой скоростью передачи данных. Устройства Particle не поддерживают Bluetooth A2DP и ​​не могут использоваться с Bluetooth-гарнитурами, динамиками и другими аудиоустройствами. Устройства Particle не поддерживают сетку Bluetooth 5.

Протокол BLE может использовать встроенный чип или трассировочную антенну или внешнюю антенну, если она установлена ​​и настроена.

Для SoM серии B (система-на-модуле) требуется внешняя антенна BLE/Mesh, подключенная к разъему BT. SoM не имеют встроенных антенн.

Хорошее введение в BLE можно найти в руководстве Adafruit.

BLE поддерживается в ОС устройства 1.3.1 и более поздних версиях. Поддержка BLE находилась в стадии бета-тестирования в Device OS 1.3.0. Он недоступен в более ранних версиях ОС устройства. Дополнительные функции были добавлены в Device OS 3.0 и 3.1.

Вход

Вы можете напрямую взаимодействовать со своим устройством с этой обучающей страницы, войдя в свою учетную запись Particle в поле ниже. Это необязательно, так как вы можете напрямую использовать Particle Workbench или Web IDE и другие методы, если хотите.

Вы вошли в Particle как выход

Войдите в свою учетную запись Particle, чтобы взаимодействовать со своими устройствами

Вход вручную (без единого входа)

Войти вручную (без единого входа)


Войти, используя: токен доступа с именем пользователя и паролем
Имя пользователя (электронная почта):
Пароль:
Токен доступа:
Войти

Не удалось войти. Повторите попытку.

Основные концепции

Реклама

Реклама — это процесс, посредством которого периферийное устройство BLE периодически транслирует информацию. Это служит двум целям:

  • Это позволяет центральному устройству BLE (например, мобильному приложению) обнаруживать периферийное устройство.
  • Периферийное устройство может вести непрерывную трансляцию в качестве маяка.

Рекламодатель BLE не требует никакой аутентификации между периферийным устройством и мобильным приложением — рекламодатель просто непрерывно выводит данные на небольшом расстоянии, обычно около 10 метров. Мобильное приложение может искать эти данные и реагировать на них.

Например, маяк, встроенный в витрину магазина, может позволить приложению магазина предоставлять дополнительную информацию о товаре, предоставлять купон или настраивать карту магазина.

Интервал для рекламы варьируется от 20 миллисекунд до 10,24 секунды, хотя добавляется случайная дополнительная задержка от 0 до 10 миллисекунд. Это предотвращает зависание двух устройств с одинаковым рекламным интервалом при передаче в одно и то же время навсегда и, возможно, создание помех друг другу.

Нормальный интервал быстрой рекламы составляет от 100 до 500 миллисекунд. Для устройств, для которых задержка не важна и требуется снизить энергопотребление, она может составлять от 1 до 2 секунд. Из-за перегрузки радио и случайной потери пакетов может потребоваться более одной рекламной трансляции, прежде чем сообщение будет получено.

Небольшие рекламные данные (31 байт, BLE_MAX_ADV_DATA_LEN ). Существует несколько стандартных типов, или вы можете использовать определенный поставщиком тип (0xff) для отправки любых произвольных данных в рекламной полезной нагрузке.

Стандартные параметры данных о полезной нагрузке рекламы включают:

  • Тип: основные функции, поддерживаемые периферийным устройством.
  • Местное имя: описательное имя для вашего периферийного устройства.
  • UUID службы: UUID, поддерживаемые вашим периферийным устройством.
  • Пользовательские данные: например, данные маяка для iBeacon

Хотя центральные устройства не рекламируют, они могут сканировать устройства в пределах досягаемости и использовать свои рекламные данные, чтобы определить, к чему подключаться. Например, центральный датчик частоты сердечных сокращений находит первый датчик частоты сердечных сокращений в пределах досягаемости и автоматически подключается к нему.

Ответ сканирования

Помимо 31 байта рекламных данных, устройство, выполняющее сканирование, может запросить данные ответа на сканирование. Это не требует аутентификации и не требует установления соединения. Данные ответа на сканирование — это дополнительные 31 байт данных, которые периферийное устройство может вернуть сканирующему устройству, хотя для запроса и получения этих данных требуется дополнительный набор пакетов к периферийному устройству и от него.

Услуги

Сервисы — это наборы характеристик (грубо говоря, значений). Здесь перечислены определенные услуги. Например, служба сердечного ритма включает характеристику измерения сердечного ритма, приведенную ниже.

Сервис Heart Rate имеет только одну характеристику (набор значений), но некоторые службы включают несколько характеристик.

Устройство может поддерживать несколько служб. Например, большинство пульсометров включают в себя как службу измерения сердечного ритма, так и службу батареи.

Центральные устройства BLE, такие как мобильные телефоны, могут находить известные сервисы и характеристики и отображать данные, не имея сведений о производителе, поскольку данные стандартизированы.

Также можно создавать собственные службы для собственного приложения.

Характеристики

Характеристики хранят значение или набор значений в службе. В некоторых случаях служба поддерживает несколько характеристик.

В других случаях, таких как характеристика измерения сердечного ритма, характеристика содержит флаги, значение и, в некоторых случаях, дополнительные значения. Разница заключается в том, что датчик сердечного ритма всегда будет отправлять данные о количестве ударов в минуту, но если он также рассчитывает затраченную энергию, он будет публиковать все значения одновременно в одной транзакции.

Для назначенных характеристик данные будут в формате, определенном Bluetooth SIG. Они перечислены здесь. Вы также можете создавать собственные характеристики, которым вы сами назначаете идентификатор (длинный UUID).

Характеристике также присваивается короткое имя. Это также можно использовать для его получения, однако имена не стандартизированы, поэтому обычно лучше получать характеристику по UUID.

Максимальный размер характеристики будет зависеть от обоих устройств. Например, разные телефоны могут иметь разные лимиты.

При отправке между двумя устройствами Particle Gen 3 с настройками по умолчанию максимальная характеристика, которую можно отправить, составляет 244 байта. Если вы попытаетесь отправить характеристику большего размера, будут отправлены только первые 244 байта.

< td>222 байт/сек. < tr>
Размер характеристики Максимальная скорость передачи данных
20 байт
100 байт 1100 байт/сек.
200 байт 2210 байт/сек.
236 байт 2186 байт/сек.
237 байт 1753 байт/сек.
244 байта 1793 байт/сек

Обратите внимание, однако, что наиболее эффективный размер – не более 236 байт. Выше этого размера происходит фрагментация, которая снижает скорость передачи. Максимальный эффективный размер может незначительно отличаться в зависимости от других факторов.

Вы можете повысить производительность, изменив настройки PPCP, уменьшив значение интервала. Возможна передача со скоростью 52 Кбит/с. с измененными настройками.

Периферийные характеристики

В роли периферийного устройства BLE каждая служба имеет одну или несколько характеристик. Каждая характеристика может иметь одно или несколько значений.

Например, при внедрении периферийного устройства Health Thermometer вы можете использовать следующие сервисы и характеристики:

В этом случае есть две службы: термометр здоровья (0x1809) и уровень заряда батареи (0x180f). Каждая услуга имеет одну характеристику.

Для службы термометра здоровья рекламируется только одна характеристика — характеристика измерения температуры (0x2a1c). Несколько слов об этой характеристике:

  • Его краткое название "temp" (температура).
  • Это характеристика NOTIFY — периферийное устройство периодически отправляет значение
  • Он имеет UUID 0x2A1C
  • Это часть службы термометров здоровья.

Еще один вариант использования похож на пример периферийного устройства UART:

В этом случае все UUID являются проприетарными. Однако они были созданы командой Nordic Semiconductor для примера UART, и теперь они широко используются для сервисов, подобных UART. Например, аппаратное обеспечение и мобильные приложения Adafruit Bluefruit поддерживают это.

TxCharacteristic очень похож на пример монитора работоспособности, за исключением того, что UUID — это просто переменные const char *, а не значения BleUid. Это вариант, однако вам нужно выбрать один стиль, поскольку UUID характеристики и службы должны быть одного типа.

У rxCharacteristic есть еще несколько параметров. Это связано с тем, что данные принимаются периферийным устройством с этой характеристикой.

  • BleCharacteristicProperty::WRITE_WO_RSP означает, что значение периферии записывается без подтверждения.
  • onDataReceived Функция, которая вызывается при получении данных.
  • Указатель контекста NULL. Если ваш обработчик полученных данных является частью класса C++, это хорошее место для размещения указателя экземпляра класса ( this ).

Обработчик полученных данных имеет следующий прототип:

Основные характеристики

В центральной роли BLE (ведущей себя как телефон) у вас обычно есть обработчик приема, который будет уведомлен, когда периферийное устройство обновляет значение каждой интересующей вас характеристики.

Объявление переменных для основных характеристик обычно означает просто назначение глобальной переменной для хранения значения.

При настройке вы подключаете обработчик полученных данных к своей характеристике, чтобы получать уведомления, когда эта характеристика получена от однорангового узла BLE:

Параметр NULL здесь является контекстом, необязательным значением указателя. Если вы реализуете обработчик onDataReceive в классе C++, контекст является хорошим местом для размещения "this" (указатель экземпляра класса).

И наконец, обработчик onDataReceived выглядит так:

В характеристике измерения пульса:

В другом сценарии вы отправляете данные с центрального узла на периферийные устройства. В этом примере центральный блок может подключаться к нескольким периферийным устройствам, поэтому ему необходимо хранить отдельные характеристики для каждого периферийного устройства:

Дополнительную информацию о характеристиках можно найти в учебнике по характеристикам Nordic Semiconductor BLE.

Определения характеристик

Если вас не интересует расшифровка произвольных характеристик, вы можете пропустить этот раздел.

В таблице характеристик при нажатии на название появляется определение характеристики. Его немного сложно читать (это XML), но в этом примере вы можете найти некоторые полезные факты о характеристике измерения сердечного ритма:

Есть еще несколько флагов, о которых мы сейчас не будем беспокоиться.

  • Если BPM 16-битный, вместо этого используется это:
  • Помещаем это в код, получая данные о частоте сердечных сокращений от датчика частоты сердечных сокращений BLE:

Периферийная роль

Использование устройства Particle в качестве периферийного устройства позволяет выполнять следующие действия:

  • Стать маяком, который можно найти с помощью мобильного приложения.
  • Быть датчиком, значение которого может считывать мобильное приложение.
  • Общение с мобильным приложением

Существует также особый случай периферийной роли: вещательная компания только рекламирует и не принимает никаких подключений.

Находясь в роли периферийного устройства, периферийное устройство может рекламировать любое количество устройств, но одновременно может принимать соединения только от одного. Устройство также может быть только периферийным или центральным, но не тем и другим одновременно.

Реклама (периферия)

Реклама — это процесс, посредством которого периферийное устройство BLE периодически транслирует информацию. Это служит двум целям:

Минимум, который обычно требуется указать, — это UUID служб, чтобы ваше устройство можно было обнаружить. Например, в примере периферийного устройства UART используется следующий код:

Если периферийное устройство не подключено к центральному устройству, оно будет постоянно сообщать о том, что оно поддерживает службу UART.

Еще один более сложный пример — пример периферийного устройства Health Thermometer:

Хотя вы не генерируете рекламные данные в централизованном режиме, вы часто используете их во время сканирования, как описано в разделе ниже

Дополнительную информацию о рекламе и маяках можно найти в учебнике по рекламе Argenox BLE.

iBeacon

Одним из особых типов маяков является iBeacon Apple iOS.

Важны три параметра:

Поле Размер Описание
UUID 16 байт Разработчики приложений должны определить UUID, специфичный для своего приложения и варианта использования развертывания.
Major 2 байта Далее указывает конкретный iBeacon и вариант использования. Например, это может определить субрегион внутри более крупного региона, определяемого UUID.
Второстепенный 2 байта Позволяет дальнейшее подразделение региона или варианта использования, указанного разработчиком приложения.

Другими словами, вы назначите один UUID для всех маяков в вашем парке маяков и определите, какой из них вы используете, используя основные и второстепенные значения. При поиске iBeacon вам необходимо знать UUID искомого маяка, чтобы не назначать слишком много.

Перенесите этот код на устройство третьего поколения:

Включить режим iBeacon очень просто, всего несколько строк в setup().

Вы определяете основной и дополнительный код для своего конкретного приложения и генерируете любой случайный UUID.

Существует ряд приложений для поиска iBeacon для iOS. Я успешно использовал Locate Beacon. Примечание. Вы должны ввести UUID приложения, которое хотите найти; он не может произвольно найти какой-либо iBeacon в пределах досягаемости.

Центральная роль

Использование устройства Particle в центральной роли позволяет выполнять следующие действия:

  • Определять, когда маяки BLE находятся поблизости
  • Чтение данных с датчиков BLE

Существует также особый случай центральной роли: наблюдатель только ищет рекламодателей и не устанавливает никаких связей.

Вы можете подключиться не более чем к трем устройствам одновременно. (В Device OS 1.3.0 вы можете подключаться только к одному устройству.)

Сопряжение

  • ОС устройства 3.1.0 и более поздние версии: поддержка безопасного сопряжения Bluetooth LE ("сопряжение LESC"). При этом используется режим числового сравнения и шифрование Диффи-Хеллмана на эллиптических кривых (ECDH).
  • Device OS 3.0.0 и более поздние версии: поддержка режимов отображения или ввода кода доступа "Legacy Pairing" (как центрального, так и периферийного).
  • До Device OS 3.0.0: нет поддержки безопасного сопряжения.
  • Внеполосная аутентификация (например, с помощью NFC) не встроена.

При сопряжении происходят две разные вещи:

  • Шифрование гарантирует, что центральные и периферийные устройства могут безопасно обмениваться данными.
  • Аутентификация гарантирует, что обе стороны являются теми, за кого себя выдают. Обычно для этого требуется дисплей и клавиатура или клавишная панель, поэтому 6-значный пароль, который вы сможете получить только с устройств, сидящих перед вами. Он предотвращает атаки типа «человек посередине» («MITM»), когда мошенническое устройство выдает себя за другое, поэтому вы подключаетесь не к тому устройству. Аутентификация необязательна.

Шифрование без аутентификации разрешено и называется режимом "просто работает". Шифрование по-прежнему работает.

При использовании традиционного сопряжения инициатор (обычно центральное устройство) и получатель (периферийное устройство) имеют пять различных возможностей:

  • Нет ввода, нет вывода: на этой стороне нет ни дисплея, ни клавиатуры. Это всегда будет приводить к подключению без проверки подлинности, если оно верно для любой из сторон, так как нет возможности подтвердить ключ доступа, однако шифрование по-прежнему работает.
  • Только дисплей: на этой стороне есть дисплей, на котором может отображаться 6-значный пароль.
  • Отображение "да-нет": на этой стороне есть дисплей, на котором может отображаться 6-значный ключ доступа, и кнопки для подтверждения выбора "да-нет".
  • Только клавиатура: на этой стороне есть клавиатура (цифровая клавиатура, сенсорный экран и т. д.) для ввода пароля, но нет дисплея.
  • Дисплей с клавиатурой: на этой стороне есть и клавиатура, и дисплей.

Например, если на одной стороне есть дисплей, а на другой — клавиатура, подключение может быть аутентифицировано, поскольку пароль можно считать с дисплея на одной стороне и ввести на клавиатуре на другой. Дисплей и клавиатура могут располагаться с любой стороны (центральная или периферийная).

Функция «Отображать да-нет» в основном полезна при сопряжении LESC, которое поддерживается только в Device OS 3.1 и более поздних версиях. В режиме LESC Pairing «Да-Нет» обеим сторонам нужен дисплей, а одной стороне требуется выбор кнопки «Да-Нет», чтобы подтвердить, что на обоих дисплеях отображается один и тот же номер. Клавиатура не требуется.

Обычно вы используете BLE.setPairingIoCaps, поэтому укажите, какие функции есть на вашем устройстве (экран, клавиатура и т. д.).

Если вы являетесь инициатором (обычно это центральное устройство, но не обязательно), вы запускаете процесс сопряжения с помощью BLE.startPairing() после подключения к узлу BLE.

Многие операции BLE являются асинхронными, и вам, вероятно, потребуется реализовать обработчик событий сопряжения, независимо от того, являетесь ли вы центральным или периферийным устройством. Это делается с помощью метода BLE.onPairingEvent().

События связывания происходят после того, как вы подключились к другому устройству (из центрального режима) или были подключены к (если вы являетесь периферийным устройством).

Если у вас есть дисплей, а на другой стороне есть клавиатура, обратный вызов события сопряжения может получить событие BlePairingEventType::PASSKEY_DISPLAY с ключом доступа для размещения на вашем дисплее. Ключ доступа определяется другой стороной.

Если у вас есть клавиатура, а на другой стороне есть дисплей, вас могут попросить предложить пользователю ввести ключ доступа с помощью события BlePairingEventType::PASSKEY_INPUT. После ввода пароля вы вызываете BLE.setPairingPasskey(), чтобы сообщить другой стороне, какой пароль был введен.

Наконец, вы можете использовать либо сообщения о статусе сопряжения, либо такие функции, как BLE.isPaired(), чтобы проверить, завершено ли сопряжение.

Примеры

Термометр тела

В этом руководстве я использую мобильное приложение nRF Toolbox от Nordic Semiconductor. Это бесплатно и доступно для iOS и Android. Он может работать с рядом стандартных датчиков BLE, что делает его идеальным для этого руководства.

Подключение по Bluetooth позволяет использовать сторонние устройства, такие как беспроводные наушники, наушники, динамики, автомобильные комплекты, игровые контроллеры и многое другое с iPhone.

Примечание. iPhone должен находиться на расстоянии не более 10 метров от устройства Bluetooth.

Создание пары с наушниками, автомобильным комплектом, игровым контроллером или другими устройствами Bluetooth

Следуйте инструкции, устанавливаемой к устройству, чтобы перевести устройство в режим обнаружения.

Примечание. С увеличением Siri Eyes Free (поддерживается в некоторых автомобилях) можно с помощью голосовых команд управлять функциями iPhone, не смотря на него и не касаясь его. Для создания пары между iPhone и присутствием автомобиля використовуйте Bluetooth (при необходимости следить за присутствием в организме человека). Чтобы включить Siri, нажмите и удерживайте кнопку голосовых команд по правилу, пока не прозвучит сигнал Siri. Затем придумали запрос.

Настройка беспроводного игрового контроллера

После создания пары с восстановлением игрового контроллера Вы можете установить для необходимых игр из Apple Arcade и App Store.

Коснитесь точек, которые требуется изменить.

Для настройки их для определенных приложений коснитесь кнопки приложения приложения.

Примечание. Доступность Apple Arcade зависит от страны или региона.

Воспроизведение аудио с iPhone на аудиоустройстве Bluetooth

Коснитесь , выберите устройство Bluetooth.

Во время аудиоустройства можно изменить место отображения на блокировке дисплея или в Пункте управления.

Бегунок обнаружения обнаруживается на iPhone, если устройство больше не находится в зоне действия Bluetooth.

Для приема информации о защите слуха от громкого звука при прослушивании через наушники с iPhone см. Использование разделов уровня звукового воздействия на iPhone.

ПРЕДУПРЕЖДЕНИЕ. Важная информация о предупреждении потери слуха и предупреждение о потере внимания, которая может показаться потенциально опасной ситуацией, см. в разделе Важная информация о безопасности для iPhone.

Обход устройства Bluetooth для вызовов

Чтобы использовать приемник или динамик iPhone для телефонных вызовов, выполните любое из описанных ниже действий.

Ответьте на вызов, коснувшись экрана iPhone.

Отключите устройство Bluetooth, разорвите пару с ним или переместите его за пределы зоны действия.

Разрыв пары c подключением Bluetooth

Если список устройств не откроется, убедитесь, что связь Bluetooth включена.

Отключение от устройств Bluetooth

Чтобы быстро пройти через все устройства Bluetooth, не отключая Bluetooth, пункты управления пунктами и коснитесь кнопок .

Подробнее о выполнении конфиденциальности Bluetooth на iPhone см. в статье службы поддержки Apple App Если запрашивается доступ к Bluetooth вашего устройства. В случае возникновения проблем с подключением к устройству Bluetooth обратитесь к статье службы поддержки Apple Если нет возможности подключить аксессуар Bluetooth к iPhone, iPad или iPod touch.

Примечание. Использование некоторых устройств с iPhone может повлиять на производительность беспроводной связи. Не все аксессуары iOS полностью раскрываются с iPhone. Включение авиарежима может передавать аудиопомехи между iPhone и аксессуарами. Изменение ориентации или местоположения iPhone и доступного аксессуара может повысить качество беспроводной связи.

Вы можете настроить встроенный электронный ключ телефона для безопасного входа на устройствах с текущими версиями Chrome OS, iOS, macOS и Windows. Это поможет защитить ваш аккаунт от хакеров, даже если они украдут такую ​​информацию, как пароль.

При попытке войти в ваш аккаунт Google может проверить, есть ли сигнал Bluetooth между этим устройством и встроенным электронным ключом вашего телефона. Эта проверка Bluetooth гарантирует Google, что вы и ваш телефон физически присутствуете и что попытка входа не исходит от кого-то еще из другого места.

Настройте встроенный электронный ключ телефона

Чтобы настроить встроенный электронный ключ, вам понадобится телефон Android 7.0+. Узнайте, как проверить и обновить версию Android.

Если ваш телефон соответствует требованиям, Google будет автоматически использовать встроенный электронный ключ вашего телефона для дополнительной защиты при входе на новые устройства.

Важно! В вашем аккаунте может быть только один встроенный электронный ключ. Если у вас есть более одного подходящего телефона, вам нужно выбрать один. Вы можете переключиться на другой подходящий телефон в любое время.

    и выберите второй шаг проверки.
    • Если вы уже используете двухэтапную аутентификацию, перейдите к следующему шагу.
  1. На телефоне Android перейдите на страницу myaccount.google.com/security.
  2. В разделе "Вход в Google" выберите "Двухэтапная аутентификация". Возможно, вам потребуется войти в систему.
  3. Прокрутите до пункта "Настроить альтернативный второй шаг" и нажмите "Добавить электронный ключ".
  4. Выберите свой телефон Android Добавить. Вы должны увидеть подтверждение того, что ваш телефон был добавлен в качестве электронного ключа.

Используйте встроенный ключ телефона для входа на новые устройства

  1. Убедитесь, что Bluetooth включен на обоих устройствах.
  2. Войти на новом устройстве:
    • На компьютере или Chromebook войдите в свой аккаунт Google с помощью поддерживаемого браузера, например Chrome.
    • На iPhone или iPad войдите в свой аккаунт Google с помощью приложения Smart Lock.
  3. Проверьте свой телефон Android на наличие уведомлений.
  4. Дважды коснитесь "Вы пытаетесь войти?" уведомление.
  5. Следуйте инструкциям, чтобы подтвердить вход в систему.

Отправить отзыв о встроенном электронном ключе вашего телефона

Поделитесь своим опытом и мнением, чтобы помочь Google сделать этот продукт лучше для вас и других.

ОТПРАВИТЬ ОТЗЫВ

Исправить проблемы

Чтобы встроенный электронный ключ вашего телефона Android работал, он должен находиться рядом с устройством, на котором вы пытаетесь войти. Попробуйте положить телефон Android и устройство, на котором вы пытаетесь войти, рядом друг с другом.

  • Ваш телефон Android
  • Устройство, на котором вы пытаетесь войти

Для правильной работы Bluetooth включите настройки местоположения на телефоне Android. После входа в систему вы можете отключить настройки местоположения.

  • Телефон с Android 7.0 или более поздней версии. Узнайте, как проверить и обновить версию Android.
  • Компьютер с:
    • Bluetooth
    • Последняя версия совместимого браузера, например Chrome.
    • Последняя версия совместимой операционной системы, например Chrome OS, Mac OS или Windows.
    • Телефон с Android 7.0 или более поздней версии. Узнайте, как проверить и обновить версию Android.
    • iPhone или iPad с:
      • iOS версии 10.0 или выше
      • Bluetooth
      • Установлена ​​последняя версия приложения Smart Lock.

      При попытке войти с помощью встроенного электронного ключа телефона может появиться сообщение "Включите Bluetooth, чтобы разрешить сопряжение". Уведомление может отображаться, даже если вы включили Bluetooth и на телефоне, и на устройстве с Windows 10. .

      Чтобы разрешить встроенному электронному ключу вашего телефона подключаться к вашему устройству с Windows 10:

      1. Откройте Windows 10: НастройкиPrivacyRadios.
      2. Включите параметр "Разрешить приложениям управлять радиоустройствами устройств".
        с вашим именем пользователя и паролем.
      1. Выберите "Отмена". Попробуйте другой способ.
      2. Выберите метод подтверждения, который вы будете использовать для входа.
      3. Чтобы завершить вход, следуйте инструкциям на экране.

      Получите еще более надежную защиту

      Всем, кто подвергается повышенному риску целенаправленных атак, например ИТ-администраторам, бизнес-лидерам, журналистам или участникам политических кампаний, мы рекомендуем зарегистрироваться в программе Дополнительной защиты. Эта программа бесплатно обеспечивает высочайший уровень защиты вашего аккаунта Google.

      Важно! Chrome прекратит поддержку приложений Chrome на всех платформах. Браузер Chrome и Интернет-магазин Chrome по-прежнему будут поддерживать расширения. Прочтите объявление и узнайте больше о переносе приложения.

      В этом документе описывается, как использовать API Bluetooth, Bluetooth Socket и Bluetooth Low Energy для связи с устройствами Bluetooth и Bluetooth Low Energy.

      Дополнительную информацию о Bluetooth см. в официальных спецификациях Bluetooth.

      Примечание. В Chrome 56 пользователи могут выбирать близлежащие устройства Bluetooth с низким энергопотреблением для подключения к веб-сайтам, использующим Web Bluetooth API.

      Для приложений Chrome, использующих Bluetooth, добавьте запись Bluetooth в манифест и укажите, при необходимости, UUID профилей, протоколов или служб, которые вы хотите реализовать, а также хотите ли вы реализовать их с помощью сокета и/или низкого уровня. Энергетические API.

      Например, для реализации сокета:

      И для реализации с низким энергопотреблением:

      Чтобы получить доступ только к состоянию адаптера, обнаружить близлежащие устройства и получить основную информацию об устройствах, требуется только сама запись:

      Чтобы получить состояние адаптера Bluetooth, используйте метод bluetooth.getAdapterState:

      Событие bluetooth.onAdapterStateChanged отправляется при каждом изменении состояния адаптера. Это можно использовать, например, для определения включения или выключения радиоадаптера.

      Чтобы получить список устройств, известных адаптеру Bluetooth, используйте метод bluetooth.getDevices:

      Все устройства возвращаются, включая сопряженные устройства и недавно обнаруженные устройства. Обнаружение новых устройств не начнется (см. раздел Обнаружение ближайших устройств).

      Блютуз.Событие onDeviceAdded отправляется всякий раз, когда устройство обнаруживается адаптером или подключается к адаптеру:

      Добавление прослушивателя для этого события не запускает обнаружение устройств (см. Обнаружение ближайших устройств).

      Об изменениях в устройствах, в том числе о сопряжении ранее обнаруженных устройств, сообщает событие bluetooth.onDeviceChanged:

      Наконец, событие bluetooth.onDeviceRemoved отправляется всякий раз, когда сопряженное устройство удаляется из системы или обнаруженное устройство в последнее время не было замечено:

      Чтобы начать обнаружение ближайших устройств, используйте метод bluetooth.startDiscovery. Обнаружение может потребовать больших ресурсов, поэтому по завершении следует вызвать bluetooth.stopDiscovery.

      Вы должны вызывать bluetooth.startDiscovery всякий раз, когда вашему приложению необходимо обнаружить устройства поблизости. Не обусловливайте вызов свойством обнаружения bluetooth.AdapterState. Вызов завершится успешно, даже если другое приложение обнаруживает близлежащие устройства, и гарантирует, что адаптер продолжит выполнять обнаружение после остановки этого другого приложения.

      Информация о каждом вновь обнаруженном устройстве поступает с помощью события bluetooth.onDeviceAdded. Для устройств, которые уже были недавно обнаружены или ранее были сопряжены или подключены к ним, событие не будет отправлено. Вместо этого следует вызвать bluetooth.getDevices, чтобы получить текущую информацию, и использовать событие bluetooth.onDeviceChanged, чтобы получать уведомления об изменениях в этой информации в результате обнаружения.

      Если пользователь выключит радиомодуль Bluetooth, все сеансы обнаружения будут завершены и не возобновятся автоматически при включении радиомодуля. Если это важно для вашего приложения, вам следует наблюдать за событием bluetooth.onAdapterStateChanged. Если свойство обнаружения изменится на false , вашему приложению потребуется снова вызвать bluetooth.startDiscovery для возобновления работы. Будьте осторожны с ресурсоемким характером обнаружения.

      Для идентификации устройств, возвращаемых функцией bluetooth.getDevices и связанных событий, предоставляется ряд различных параметров.

      Если устройство поддерживает спецификацию идентификатора устройства Bluetooth, к объекту «Устройство» добавляется несколько свойств, содержащих поля, определенные этой спецификацией. Пример:

      Спецификации идентификатора устройства обычно достаточно, чтобы определить конкретную модель и даже версию устройства от поставщика. Там, где его нет, вместо этого вы должны полагаться на информацию о классе или типе устройства, которая может быть объединена с префиксом производителя в адресе.

      Большинство устройств Bluetooth предоставляют информацию о классе устройства в виде битового поля, интерпретируемого в соответствии с документом Baseband Assigned Numbers. Это битовое поле доступно в свойстве deviceClass.

      Синтаксический анализ поля может быть сложным, поэтому для наиболее распространенных типов устройств Chrome обрабатывает это за вас и устанавливает поле типа. Если это недоступно или недостаточно для ваших нужд, вам нужно самостоятельно проанализировать deviceClass.

      Приложения Chrome могут подключаться к любому устройству, поддерживающему службы RFCOMM или L2CAP. Сюда входит большинство классических устройств Bluetooth, представленных на рынке.

      Чтобы установить соединение с устройством, вам нужны три вещи. Сокет для подключения, созданный с помощью bluetoothSocket.create; адрес устройства, к которому вы хотите подключиться, и UUID самой службы.

      Перед подключением убедитесь, что адаптер знает об устройстве, используя bluetooth.getDevice или API обнаружения устройств.

      Информация, необходимая для установления базового соединения, включая информацию о том, следует ли использовать протокол RFCOMM или L2CAP и какой канал или PSM, получается с помощью обнаружения SDP на устройстве.

      Сохраните дескриптор socketId, чтобы в дальнейшем можно было отправлять данные (bluetoothSocket.send) в этот сокет.

      Для получения и отправки данных из сокета используются объекты ArrayBuffer. Чтобы узнать больше об ArrayBuffers, ознакомьтесь с обзором Типизированные массивы JavaScript и учебным пособием Как преобразовать ArrayBuffer в String и из него.

      Для отправки данных из arrayBuffer используйте bluetoothSocket.send:

      В отличие от метода отправки данных, данные принимаются в событии (bluetoothSocket.onReceive. Сокеты создаются без паузы (см. bluetoothSocket.setPaused), поэтому прослушиватель для этого события обычно добавляется между bluetoothSocket.create и bluetoothSocket.connect. .

      Чтобы получать уведомления об ошибках сокета, включая отключение, добавьте прослушиватель в событие bluetoothSocket.onReceiveError.

      Чтобы разорвать соединение и отключить сокет, используйте bluetoothSocket.disconnect.

      Помимо исходящих подключений к устройствам, приложения Chrome могут публиковать сервисы, которые могут использоваться любым устройством, поддерживающим RFCOMM или L2CAP.

      Поддерживаются два типа опубликованных сервисов. RFCOMM используется чаще всего и охватывает большинство устройств и профилей:

      L2CAP — это другой вариант, который охватывает другие типы устройств и использование в зависимости от производителя, например загрузку встроенного ПО.

      Клиентские подключения принимаются и передаются вашему приложению через событие bluetoothSocket.onAccept.

      Чтобы прекратить прием клиентских подключений и отменить публикацию службы, используйте bluetoothSocket.disconnect.

      Bluetooth Low Energy или (Bluetooth Smart) – это беспроводная технология, направленная на снижение энергопотребления. Bluetooth Low Energy API позволяет приложениям выполнять центральную роль в LE-подключении к периферийным устройствам. В следующих разделах описывается, как обнаруживать периферийные устройства Bluetooth с низким энергопотреблением, подключаться к ним и взаимодействовать с ними.

      Как и в случае с традиционными устройствами Bluetooth, периферийные устройства LE можно обнаружить с помощью методов, описанных в разделе Обнаружение устройств поблизости . Устройство LE делает себя доступным для обнаружения, отправляя пакеты данных, называемые «рекламными данными», и говорят, что устройство находится в рекламном режиме. Рекламные данные могут содержать UUID сервисов, доступных на устройстве. Если они присутствуют, эти UUID будут доступны с помощью свойства uuids соответствующего объекта bluetooth.Device.

      После обнаружения к устройству LE можно подключиться, вызвав bluetoothLowEnergy.connect, чтобы приложение могло взаимодействовать с его службами:

      После подключения свойство connect соответствующего объекта bluetooth.Device будет иметь значение true . Вызов bluetoothLowEnergy.connect устанавливает заявку приложения на физическое подключение к устройству. Физическое подключение к устройству может существовать без вызова bluetoothLowEnergy.connect (например, из-за другого приложения). В этом случае, хотя ваше приложение все еще может взаимодействовать со службами устройства, оно всегда должно вызывать bluetoothLowEnergy.connect, чтобы другое приложение не отключило физическое соединение.

      После того, как ваше приложение больше не нуждается в подключении, оно может удалить свои претензии на подключение, вызвав bluetoothLowEnergy.disconnect:

      Обратите внимание, что это не обязательно разрушит физическую связь с устройством, так как могут быть другие приложения, которые имеют активные подключения к устройству. Иногда устройство может отключиться по причинам, не зависящим от приложения (например, если устройство исчезнет или будет явно отключено пользователем через утилиты операционной системы). Ваше приложение должно отслеживать событие bluetooth.onDeviceChanged, чтобы получать уведомления об изменениях подключения и при необходимости повторно подключаться.

      После подключения устройство, на котором работает Chrome, будет играть так называемую центральную роль, а удаленное устройство будет играть периферийную роль. На этом этапе ваше приложение может взаимодействовать со службами на устройстве, используя методы, описанные в следующем разделе. Примечание. API в настоящее время не поддерживают работу в качестве периферийного устройства LE; приложения могут выполнять только центральную роль.

      Bluetooth с низким энергопотреблением основан на простом протоколе запроса-ответа, который называется Attribute Protocol (ATT). Используя ATT, центральное устройство взаимодействует с так называемыми атрибутами на периферийном устройстве, соответствуя специальному профилю Bluetooth, который называется Generic Attribute Profile (GATT). ГАТТ определяет следующие концепции высокого уровня:

      Bluetooth Low Energy API позволяет приложениям находить информацию о службах, характеристиках и дескрипторах устройства, вызывая bluetoothLowEnergy.getServices, bluetoothLowEnergy.getCharacteristics и bluetoothLowEnergy.getDescriptors. Приложения могут фильтровать сервисы, характеристики и дескрипторы, сравнивая свое поле uuid с нужным UUID GATT:

      Каждой службе, характеристике и дескриптору, доступным через API, назначается уникальный идентификатор экземпляра, который можно получить с помощью поля instanceId. Этот идентификатор экземпляра можно использовать для идентификации объекта GATT и выполнения над ним определенных операций:

      После подключения устройства Chrome обнаружит его службы. По мере обнаружения и удаления каждой службы приложение будет получать события bluetoothLowEnergy.onServiceAdded и bluetoothLowEnergy.onServiceRemoved:

      Chrome асинхронно обнаруживает все характеристики и дескрипторы службы и отправляет событие bluetoothLowEnergy.onServiceAdded после завершения обнаружения. Если подключение к периферийному устройству разрывается, Chrome удаляет все связанные службы и отправляет событие bluetoothLowEnergy.onServiceRemoved.

      Некоторые периферийные устройства могут изменять свои службы, например. характеристики услуги могут измениться или услуги могут быть добавлены или полностью удалены. Chrome уведомляет приложения об этих изменениях с помощью событий bluetoothLowEnergy.onServiceChanged, bluetoothLowEnergy.onServiceAdded и bluetoothLowEnergy.onServiceRemoved.

      Характеристика GATT кодирует один аспект ее услуги.Центральное приложение считывает, воздействует и изменяет состояние службы периферийного устройства, оперируя значением характеристики. Значение характеристики представляет собой последовательность байтов, и ее значение определяется спецификацией высокого уровня, определяющей определенную характеристику. Например, значение характеристики Измерение частоты сердечных сокращений кодирует частоту сердечных сокращений пользователя и общее количество сожженных им калорий, а характеристика Расположение датчика тела кодирует, где в теле следует носить датчик сердечного ритма.

      Chrome предоставляет метод bluetoothLowEnergy.readCharacteristicValue для чтения значения характеристики:

      Некоторые характеристики доступны для записи, особенно те, которые ведут себя как «контрольные точки», где запись значения имеет побочные эффекты. Например, характеристика Контрольная точка сердечного ритма используется для указания датчику сердечного ритма сбросить счетчик общего количества сожженных калорий и поддерживает только запись. Для этого в Chrome предусмотрен метод bluetoothLowEnergy.writeCharacteristicValue:

      Характеристические дескрипторы ведут себя одинаково и могут быть доступны для чтения и/или записи. Chrome предоставляет методы bluetoothLowEnergy.readDescriptorValue и bluetoothLowEnergy.writeDescriptorValue для чтения и записи значения дескриптора.

      Некоторые характеристики сообщают о своем значении с помощью уведомлений или указаний. Например, характеристика Измерение сердечного ритма недоступна ни для чтения, ни для записи, но отправляет обновления своего текущего значения через регулярные промежутки времени. Приложения могут прослушивать эти уведомления с помощью события bluetoothLowEnergy.onCharacteristicValueChanged.

      Даже если характеристика поддерживает уведомления/указания, они не включены по умолчанию. Приложение должно вызывать методы bluetoothLowEnergy.startCharacteristicNotifications и bluetoothLowEnergy.stopCharacteristicNotifications, чтобы начать или прекратить получение события bluetoothLowEnergy.onCharacteristicValueChanged.

      После запуска уведомлений приложение будет получать bluetoothLowEnergy.onCharacteristicValueChanged каждый раз, когда от характеристики будет получено уведомление или индикация. Если характеристика поддерживает чтение, то это событие также будет отправлено после успешного вызова bluetoothLowEnergy.readCharacteristicValue. Это позволяет приложениям унифицировать поток управления обновлением значения, инициируемым запросом на чтение и уведомлениями:

      Если характеристика поддерживает уведомления, поле ее свойств будет содержать свойство «уведомлять» или «указывать».

      Читайте также: