Characteristic: এটি কী, ডেটার ধরন এবং মান পড়া

লেখক: IT Sectr প্রকাশিত: 2026-07-15 পড়ার সময়: 7 মিনিট

Characteristic হল Bluetooth Low Energy-তে ডেটার একটি মৌলিক একক, যার মাধ্যমে Central একটি পেরিফেরাল ডিভাইসে তথ্য পড়ে বা লেখে। প্রতিটি Characteristic একটি নির্দিষ্ট GATT সার্ভিসের অন্তর্গত, এর একটি অনন্য UUID এবং বৈশিষ্ট্যের (read, write, notify, indicate) একটি সেট থাকে যা সম্ভাব্য অপারেশনগুলি নির্ধারণ করে। Bluetooth Core Specification 5.4 (2023) অনুসারে, Bluetooth SIG চিকিৎসা, ফিটনেস এবং শিল্প ডিভাইসের জন্য 500টিরও বেশী মানক বৈশিষ্ট্য নির্দিষ্ট করেছে। ডেভেলপাররা সেন্সর রিডিং থেকে ডিভাইস কন্ট্রোল কমান্ড পর্যন্ত যেকোনো ব্যবহারকারী ডেটা প্রেরণের জন্য কাস্টম বৈশিষ্ট্য তৈরি করে।

মূল বিষয়

  • Characteristic হল BLE GATT সার্ভিসের ভিতরে একটি ডেটা পয়ন্ট, যার UUID, বৈশিষ্ট্য এবং একটি নির্দিষ্ট ধরণের মান রয়েছে।
  • বৈশিষ্ট্যগুলি উপলব্ধ অপারেশনগুলি নির্ধারণ করে: read (পড়া), write (লেখা), notify (বিজ্ঞপ্তি), indicate (নিশ্চিত বিজ্ঞপ্তি)0964
  • মানক বৈশিষ্ট্যগুলির (ব্যাটারি লেভেল, হার্ট রেট) Bluetooth SIG রেজিস্ট্রি থেকে 16-বিট UUID থাকে।
  • প্রতিটি Characteristic-এ ডেস্ক্রিপ্টর থাকতে পারে — মেটাডেটা যা পরিমাপের একক বা বিজ্ঞপ্তি কনফিগারেশন বর্ণনা করে।
  • একটি Characteristic-এর মাধ্যমে একটি ডেটা প্যাকেটের সর্বোচ্চ আকার 20 বাইট (MTU 23) বা MTU বৃদ্ধিতে 244 বাইট পর্যন্ত।

BLE-এ Characteristic কী?

Characteristic হল GATT প্রোটোকোলের একটি অ্যাট্রিবিউট যা একটি মান (value) এবং মেটাডেটা ধারণ করে। BLE আর্কিটেকচারে, ডেটা সরাসরি ডিভাইসগুলির মধ্যে স্থানান্তরিত হয় না, বরং সার্ভিসের বৈশিষ্ট্যগুলির মান পড়া এবং লেখার মাধ্যমে স্থানান্তরিত হয়। যদি একটি সার্ভিস একটি ফোলডার হয়, তাহলে Characteristic হল সেই ফোলডারের ভিতরে একটি ফাইল।

প্রতিটি Characteristic তিনটি উপাদান নিয়ে গঠিত: ঘোষণা (declaration), মান (value), এবং ডেস্ক্রিপ্টর (descriptors)। ঘোষণায় বৈশিষ্ট্যের UUID এবং এর বৈশিষ্ট্য থাকে। মান হল Central এবং Peripheral-এর মধ্যে স্থানান্তরিত প্রকৃত ডেটা। ডেস্ক্রিপ্টর অতিরিক্ত কনফিগারেশন প্রদান করে।

Bluetooth Core Specification 5.4 (2023) অনুসারে, BLE-তে সমস্ত ডেটা বিনিময় বৈশিষ্ট্যগুলির উপর অপারেশনের মাধ্যমে ঘটে। এমনকি মানক প্রোফাইল যেমন Heart Rate Profile বা Battery Service পূর্বনির্ধারিত UUID সহ বৈশিষ্ট্যগুলির একটি সেটের উপর নির্মিত। এটি পূর্ব কনফিগারেশন ছাড়াই বিভিন্ন নির্মাতার ডিভাইসগুলির সামঞ্জস্য নিশ্চিত করে।

ডেভেলপারদের জন্য বোঝা গুরুত্বপূর্ণ: প্রতিটি Characteristic বিভিন্ন বৈশিষ্ট্যের সংমিশ্রণ সমর্থন করতে পারে। একটি বৈশিষ্ট্য শুধুমাত্র পড়ার জন্য হতে পারে, অন্যটি লেখার জন্য, তৃতীয়টি বিজ্ঞপ্তির জন্য। বৈশিষ্ট্যগুলির সঠিক পছন্দ ব্যবহারের পরিস্থিতি এবং ডিভাইসের শক্তি খরচ নির্ধারণ করে।

Characteristic-এর বৈশিষ্ট্য এবং অনুমতি

একটি বৈশিষ্ট্যের বৈশিষ্ট্য (properties) নির্ধারণ করে যে এটিতে কোন অপারেশনগুলি অনুমোদিত। এটি একটি বাইট মাস্ক যেখানে প্রতিটি বিট একটি নির্দিষ্ট অপারেশন সক্ষম বা নিষ্ক্রিয় করে। নীচে প্রধান বৈশিষ্ট্যগুলি তালিকাভুক্তিত।

বৈশিষ্ট্যবিটবিবরণসাধারণ ব্যবহার
Read0x02Central বর্তমান মান পড়তে পারেঅবস্থা, ব্যাটারি লেভেল, কনফিগারেশন
Write0x08Central একটি নতুন মান লিখতে পারেনিয়ন্ত্রণ কমান্ড, সেটিংস
Notify0x10Peripheral নিশ্চিতকরণ ছাড়া মান পাঠায়স্ট্রিমিং ডেটা (নাড়ি, তাপমাত্রা)
Indicate0x20Peripheral নিশ্চিতকরণ সহ মান পাঠায়গুরুত্বপূর্ণ ডেটা (সতর্কতা, অবস্থা)
Write Without Response0x04সার্ভার থেকে নিশ্চিতকরণের অপেক্ষা না করে লেখাউচ্চ-গতির কমান্ড প্রেরণ

অনুমতি (permissions) হল GATT সার্ভার স্তরে অ্যাক্সেসের স্তর। বৈশিষ্ট্যগুলির বিপরীতে, যা বৈশিষ্ট্যের ঘোষণায় ঘোষিত, অনুমতিগুলি প্রতিটি অপারেশনে পরীক্ষা করা হয়। এতে এনক্রিপশন এবং প্রমাণীকরণের প্রয়োজনীয়তা অন্তর্ভুক্ত থাকতে পারে।

Bluetooth SIG-এর মানক বৈশিষ্ট্য

Bluetooth SIG 500টিরও বেশী মানক বৈশিষ্ট্য নির্দিষ্ট করেছে যা বেশিরভাগ সাধারণ BLE ব্যবহারের ক্ষেত্র কভার করে। মানক UUID ব্যবহার নিশ্চিত করে যে কোনো প্রাপ্ত ডিভাইস পূর্ব কনফিগারেশন ছাড়াই ডেটা সঠিকভাবে ব্যাখ্যা করে।

এগুলি সবচেয়ে বেশি ব্যবহৃত মানক বৈশিষ্ট্য:

UUIDনামডেটার ধরণসার্ভিস
0x2A19Battery Leveluint8 (0–100%)Battery Service
0x2A37Heart Rate Measurementuint8 + ফ্ল্যাগHeart Rate
0x2A6ETemperatureint16 (0.01°C)Environmental Sensing
0x2A6FHumidityuint16 (0.01%)Environmental Sensing
0x2A00Device NameUTF-8 স্ট্রিংGeneric Access
0x2A01Appearanceuint16Generic Access

যদি কোনও বিদ্যমান মানক বৈশিষ্ট্য আপনার কাজ কভার করে, তবে এটি ব্যবহার করুন। এটি Bluetooth সার্টিফিকেশন সহজতর করে এবং ইকোসিস্টেম সামঞ্জস্য উন্নত করে। শুধুমাত্র অনন্য ডেটার জন্য কাস্টম বৈশিষ্ট্য তৈরি করুন যা SIG রেজিস্ট্রিতে নেই।

iOS এবং Android-এ Characteristic তৈরি করা

একটি বৈশিষ্ট্য তৈরি করা Peripheral পক্ষে করা হয় — যে ডিভাইস ডেটা সরবরাহ করে। আসুন iOS (Swift) এবং Android (Java)-এ বাস্তবায়ন দেখি।

iOS: CBMutableCharacteristic

Core Bluetooth UUID, বৈশিষ্ট্য এবং প্রাথমিক মান সহ একটি বৈশিষ্ট্য তৈরির জন্য CBMutableCharacteristic ক্লাস সরবরাহ করে।

swift
import CoreBluetooth

let characteristicUUID = CBUUID("2A19") // ব্যাটারি লেভেল বৈশিষ্ট্য

let characteristic = CBMutableCharacteristic(
    type: characteristicUUID,
    properties: [.read, .notify],
    value: nil,
    permissions: [.readable]
)

// পরিবর্তনে মান আপডেট করুন
let batteryData = Data([batteryLevel]) // uint8
peripheralManager.updateValue(
    batteryData,
    for: characteristic,
    onSubscribedCentrals: nil
)

Android: BluetoothGattCharacteristic

Android-এ, UUID, বৈশিষ্ট্য এবং অনুমতি সহ BluetoothGattCharacteristic ব্যবহার করে একটি বৈশিষ্ট্য তৈরি করা হয়।

java
import android.bluetooth.*;

UUID charUuid = UUID.fromString("00002A19-0000-1000-8000-00805F9B34FB");

BluetoothGattCharacteristic characteristic =
    new BluetoothGattCharacteristic(
        charUuid,
        BluetoothGattCharacteristic.PROPERTY_READ
            | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
        BluetoothGattCharacteristic.PERMISSION_READ
    );

// মান সেট করুন
characteristic.setValue(batteryLevel, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
gattServer.notifyCharacteristicChanged(device, characteristic, false);

পড়া, লেখা এবং বিজ্ঞপ্তি

Characteristic-এর উপর অপারেশনগুলি তিন প্রকারে বিভক্ত: read (পড়া), write (লেখা), এবং notify/indicate (বিজ্ঞপ্তি)। পছন্দ পরিস্থিতির উপর নির্ভর করে: চাহিদা অনুযায়ী ডেটা পড়া হয়, কমান্ড লেখা হয়, স্ট্রিমিং ডেটা বিজ্ঞপ্তিতে সাবস্ক্রাইব করে।

Read: Central বৈশিষ্ট্যের মান পড়ার জন্য একটি অনুরোধ পাঠায়। Peripheral বর্তমান মান দিয়ে উত্তর দেয়। অপারেশনটি সিঙ্ক্রোনাস এবং প্রতিটি পক্ষ থেকে স্পষ্ট অনুরোধ প্রয়োজন। এটি ব্যবহার করা হয় যে ডেটা কম পরিবর্তিত হয়ে থাকে: ফার্মওয়ার সংস্করণ, সিরিয়াল নম্বর, সেটিংস।

Write: Central Peripheral-এ ডেটা পাঠায়। দুটি মোড আছে: Write with Response (Peripheral থেকে নিশ্চিতকরণ) এবং Write Without Response (নিশ্চিতকরণ ছাড়া)0964 Write with Response ডেলিভারি নিশ্চিত করে — Peripheral লেখার পর নিশ্চিতকরণ পাঠায়। Write Without Response দ্রুততর কিন্তু ডেলিভারি নিশ্চিত করে না।

Notify এবং Indicate: Peripheral Central-এ ডেটা প্রেরণ শুরু করে। Notify-তে, ডেটা নিশ্চিতকরণ ছাড়া পাঠানো হয় — যদি Central প্যাকেট গ্রহণ করতে ব্যর্থ হয়, তা হারিয়ে যায়। Indicate-এ, Central নিশ্চিতকরণ (PDU স্তর) পাঠায়, যা ডেলিভারি নিশ্চিত করে। Indicate ধীর কিন্তু আরও নির্ভরযোগ্য। বিজ্ঞপ্তিতে সাবস্ক্রাইব করতে, Central CCCD (Client Characteristic Configuration Descriptor)-এ মান 0x0001 লেখে।

MTU এবং স্থানান্তরিত ডেটার আকার

MTU (Maximum Transmission Unit) একটি একক BLE ডেটা প্যাকেটের সর্বোচ্চ আকার নির্ধারণ করে। ডিফল্টভাবে, MTU 23 বাইট, যার মধ্যে 3 বাইট হেডার — পেলোড (ATT payload) 20 বাইটের সমান। এটি বেশিরভাগ সেন্সর ডেটার জন্য যথেষ্ট কিন্তু ফাইল স্থানান্তর বা বড় কনফিগারেশনের জন্য যথেষ্ট নয়।

Bluetooth Core Specification 5.4 MTU আলোচনা (MTU negotiation) সমর্থন করে — Central এবং Peripheral 517 বাইট পর্যন্ত বড় প্যাকেট আকারে একমত হতে পারে। প্রক্রিয়াটি এভাবে কাজ করে: Central তার প্রস্তাবিত MTU সহ MTU Exchange অনুরোধ পাঠায়; Peripheral তার MTU দিয়ে উত্তর দেয়; দুটি মানের মধ্যে ছোটটি ব্যবহৃত হয়।

swift
// iOS সংযোগে MTU অনুরোধ করে
// iOS-এ সর্বোচ্চ MTU 185 বাইট
func peripheral(
    _ peripheral: CBPeripheral,
    didDiscoverServices error: Error?
) {
    // নির্দিষ্ট পেরিফেরালের জন্য MTU অনুরোধ
    peripheral.maximumWriteValueLength(for: .withResponse)
}

Bluetooth SIG (2023) অনুসারে, MTU 23 থেকে 185 বাইটে বাড়ানো ডেটা প্রেরণ ওভারহেড 80% পর্যন্ত হ্রাস করে কম প্যাকেটের কারণে। উচ্চ-ফ্রিকোয়েন্সি রিডিং (যেমন, ECG বা অ্যাক্সেলেরোমিটার) প্রেরণকারী অ্যাপ্লিকেশনের জন্য, স্ট্রিম স্থিতিশীলতার জন্য MTU বৃদ্ধি গুরুত্বপূর্ণ।

সচরাচর জিজ্ঞাসা

একটি সার্ভিসে কতগুলি বৈশিষ্ট্য থাকতে পারে?

BLE স্পেসিফিকেশন একটি সার্ভিসে বৈশিষ্ট্যের সংখ্যা সীমাবদ্ধ করে না। ব্যবহারে, সীমা GATT সার্ভার উপলব্ধ মেমরি এবং কর্মক্ষমতা প্রয়োজনীয়তা দ্বারা নির্ধারিত হয়। এম্বেডেড ডিভাইসের জন্য, প্রতি সার্ভিসে 10–15টির বেশী বৈশিষ্ট্য সুপারিশ করা হয় না।

Notify এবং Indicate-এর মধ্যে পার্থক্য কী?

Notify নিশ্চিতকরণ ছাড়া ডেটা পাঠায় — প্যাকেট প্রেরককে জানানো ছাড়াই হারিয়ে যেতে পারে। Indicate-এর প্রোটোকোল স্তরে নিশ্চিতকরণ (ACK) প্রয়োজন, যা ডেলিভারি নিশ্চিত করে। Indicate ধীর কিন্তু আরও নির্ভরযোগ্য। গুরুত্বপূর্ণ ডেটার (সতর্কতা, কমান্ড) জন্য Indicate ব্যবহার করুন।

একটি বৈশিষ্ট্য কি একসাথে Read এবং Write হতে পারে?

হ্যাঁ, একটি বৈশিষ্ট্যের বৈশিষ্ট্যের সংমিশ্রণ থাকতে পারে। উদাহরণস্বরূপ, একটি সেটিংস বৈশিষ্ট্য Read (বর্তমান মান পড়া) এবং Write (সেটিং পরিবর্তন) সমর্থন করতে পারে। আপনার ব্যবহারের ক্ষেত্র অনুযায়ী বৈশিষ্ট্যগুলি সংমিশ্রিত করুন।

BLE-এর মাধ্যমে 20 বাইটের চেয়ে বড় ডেটা কিভাবে স্থানান্তর করবেন?

প্যাকেটের আকার 185–517 বাইটে বাড়াতে MTU আলোচনা ব্যবহার করুন। যদি ডেটা এখনও বড় হয়, তবে অ্যাপ্লিকেশন স্তরে খণ্ডীকরণ বাস্তবায়ন করুন: অখণ্ডতা নিয়ন্ত্রণ সহ ডেটা কয়েকটি অনুক্রমিক অনুরোধে বিভক্ত করুন।

আমার কি মানক বৈশিষ্ট্য UUID ব্যবহার করা উচিত?

যদি আপনার কাজ একটি মানক বৈশিষ্ট্য দ্বারা কভার করা হয়, তবে Bluetooth SIG রেজিস্ট্রি থেকে UUID ব্যবহার করুন। এটি সার্টিফিকেশন সহজতর করে এবং ইকোসিস্টেম সামঞ্জস্য নিশ্চিত করে। শুধুমাত্র অনন্য তৃতীয়-পক্ষের ডেটার জন্য কাস্টম UUID তৈরি করুন।

সারসংক্ষেপ

  • Characteristic হল BLE-এ ডেটা স্থানান্তরের প্রাথমিক প্রক্রিয়া, যা UUID, বৈশিষ্ট্য এবং ডেস্ক্রিপ্টর সহ একটি মান উপস্থাপন করে।
  • বৈশিষ্ট্যগুলি (Read, Write, Notify, Indicate) নির্ধারণ করে যে বৈশিষ্ট্যটিতে কোন অপারেশনগুলি উপলব্ধ।
  • Bluetooth SIG 500টিরও বেশী মানক বৈশিষ্ট্য নির্দিষ্ট করেছে — ডিভাইস সামঞ্জস্যের জন্য সেগুলি ব্যবহার করুন।
  • বৈশিষ্ট্য তৈরি Peripheral পক্ষে Core Bluetooth (iOS) বা BluetoothGattCharacteristic (Android)-এর মাধ্যমে করা হয়।
  • বিজ্ঞপ্তিগুলি (Notify/Indicate) স্ট্রিমিং ডেটার জন্য নিয়মিত পলিংয়ের চেয়ে অধিক কার্যকর — তাদের Central থেকে ধ্রুবক অনুরোধের প্রয়োজন হয় না।
  • একটি প্যাকেটের আকার MTU (ডিফল্ট 20 বাইট) দ্বারা সীমাবদ্ধ কিন্তু MTU Exchange-এর মাধ্যমে 517 বাইটে বাড়ানো যেতে পারে।
  • বৈশিষ্ট্য এবং UUID-এর সঠিক পছন্দ BLE সংযোগের শক্তি খরচ, নির্ভরযোগ্যতা এবং কর্মক্ষমতা নির্ধারণ করে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন