Service UUID: nedir, formatı ve nerede kullanılır

Yazar: IT Sectr Yayınlanma: 2026-07-14 Okuma süresi: 8 dk

Service UUID, Bluetooth Low Energy (BLE) içinde bir cihazdaki işlevsel hizmeti benzersiz şekilde tanımlayan 16 veya 128 bitlik bir tanımlayıcıdır. Bluetooth SIG, Battery Service (0x180F), Device Information (0x180A) ve Heart Rate (0x180D) gibi yaygın hizmetler için standart 16 bit UUID'ler tahsis ederek platformlar arası uyumluluğu basitleştirmiştir. Bluetooth Core Specification 5.4 (2023)'e göre, üçüncü taraf geliştiricilerin özel hizmetleri, formatı merkezi bir kayıt olmadan küresel benzersizliği garanti eden 128 bit UUID'ler kullanmak zorundadır. Service UUID'nin doğru bildirimi, bir çevre birimi cihazında GATT sunucusunun doğru çalışmasına giden ilk adımdır.

Önemli Noktalar

  • Service UUID, 16 bit (standart) veya 128 bit (özel) olabilen bir BLE hizmet tanımlayıcısıdır.
  • Bluetooth SIG, yaygın hizmetler — Battery, Heart Rate, Device Information ve diğerleri için 60'tan fazla standart UUID tahsis etmiştir.
  • 128 bit UUID'ler geliştirici tarafından oluşturulur ve merkezi bir otoriteye kayıt olmadan hizmetin küresel benzersizliğini garanti eder.
  • Tarama sırasında Merkezi cihaz, Çevresel cihazların hizmetlerini Service UUID ile algılar ve bu da cihaz uyumluluğunu belirler.
  • Tek bir GATT sunucusu, farklı UUID'lerle birden fazla hizmet bildirebilir — her hizmet kendi özelliklerini içerir.

BLE'de Service UUID Nedir?

Service UUID, Bluetooth Low Energy GATT hizmetine diğer cihazlar tarafından açık bir şekilde tanınması için atanan bir tanımlayıcıdır. BLE mimarisinde, her hizmet ortak bir işlevle birleştirilmiş mantıksal bir özellikler grubunu temsil eder. Örneğin, Battery Service, mevcut pil şarjını ileten Battery Level özelliğini içerir.

Bluetooth SIG (Special Interest Group), en yaygın hizmetlere atanan standart 16 bit UUID'lerin kaydını yönetir. Bu, farklı üreticilerin cihazlarının ön yapılandırma olmadan birbirlerinin hizmetlerini tanımasını sağlar. Herhangi bir markanın fitness takip cihazı, UUID 0x180D ile Heart Rate Service bildirebilir ve herhangi bir akıllı telefon bunun bir kalp atış hızı hizmeti olduğunu anlayacaktır.

Bluetooth Core Specification 5.4 (2023)'e göre, 16 bit UUID aralığı (0x0000–0xFFFF) iki bölüme ayrılmıştır: 0x0001'den 0xFFFE'ye kadar Bluetooth SIG standart hizmetleri ve 0xFFFF ayrılmıştır. Bir geliştiricinin SIG kaydında olmayan benzersiz bir hizmete ihtiyacı varsa, 128 bit UUID kullanır.

Standart ve özel UUID'ler arasındaki fark sadece uzunlukta değildir: 16 bit UUID'ler, 16 bayt yerine 2 bayt olarak iletildikleri için reklam paketinde hava süresinden tasarruf sağlar. Reklam paketi boyutunda katı sınırlamaları olan cihazlar için (31 bayta kadar), bu kritiktir.

Standart ve Özel UUID'ler

Standart 16 bit UUID'ler, BLE cihazlarının ana kategorilerini kapsar: tıbbi sensörler, fitness takip cihazları, giyilebilir elektronikler ve aksesuarlar. Bir cihaz standart bir işlevi uyguluyorsa, geliştiricinin maksimum uyumluluk için Bluetooth SIG kaydından ilgili UUID'yi kullanması önerilir.

İşte standart hizmet UUID'lerine birkaç örnek:

UUID (hex)Hizmet AdıAmaç
0x1800Generic AccessErişim kontrolü, cihaz adı, görünüm
0x180ADevice InformationÜretici, model, seri numarası, donanım yazılımı sürümü
0x180DHeart RateNabız ölçümü, sensör konumu, pil gücü
0x180FBattery ServiceYüzde olarak pil şarj seviyesi
0x181AEnvironmental SensingSıcaklık, nem, basınç, aydınlatma
0x181CUser DataYaş, kilo, boy, cinsiyet, dinlenme nabzı

Özel 128 bit UUID'ler, bir cihaz benzersiz işlevsellik sağladığında gereklidir. Örneğin, bir akıllı kilit üreticisi XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX formatında bir UUID ile kendi Lock Control hizmetini oluşturur. Böyle bir UUID'nin diğer hizmetlerle çakışmayacağı garantidir, çünkü 128 bit değer alanı pratik olarak tükenmezdir.

128 Bit UUID Formatı

128 bit UUID, standart UUID RFC 4122 formatında yazılır: sekiz onaltılık karakter, tire, dört, tire, dört, tire, dört, tire, on iki karakter. BLE için, Bluetooth SIG UUID'sinin temel kısmının sabit bitlere sahip olduğu bir sürüm kullanılır.

Bluetooth SIG temel UUID'yi tanımlar: 0000XXXX-0000-1000-8000-00805F9B34FB. Standart 16 bit hizmetler için UUID değeri bu maskeye yerleştirilir: örneğin, 0x180F, 0000180F-0000-1000-8000-00805F9B34FB olur. Özel hizmetler, geliştirici tarafından oluşturulan tamamen bağımsız bir UUID kullanır.

Özel UUID oluştururken herhangi bir UUID oluşturucuyu (UUID v4) kullanabilirsiniz. Rastgele bir UUID v4, 122 bit entropi sağlayarak çakışmaları pratik olarak imkansız hale getirir. Özel hizmetler için temel Bluetooth SIG UUID'sinin değiştirilmiş bir sürümünü kullanmayın — bu, spesifikasyonu ihlal eder.

Kodda UUID ile Hizmet Nasıl Bildirilir

UUID ile hizmet bildirimi, GATT sunucusu oluşturulurken Çevresel tarafında yapılır. iOS'ta Core Bluetooth kullanılır, Android'de android.bluetooth.le kullanılır. Her iki yaklaşıma da bakalım.

iOS: Core Bluetooth

Swift'te, UUID belirtilerek CBMutableService aracılığıyla bir hizmet oluşturulur, ardından CBMutableCharacteristic aracılığıyla ona özellikler eklenir.

swift
import CoreBluetooth

// Standard 16-bit UUID
let batteryServiceUUID = CBUUID("180F")

// Custom 128-bit UUID
let customServiceUUID = CBUUID("E20A39F4-73F5-4BC4-A12F-17D1AD07A961")

let service = CBMutableService(
    type: customServiceUUID,
    primary: true
)

// Add characteristics
service.characteristics = [characteristic]

// Publish service via peripheralManager
peripheralManager.add(service)

Android: Bluetooth GATT Sunucusu

Android'de hizmet, BluetoothGattServer ve BluetoothGattService aracılığıyla kaydedilir. UUID, java.util.UUID.fromString aracılığıyla bir dize olarak iletilir.

java
import android.bluetooth.*;

// Custom service UUID
private static final UUID CUSTOM_SERVICE_UUID =
    UUID.fromString("E20A39F4-73F5-4BC4-A12F-17D1AD07A961");

BluetoothGattService service = new BluetoothGattService(
    CUSTOM_SERVICE_UUID,
    BluetoothGattService.SERVICE_TYPE_PRIMARY
);

// Add characteristics
service.addCharacteristic(characteristic);

// Register on GATT server
gattServer.addService(service);

UUID'ye Göre Hizmet Tarama

Service UUID'ye göre tarama, Merkezi cihazın keşfedilen tüm Çevresel birimlere bağlanmadan gerekli hizmeti sağlayan cihazları bulmasını sağlar. Bir BLE reklam paketi, hizmet UUID'lerinin bir listesini içerebilir ve Merkezi cihazın tarama aşamasında cihazları filtrelemesine olanak tanır.

iOS'ta CBCentralManager, hizmet UUID'sine göre filtreyle cihazları tarar. Bu, güç tüketimini azaltır ve gerekli cihazların keşfedilmesini hızlandırır.

swift
import CoreBluetooth

let centralManager = CBCentralManager()

func scanForHeartRateMonitor() {
    let services: [CBUUID] = [
        CBUUID("180D") // Heart Rate Service
    ]
    centralManager.scanForPeripherals(
        withServices: services,
        options: nil
    )
}

// Delegate receives only Heart Rate Service devices
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // peripheral has only devices with UUID 0x180D
}

Android'de UUID'ye göre filtreleme de ScanFilter.Builder aracılığıyla desteklenir. Bu, her cihaza bağlanmadan aramayı daraltmanın verimli bir yoludur.

java
import android.bluetooth.le.*;

ScanFilter filter = new ScanFilter.Builder()
    .setServiceUuid(
        new ParcelUuid(
            UUID.fromString("0000180D-0000-1000-8000-00805F9B34FB")
        )
    )
    .build();

BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(
    Collections.singletonList(filter),
    scanSettings,
    scanCallback
);

Tek Cihazda Birden Fazla Hizmet

Tek bir BLE cihazı aynı anda birden fazla hizmet bildirebilir. Örneğin, bir fitness bilekliği Battery Service (0x180F), Heart Rate Service (0x180D) ve bulutla veri senkronizasyonu için özel bir hizmet içerebilir. Her hizmetin kendi UUID'si ve kendi özellik seti vardır.

Birden fazla hizmetle, reklam paketi sınırlamasını dikkate almak önemlidir. Bir BLE reklam paketi en fazla 31 bayt veri içerebilir. Hizmet UUID'leri çok fazla yer kaplarsa, bazıları reklam paketine sığmayabilir. Bu durumda, Merkezi cihazın talebi üzerine gönderilen ikinci bir paket olan tarama yanıtı kullanılır.

Bluetooth Core Specification 5.4 (2023)'e göre, tek bir GATT sunucusundaki birincil hizmetlerin maksimum sayısı spesifikasyonla sınırlı değildir, ancak pratikte cihaz belleği ve performans gereksinimleriyle sınırlıdır. 256 KB flash belleğe sahip gömülü cihazlar için 5–10'dan fazla hizmet önerilmez.

Sıkça Sorulan Sorular

16 bit UUID ile 128 bit UUID arasındaki fark nedir?

16 bit UUID'ler Bluetooth SIG tarafından standart hizmetler için ayrılmıştır ve reklam paketinde 2 bayt yer kaplar. 128 bit UUID'ler özel hizmetler için kullanılır ve 16 bayt yer kaplar. Seçim, hizmet türüne bağlıdır: standart işlevsellik 16 bit UUID kullanır, benzersiz işlevsellik 128 bit UUID kullanır.

BLE hizmeti için özel 128 bit UUID nasıl oluşturulur?

UUID v4 kullanın — çevrimiçi araçlar, terminal komutu uuidgen veya programlama dili API'niz tarafından oluşturulan rastgele bir UUID. Örnek: Java'da UUID.fromString(UUID.randomUUID().toString()) veya Swift'te UUID().

Özel UUID'yi Bluetooth SIG'ye kaydettirmek gerekli midir?

Hayır, kayıt gerekli değildir. Bluetooth SIG yalnızca 16 bit UUID'leri kaydeder. Özel 128 bit UUID'ler geliştirici tarafından bağımsız olarak oluşturulur ve geniş adres alanı (2^128 kombinasyon) sayesinde benzersizliği garanti eder.

Tek bir hizmet birden fazla özellik içerebilir mi?

Evet, standart bir GATT hizmeti sınırsız sayıda özellik içerebilir. Örneğin, Battery Service, Battery Level (0x2A19) ve Battery Power State (0x2A1A) içerebilir. Her özelliğin kendi UUID'si ve özellik seti vardır.

İki cihaz aynı özel UUID'yi kullanırsa ne olur?

UUID'ler eşleşirse, Merkezi cihaz ek bilgi olmadan bir hizmeti diğerinden ayırt edemez. Rastgele UUID v4 çakışma olasılığı ihmal edilebilir düzeydedir — yaklaşık 5,3 × 10^−37. Rastgele UUID oluşturucu kullanın, örneklerden UUID kopyalamayın.

Özet

  • Service UUID, 16 bit (standart) veya 128 bit (özel) olabilen küresel bir BLE hizmet tanımlayıcısıdır.
  • Bluetooth SIG 60'tan fazla standart UUID tahsis etmiştir — diğer üreticilerin cihazlarıyla uyumluluk için bunları kullanın.
  • 128 bit UUID'ler geliştirici tarafından UUID v4 aracılığıyla oluşturulur ve merkezi bir kayıt olmadan benzersizlik sağlar.
  • Tarama sırasında Merkezi cihaz, Service UUID'ye göre cihazları filtreler, bu da güç tüketimini azaltır ve aramayı hızlandırır.
  • Tek bir cihaz, farklı UUID'lerle birden fazla hizmet bildirebilir — sayı, bellek ve reklam paketiyle sınırlıdır.
  • iOS ve Android'de hizmetler, UUID belirtilerek sırasıyla CBMutableService ve BluetoothGattService aracılığıyla bildirilir.
  • Doğru UUID seçimi uyumluluğu, reklam paketi boyutunu ve GATT profilinin doğru çalışmasını etkiler.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun