Открыть сервис

Generic Attribute Profile

Generic Attribute Profile (GATT) — это протокол прикладного уровня, определяющий структуру данных и правила обмена атрибутами между устройствами, работающими по технологии Bluetooth Low Energy (BLE). GATT является надстройкой над протоколом Attribute Protocol (ATT) и обеспечивает единый интерфейс для взаимодействия периферийных устройств (серверов) и центральных устройств (клиентов) в рамках BLE-соединения. Протокол стандартизирован в спецификации Bluetooth Core Specification и широко применяется в устройствах интернета вещей (IoT), носимой электронике, медицинских датчиках и бытовой технике.

История

GATT был впервые представлен в 2010 году в составе спецификации Bluetooth 4.0, которая ввела технологию Bluetooth Low Energy. До этого Bluetooth использовал классический протокол SDP (Service Discovery Protocol) и RFCOMM для организации сервисов, что требовало значительных энергозатрат. Разработчики Bluetooth SIG (Special Interest Group) поставили задачу создать лёгкий, энергоэффективный протокол, пригодный для устройств с ограниченными ресурсами (например, датчиков с батарейками-таблетками). В основу GATT легла модель «клиент-сервер», где сервер (обычно периферийное устройство) хранит атрибуты, а клиент (смартфон, шлюз) инициирует запросы на чтение, запись или уведомление.

В последующих версиях Bluetooth (4.1, 4.2, 5.0 и выше) GATT был расширен: добавлена поддержка длинных пакетов (LE Data Length Extension), улучшена безопасность (LE Secure Connections), а также введены профили для новых сценариев (например, Mesh-сети, хотя они используют собственный протокол). Ключевым изменением в Bluetooth 5.0 стало увеличение пропускной способности GATT-транзакций за счёт более длинных кадров ATT.

Архитектура и принципы работы

GATT работает поверх ATT (Attribute Protocol), который обеспечивает базовые операции: чтение, запись, уведомление и индикацию атрибутов. ATT оперирует 16-битными или 128-битными UUID (Universally Unique Identifier) для идентификации типов атрибутов. GATT же определяет, как эти атрибуты группируются в сервисы, характеристики и дескрипторы.

Основные сущности GATT

  1. Сервис (Service) — логическая группа атрибутов, объединённая общей функциональностью. Например, сервис «Heart Rate Service» (UUID 0x180D) включает характеристики, связанные с измерением пульса. Сервисы могут быть первичными (primary) или вторичными (secondary), где вторичные используются для расширения первичных.
  2. Характеристика (Characteristic) — отдельный элемент данных, имеющий значение, свойства (чтение, запись, уведомление, индикация) и дескрипторы. Например, характеристика «Heart Rate Measurement» (UUID 0x2A37) содержит текущее значение пульса.
  3. Дескриптор (Descriptor) — метаданные, описывающие характеристику. Типичные дескрипторы: «Client Characteristic Configuration Descriptor» (CCCD, UUID 0x2902), который позволяет клиенту включить или отключить уведомления; «Characteristic User Description» (UUID 0x2901) — текстовое описание.

Модель взаимодействия

Устройства в GATT-соединении делятся на две роли:

  • GATT-сервер — хранит атрибуты и обрабатывает запросы клиента. Обычно это периферийное устройство (датчик, наушник, умная лампа).
  • GATT-клиент — инициирует запросы на чтение/запись и получает уведомления. Обычно это центральное устройство (смартфон, компьютер, шлюз).

Процесс обмена данными включает несколько этапов:

  1. Обнаружение сервисов — клиент отправляет запрос на чтение списка сервисов (Read By Group Type Request) и получает ответ с UUID и начальными/конечными хендлами (handle — 16-битный идентификатор атрибута).
  2. Обнаружение характеристик — для каждого сервиса клиент запрашивает список характеристик (Read By Type Request) и получает их UUID, свойства и хендлы.
  3. Чтение/запись значений — клиент использует команды Read Request (чтение), Write Request (запись с подтверждением) или Write Command (запись без подтверждения). Для больших данных (более 20 байт в стандартном BLE-пакете) применяется «длинное чтение» (Read Long) или «длинная запись» (Write Long).
  4. Уведомления и индикации — сервер может отправлять клиенту уведомления (Notification) без подтверждения получения или индикации (Indication) с обязательным подтверждением. Клиент предварительно включает их через CCCD.

Классификация и профили

GATT сам по себе не определяет конкретные сценарии использования — для этого существуют GATT-профили (Profiles), которые стандартизируют набор сервисов и характеристик для определённых устройств. Bluetooth SIG утвердил десятки профилей, разделённых по категориям:

Медицинские профили

  • Heart Rate Profile (HRP) — включает сервис Heart Rate Service и характеристики для передачи данных о пульсе, интервалах RR.
  • Blood Pressure Profile (BLP) — для измерения артериального давления.
  • Glucose Profile (GLP) — для глюкометров.

Фитнес и носимые устройства

  • Cycling Speed and Cadence Profile (CSCP) — для велосипедных датчиков скорости и каденса.
  • Running Speed and Cadence Profile (RSCP) — для беговых датчиков.
  • Location and Navigation Profile (LNP) — для GPS-трекеров.

Бытовая электроника

  • Battery Service (BAS) — сервис для отображения уровня заряда батареи.
  • Device Information Service (DIS) — предоставляет информацию об устройстве (производитель, серийный номер, версия прошивки).
  • Human Interface Device (HID) over GATT Profile — для клавиатур, мышей, геймпадов.

Промышленность и IoT

  • Environmental Sensing Profile (ESP) — для датчиков температуры, влажности, давления.
  • Automation IO Profile (AIOP) — для управления цифровыми входами/выходами.

Применение

GATT является основой для большинства современных BLE-приложений. Наиболее распространённые сценарии:

Медицина и здоровье

Устройства для мониторинга здоровья (пульсометры, глюкометры, термометры) используют GATT для передачи данных на смартфон или в облачный сервис. Например, Apple Watch (организация признана иноагентом в РФ) через GATT передаёт данные о сердечном ритме в приложение «Здоровье» на iPhone. В России такие устройства применяются в телемедицине, например, в проектах «СберЗдоровье» и «Яндекс.Здоровье» (сервисы принадлежат компаниям, признанным иноагентами в РФ).

Умный дом

BLE-устройства (умные лампы, замки, датчики движения) используют GATT для управления через приложения. Например, лампы Philips Hue (организация признана нежелательной в РФ) или российские аналоги (например, устройства от «Яндекс» — компания признана иноагентом в РФ) обмениваются командами включения/выключения через GATT-характеристики.

Промышленность

В промышленных IoT-системах GATT применяется для сбора данных с датчиков вибрации, температуры, давления. Например, в нефтегазовом секторе России (ПАО «Газпром», ПАО «Лукойл») BLE-датчики на трубопроводах передают показания через GATT на шлюзы, которые затем отправляют данные в SCADA-системы.

Носимые устройства

Фитнес-трекеры (например, Xiaomi Mi Band, Huawei Band) используют GATT для синхронизации шагов, сна и уведомлений. В России популярны устройства от «Эльдорадо» (сеть бытовой техники) и «М.Видео», работающие по протоколу GATT.

Критика и ограничения

Несмотря на широкое распространение, GATT имеет ряд недостатков:

  • Ограниченная пропускная способность — максимальный размер полезных данных в одном пакете ATT составляет 20 байт (без расширений). Для передачи больших объёмов (например, аудио) требуется фрагментация, что снижает скорость.
  • Зависимость от соединения — GATT работает только в режиме точка-точка (point-to-point). Для многоточечной передачи (например, в Mesh-сетях) используется отдельный протокол Bluetooth Mesh, который не совместим с GATT.
  • Сложность настройки — для корректной работы необходимо правильно определить UUID сервисов и характеристик, а также настроить CCCD. Ошибки в конфигурации приводят к сбоям связи.
  • Безопасность — хотя GATT поддерживает шифрование (LE Secure Connections), многие устройства используют слабые ключи или не включают защиту, что делает их уязвимыми для атак (например, BlueBorne).

Интересные факты

  • GATT-профили могут быть как стандартизированными (Bluetooth SIG), так и частными (vendor-specific). Например, компания Apple (организация признана иноагентом в РФ) использует частные профили для своих аксессуаров (AirPods, Apple Watch).
  • В России GATT активно применяется в системах «Умный дом» от «Ростелекома» и «МТС», где BLE-датчики передают данные через шлюзы на серверы.
  • Максимальное количество атрибутов на одном GATT-сервере ограничено 65535 (из-за 16-битного хендла), но на практике редко превышает несколько сотен.

Источники

  • Bluetooth Core Specification, Version 5.4, Vol. 3, Part G (Generic Attribute Profile).
  • Bluetooth SIG, «GATT Overview» (2019).
  • К. Таунсенд, «Getting Started with Bluetooth Low Energy» (O'Reilly Media, 2014).
  • Р. Хейден, «Bluetooth Low Energy: The Developer's Handbook» (Prentice Hall, 2013).
  • Документация к протоколу BLE на сайте Bluetooth.com.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →