- Главная
- Товар
- Модуль Bluetooth
- Модуль BLE
- Двухрежимный модуль Bluetooth
- Аудиомодулю Bluetooth
- Bluetooth WiFi Комбо
- Bluetooth Маяк
- Bluetooth Высокая скорость передачи данных
- Модуль Bluetooth малого размера
- Bluetooth Классический модуль
- Модуль Wi-Fi
- Совет по развитию Bluetooth
- RFID / GPS
- Bluetooth-адаптер/донгл
- Модуль 4G CAT 1/M
- Модуль дверного замка
- Модуль принтера Bluetooth
- Модули медицинского оборудования
- Сетчатый сетевой модуль
- Маяк iBeacon
- Модуль сканера Brcode
- Аудио модуль Bluetooth
- Модуль автомобильной электроники
- Модуль приборной панели автомобиля
- Bluetooth аудио трансивер
- Адаптер Bluetooth
- Модуль Bluetooth
- Руководство пользователя по программированию
- Совет по развитию модуля Bluetooth
- Bluetooth-маяк
- Сертификация и протокол испытаний
- Поддержка приложений и программного обеспечения
- BT + модуль Wi-Fi
- Bluetooth-модуль BLE
- Двухрежимный Bluetooth
- Аудио модуль Bluetooth
- Модуль Bluetooth WiFi
- Маяк Bluetooth
- Технология беспроводной связи
- Новости продукта
- Новости компании
- Промышленность
- Модуль BT
- Bluetooth-маяк
- FAQ по аппаратному обеспечению модуля
- FAQ по программному обеспечению модуля
- R Новости отрасли > Содержание
Что такое клиент GATT и gatt Server в BLE?
Dec 07, 2020Bluetooth Low Energy Series | GATT
Общий профиль атрибутов (GATT) определяет структуру обслуживания с помощью протокола атрибута. В GATT сервер и клиент – это два разных типа ролей ГАТТ, которые полезно разделить.
Сервер ГАТТ:
GATT Server — это устройство, которое хранит данные локально и предоставляет методы доступа к данным удаленному клиенту GATT в паре с BLE.
Служба представляет собой сбор данных и связанное с ними поведение для выполнения определенной функции или функции. В ГАТТ услуга определяется определением службы. Определение службы может содержать ссылки на услуги, обязательные характеристики и факультативные характеристики. GATT Server — это устройство, которое хранит данные локально и предоставляет методы доступа к данным удаленному клиенту GATT в паре с BLE.
Клиент ГАТТ:
Клиент GATT – это устройство, которое получает доступ к данным удаленного сервера GATT в паре с ПОМОЩЬю BLE, используя чтение, записи, уведомления или обозначения операций. После того, как два устройства работают в паре, каждое устройство может выступать в качестве как gatt Server, так и клиента GATT.
Модули Feasycom Low Energy, которые одновременно поддерживают GATT Server и Client.
- FSC-BT630, Северный модуль nRF52832
2.FSC-BT616, Модуль TI CC2640 BLE
Ellisys Bluetooth Video 5: Generic Attribute Profile (GATT)
Для получения дополнительной информации о ble модулей, пожалуйста, не стесняйтесьсвяжитесь с нами.
Категории продуктов
- Модуль Bluetooth
- Модуль BLE
- Двухрежимный модуль Bluetooth
- Аудиомодулю Bluetooth
- Bluetooth WiFi Комбо
- Bluetooth-маяк
Свяжитесь с нами
Источник: ru.feasywifi.com
BLE GATT или как отправить данные по Bluetooth.» width=»» />
Разрабатывая кормушку для кота, я в итоге прикрутил к ней блютус. Конечно, можно поставить на телефон обычный Bluetooth to Serial Terminal и спокойно слать нужные команды. Но так как мы не ищем простых путей, я решил написать свое приложение (на JS + Cordova) для общения с модулем HM-10. Однако, общение оказалось не таким простым, как c обычными Bluetooth устройствами. А все почему?
Да потому что устройства BLE имеют немного другой принцип коммуникации.
BLE
Принцип работы BLE описан уже в его названии: Low Energy. Протокол подразумевает передачу данных короткими пакетами по необходимости, затем – выключение передатчика. Низкое энергопотребление частично достигается применением именно этого принципа. Вместо классического тандема в обычном Bluetooth, устройства BLE связываются друг с другом лишь при необходимости отправки или получения информации.
Протокол BLE строго структурирован по принципу своей коммуникации с другими устройствами. Вначале девайсы изучают доступные сервисы для отправки/принятия данных; неотъемлемая часть этих сервисов – их характеристики (characteristics), определяющие тип данных для будущей передачи. Характеристики, из соображений наглядности, могут иметь в своём составе описания-дескрипторы (descriptors), которые помогают определить тип данных. К примеру, разберём сервис под названием «Heart Rate Monitor» (монитор частоты сердцебиения) – среди его характеристик присутствуют такие, как «измерение пульса».
Большинство API для Bluetooth LE позволяют искать локальные устройства и определять доступные в них сервисы, характеристики и дескрипторы.
Термины и концепции протокола BLE
Предлагаю вашему вниманию краткий обзор ключевых терминов протокола BLE и его концепций. До начала работы над проектом BLE нужно понимать каждый из них.
Профиль общих атрибутов (GATT)
Профиль общих атрибутов (General Attribute Protocol, GATT) – это обязательный профиль с общими спецификациями отправки и приёма коротких порций данных, известных в Bluetooth Low Link под названием «атрибуты». Все нынешние профили приложений LE основаны на GATT. Институт стандартизации и разработки протокола – Bluetooth Special Interest Group уже задал для устройств BLE несколько профилей. Эти профили представляют собой спецификации, описывающие способ применения и взаимодействия с устройствами.
Протокол атрибутов (ATT)
Протокол атрибутов (он же Attribute Protocol, ATT) – основывается на GATT. ATT – оптимизированный протокол, созданный исключительно для устройств BLE. Принцип ATT – отсылать столь малое количество байтов, насколько это возможно. У каждого атрибута есть уникальный универсальный идентификатор, UUID. Он представляет собой стандартизированный 128-битный строковый ID, используемый для идентификации уникальной информации. Формат атрибутов, передаваемых как ATT, бывает двух типов: характеристики и сервисы:
Характеристика (Characteristic)
Характеристика содержит однозначный параметр, а также дескрипторы. Количество дескрипторов может быть равно нулю, то есть это не обязательная часть характеристики. Дескрипторы описывают значение характеристики.
Дескрипторы (Descriptors)
Дескрипторы представляют собой определённые атрибуты, которые описывают значение характеристики. Дескрипторы могут быть в виде понятных описаний на вполне человеческом языке, определять единицы измерений, а также задавать ряд допустимых значений.
Сервис (Service)
Сервис это совокупность характеристик. Список существующих профилей на основе GATT можно просмотреть здесь.
Работа с GATT в Cordova
Для большей наглядности взаимосвязи этих терминов приведем схему
Т.е. профайл устройства HM-10 имеет несколько сервисов, каждый из которых включает себя различные характеристики.
Пока не особо понятно, как мне теперь со всем этим работать. Естетсвенно, порыскав в гугле я начал пробовать все это на практике.
Для Cordova есть модуль для работы с BLЕ — BLE Central. Подключив его и посмотрев характеристики моего HM-10, я увидел следующее.
Вот наши сервисы:
А вот наши характеристики:
В блоге BLE нам говорят о том, что стандартный режим работы с HM-10 это работа с сервисом 0000ffe0-0000-1000-8000-00805f9b34fb, также упоминают единственную характеристику 0000ffe1-0000-1000-8000-00805f9b34fb.
Т.е. в описаниях сервисов и характеристик uuid указан неполностью (сервис — ffe0, характеристика — ffe1)Однако это все я узнал немного позднее. Сначала я экспериментировал с передачей данных подключаясь к устройствам исходя из описания характеристик.
bleService = connectedDevice.characteristics.find(function(item) < return item.properties.indexOf(‘Read’) >-1 item.properties.indexOf(‘WriteWithoutResponse’) > -1 >)
Мне нужно было найти такую характеристику, которая позволяла бы передавать и получать данные. Как я понял, описание этих характеристик и сервисов должно быть в тех документации к каждому BLE-устройству.
Подключаемся к устройству через функцию ble.connect(device_uuid) .
Отключитсья можно через ble.disconnect(device_uuid) (неожиданно, да?).
Отправляем данные через ble.write(device_uuid, service, characteristic, stringToBytes(data), . callbacks) ;
Чтобы получить данные от устройства нам нужно подписаться на обновления ble.startNotification(connectedDevice.id, bleService.service, bleService.characteristic, . callbacks) .В принципе, этого мне было достаточно, для того чтобы передавать нужные команды и получать фидбек от устройства.
Если у Вас есть что добавить, уточнить или указать мне на неточности или ошибки, пишите комментарии. Потому что некоторые углубленные моменты для меня остались непонятны 🙂
В статье были исользованы материалы с хабра и оф сайта Bluetooth
Присоединяйтесь к нашим каналам FrontEndDev и Web Stack и моему личному блогу Sleepless Tech в Telegram, чтобы не пропустить самое интересное из мира Web!
Jem
Read more posts by this author.
Источник: jem-space.ru
Взаимодействие с устройствами Bluetooth с помощью веб-API Bluetooth
Если у вас есть устройства для умного дома, вы, вероятно, взаимодействовали с ними через Bluetooth из собственного приложения на телефоне. Знаете ли вы, что вы также можете взаимодействовать с устройствами Bluetooth через веб-сайт? Вы можете использовать веб-интерфейс Bluetooth API.
Хотя этот API по-прежнему считается экспериментальной технологией, он имеет достойную поддержку в Google Chrome, Edge и Opera. Вот некоторые из вещей, которые вы можете делать с помощью Web Bluetooth API:
- Запрос и подключение к ближайшим устройствам
- Чтение и запись характеристик Bluetooth
- Получение уведомлений GATT
- Получение уведомлений при отключении устройства
- Чтение и запись дескрипторов Bluetooth
Если вы новичок в работе устройств Bluetooth, я объясню некоторые из приведенных выше концепций. В противном случае смело пропускайте вперед.
Основные понятия Bluetooth
Вот несколько ключевых концепций, с которыми вы, вероятно, столкнетесь, когда начнете работать с Web Bluetooth API.
GATT (общий профиль атрибутов)
GATT играет важную роль в определении того, как данные передаются через соединение Bluetooth. В нем описаны процессы и форматы передачи данных. Что еще более важно, он предоставляет эталонную структуру, которая используется для всех устройств с профилями на основе GATT, чтобы гарантировать совместную работу устройств от разных поставщиков.
Клиент GATT против сервера
Клиент GATT отправляет запросы на устройство Bluetooth и получает от него ответы. В нашем случае клиент GATT — это веб-браузер, поддерживающий Web Bluetooth API.
Сервер GATT получает запросы от клиента и возвращает данные. Его также можно настроить для отправки данных самостоятельно, без получения запроса от клиента. Эту роль обычно выполняют устройства Bluetooth.
Обмен данными
При обмене данными между устройствами Bluetooth GATT упорядочивает данные по характеристикам, службам и дескрипторам.
Характеристики
Характеристики содержат пользовательские данные и имеют как минимум два атрибута:- Название характеристики
Описывает, что такое характеристика, например уровень заряда батареи или частота пульса. - Значение этой характеристики
Службы
Службы GATT представляют собой набор связанных характеристик. Например, у вас может быть услуга под названием «Батарея», которая включает такие характеристики, как текущий уровень заряда батареи и расчетное количество времени, оставшееся до того, как батарея нуждается в подзарядке.Дескрипторы
Дескрипторы — это определенные атрибуты, которые описывают значение характеристики. Их можно использовать для предоставления информации, которая упрощает понимание значения характеристики. Например, дескриптор может объяснять ожидаемый диапазон для значения или единицы измерения, используемые для значения.Уведомления GATT
Уведомления GATT позволяют веб-сайту или приложению знать, когда на устройстве изменяется определенная характеристика. Например, веб-страница, на которой отображается уровень заряда батареи устройства Bluetooth, может подписаться на уведомления, указывающие на изменения уровня заряда батареи сопряженного устройства.
Защиты безопасности
Чтобы использовать Web Bluetooth API, необходимо выполнить несколько требований для защиты конфиденциальности пользователей:
- Веб-страница должна быть размещена с использованием HTTPS
Вы можете взаимодействовать с API на http://localhost для тестирования, но HTTPS нужно будет настроить для страницы, когда она размещена. - Пользователь должен сделать какой-то жест (щелкнуть, коснуться и т. Д.), Чтобы веб-страница обнаружила устройства Bluetooth.
Подключение к устройству Bluetooth из браузера
Теперь, когда у вас есть некоторая справочная информация о том, как устройства Bluetooth взаимодействуют друг с другом, давайте что-нибудь построим!
В этом примере давайте напишем код JavaScript, который определяет уровень заряда батареи устройства с помощью Web Bluetooth API и отображает его на веб-странице.
Примечание по тестированию
В этом примере в списке устройств, с которыми браузер может установить сопряжение, появятся только устройства, которые активно рекламируют аккумуляторную батарею. Я обнаружил, что мой Galaxy S9 + сам по себе не рекламирует обслуживание аккумулятора, поэтому я использовал симулятор для тестирования. Легкий способ попробовать это — использовать симулятор BLE, например BLE Peripheral Simulator (Android) или My BLE Simulator (Apple).Код
Для начала создайте асинхронную функцию, которая будет искать устройства Bluetooth и подключаться к выбранному.const connectToDeviceAndSubscribeToUpdates = async () => <>
Внутри функции давайте начнем с запроса устройств, рекламирующих обслуживание аккумуляторов. Функция navigator.bluetooth.requestDevice принимает объект параметров, в котором вы можете указать, какой тип устройств нужно сканировать. В нашем случае мы хотим просканировать устройства, рекламирующие обслуживание аккумуляторов, чтобы мы могли узнать уровень заряда аккумулятора устройства.
const connectToDeviceAndSubscribeToUpdates = async () => < const device = await navigator.bluetooth .requestDevice( < filters: [< services: [‘battery_service’]>>); >;
Существует множество других способов фильтрации устройств, в том числе по имени устройства, UUID службы (удобно, когда вы создаете собственный сервер GATT на периферийном устройстве Bluetooth, таком как Raspberry Pi) или 16-битном идентификаторе службы. Вы также можете использовать несколько фильтров одного или разных типов, чтобы отфильтровать устройства, доступные для сопряжения. Взгляните на список стандартных сервисов GATT и попробуйте использовать разные фильтры для получения данных с ваших устройств.
Затем добавьте элемент кнопки HTML на свою веб-страницу и установите его функцию onClick для вызова функции connectToDeviceAndSubscribeToUpdates . Для сопряжения с устройством Bluetooth из браузера необходимо, чтобы пользователь мог инициировать действие, например, нажав кнопку.
Connect to Bluetooth device
При нажатии на кнопку и вызове функции navigator.bluetooth.requestDevice в браузере отображается всплывающее окно со списком устройств, соответствующих указанным фильтрам.
На этом этапе вы можете выбрать устройство из списка и связать его с браузером. Но пока ничего не произойдет. Нам нужно попытаться подключиться к серверу GATT, который работает на устройстве Bluetooth.
const connectToDeviceAndSubscribeToUpdates = async () => < const device = await navigator.bluetooth .requestDevice(< filters: [< services: [‘battery_service’]>>); const server = await device.gatt.connect(); >;
После подключения к серверу GATT нам нужно получить обслуживание батареи с сервера.
const connectToDeviceAndSubscribeToUpdates = async () => < const device = await navigator.bluetooth .requestDevice(< filters: [< services: [‘battery_service’]>>); const server = await device.gatt.connect(); const service = await server.getPrimaryService(‘battery_service’); >;
Теперь, когда услуга доступна, мы можем получить характеристику уровня заряда батареи с устройства.
const connectToDeviceAndSubscribeToUpdates = async () => < const device = await navigator.bluetooth .requestDevice(< filters: [< services: [‘battery_service’]>>); const server = await device.gatt.connect(); const service = await server.getPrimaryService(‘battery_service’); const characteristic = await service.getCharacteristic(‘battery_level’); >;
На данный момент у нас есть все, что нам нужно, чтобы получить уровень заряда батареи устройства. Для этого мы используем функцию readValue на характеристике. Значением является DataView объекта ArrayBuffer, поэтому мы используем функцию getUint8 , чтобы получить отдельный байт из массива по переданному индексу, который в нашем случае равен 0 .
const connectToDeviceAndSubscribeToUpdates = async () => < const device = await navigator.bluetooth .requestDevice(< filters: [< services: [‘battery_service’]>>); const server = await device.gatt.connect(); const service = await server.getPrimaryService(‘battery_service’); const characteristic = await service.getCharacteristic(‘battery_level’); const reading = await characteristic.readValue(); console.log(reading.getUint8(0) + ‘%’); >;
Вышеупомянутая функция теперь будет получать показания уровня заряда батареи с сопряженного устройства и записывать их в консоль браузера.
Это здорово, но пока наш код будет считываться только один раз, сразу после подключения устройства. Мы можем подписаться на обновления (также известные как уведомления GATT), вызвав функцию startNotifications для характеристики. Добавление обработчика события characteristicvaluechanged позволит нам обновлять веб-страницу новым значением при изменении уровня заряда батареи.
const handleCharacteristicValueChanged = (event) => < console.log(event.target.value.getUint8(0) + ‘%’); >; const connectToDeviceAndSubscribeToUpdates = async () => < const device = await navigator.bluetooth .requestDevice(< filters: [< services: [‘battery_service’]>>); const server = await device.gatt.connect(); const service = await server.getPrimaryService(‘battery_service’); const characteristic = await service.getCharacteristic(‘battery_level’); characteristic.startNotifications(); characteristic.addEventListener(‘characteristicvaluechanged’, handleCharacteristicValueChanged); const reading = await characteristic.readValue(); console.log(reading.getUint8(0) + ‘%’); >;
Это основы подключения к устройствам Bluetooth из браузера. Но это только начало. Вы можете написать свои собственные службы GATT для обмена данными по Bluetooth между микроконтроллерами и другими устройствами IoT.
Дополнительные ресурсы
- Таунсенд, К., Куфи, К., Акиба, и Дэвидсон, Р. (нет данных). Начало работы с Bluetooth с низким энергопотреблением. Получено с https://www.oreilly.com/library/view/getting-started-with/9781491900550/ch04.html.
Источник: digitrain.ru