<
  • Главная
Статьи

BLE & GATT або як відправити дані по Bluetooth.

  1. BLE
  2. Терміни та концепції протоколу BLE
  3. Профіль загальних атрибутів (GATT)
  4. Протокол атрибутів (ATT)
  5. Характеристика (Characteristic)
  6. Дескриптори (Descriptors)
  7. Сервіс (Service)
  8. Робота з GATT в Cordova

Розробляючи годівницю для кота, я в підсумку прикрутив до неї блютус. Звичайно, можна поставити на телефон звичайний 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 це робота з сервісом 0000 ffe0 -0000-1000-8000-00805f9b34fb, також згадують єдину характеристику 0000 ffe1 -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

А все чому?
Несподівано, так?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью