BLE-də RSSI — bu nədir, siqnal göstəricisi və məsafə qiymətləndirməsi

Müəllif: IT Sectr Dərc olunub: 2026-07-16 Oxuma vaxtı: 10 dəq

RSSI (Received Signal Strength Indicator) — qəbuledici tərəfdə BLE cihazının siqnal gücünü dBm ilə ölçən ədədi metrikadır. RSSI dəyəri -30 dBm (cihaz yaxınlıqda) ilə -100 dBm (aşkarlanma həddində) arasında dəyişir. Bluetooth Core Specification 5.4 (2023) RSSI-ni hər reklam paketində və məlumat paketində mövcud olan isteğe bağlı parametr kimi təyin edir. RSSI məsafə qiymətləndirməsi (range estimation) və cihazları siqnal səviyyəsinə görə filtrləmək üçün istifadə olunur, lakin qeyri-dəqiq göstəricidir: ona maneələr, çoxşüalı yayılma və antenna növü təsir edir. Dəqiq mövqeləndirmə üçün trianqulyasiya və Kalman filtrasiyası tətbiq olunur.

Əsas məqamlar

  • RSSI — paket qəbulu zamanı qəbuledici tərəfdə ölçülən dBm ilə BLE siqnal gücü səviyyəsi.
  • RSSI diapazonu: -30 dBm (çox güclü siqnal) ilə -100 dBm (aşkarlanma həddi) arasında.
  • RSSI məsafə qiymətləndirməsi üçün Path Loss modelinə əsasən istifadə olunur, lakin real şəraitdə dəqiqlik ±2–5 m təşkil edir.
  • RSSI-yə təsir edənlər: maneələr (divarlar, insanlar), çoxşüalı yayılma və antenna oriyentasiyası.
  • Dəqiqliyi artırmaq üçün Kalman filtrasiyası, sürüşən orta və bir neçə skanerdən trianqulyasiya tətbiq olunur.

BLE-də RSSI nədir?

RSSI (Received Signal Strength Indicator) — BLE qəbuledicisi tərəfindən paket qəbulu anında ölçülən radio siqnal gücüdür. BLE-də RSSI hər reklam paketi (advertising) və qoşulmadan sonra hər məlumat paketi üçün ölçülür. RSSI dəyəri loqarifmik şkala olub, burada 1 dBm-lik hər addım siqnal gücünün təxminən 1,26 dəfə dəyişməsinə uyğun gəlir.

RSSI aparatdan asılı göstəricidir: müxtəlif BLE çipləri (nRF, TI, Dialog, Broadcom) və müxtəlif antenalar eyni siqnal üçün fərqli RSSI dəyərləri göstərə bilər. Buna görə müxtəlif cihazlar arasında RSSI müqayisəsi düzgün deyil. Hətta eyni OS-də olan iki eyni smartfon eyni beacon üçün 2–5 dBm fərq göstərə bilər.

Reklam paketində RSSI üç kanalın hər biri üçün ölçülür (37, 38, 39). Dəyərlər tezlik müdaxiləsi səbəbindən kanallar arasında 3–10 dBm fərqlənə bilər. Müasir BLE stack-ləri bütün kanallar üzrə orta RSSI və ya hər paket üçün ayrıca RSSI bildirir. iOS Core Bluetooth orta RSSI təqdim edir, Android — son paketin RSSI-sini.

RSSI dəyər diapazonu

BLE üçün tipik RSSI diapazonu -30 dBm ilə -100 dBm arasındadır. Bu hədlərdən kənar dəyərlər olduqca nadirdir: -20 dBm cihazın skaner antennasına toxunduğunu, -105 dBm isə siqnalın tam olmamasını bildirir. Çip istehsalçıları diapazonu məhdudlaşdıra bilər: məsələn, nRF52832 -40 ilə -105 dBm arasında RSSI bildirir.

RSSI (dBm)Siqnal keyfiyyətiTəxmini məsafəTövsiyə
-30 – -50Əla0–1 mCihaz yaxınlıqda
-51 – -70Yaxşı1–5 mOtaq daxilində
-71 – -85Orta5–15 mBeaconlar üçün məqbul
-86 – -95Zəif15–30 mEtibarsız qoşulma
-95-dən aşağıKritik30+ mAşkarlanma həddində

TX Power Level — reklam paketində (AD Type 0x0A) göstərilən ötürücü gücü olub qiymətləndirməni korrektə etməyə imkan verir. TX Power +4 dBm olan cihazdan -70 dBm RSSI siqnalın 74 dB zəiflədiyini bildirir. TX Power məlum deyilsə, dəqiq məsafə qiymətləndirməsi mümkün deyil. iBeacon məsafə kalibrasiyası üçün Manufacturer Data strukturunda TX Power (1 bayt) saxlayır.

RSSI-nin məsafədən asılılığı

Path Loss modeli (yayılma itkiləri) RSSI əsasında məsafəni qiymətləndirmək üçün istifadə olunur. Əsas düstur: RSSI = TX_Power - 10 × n × log10(d), burada n — zəifləmə əmsalı (açıq məkan üçün 2,0, maneəli otaqlar üçün 3,0–4,5), d — metrlə məsafə. Praktikada real şəraitdə qiymətləndirmə dəqiqliyi ±2–5 m təşkil edir.

Modeli kalibrləmək üçün RSSI-ni məlum məsafədə (adətən 1 m) ölçmək və TX Power istinadını hesablamaq lazımdır. iBeacon-da bu parametr paketdə saxlanılır. Eddystone-da oxşar mexanizm istifadə olunur. Kalibrasiyadan sonra məsafəni hesablamaq olar: d = 10 ^ ((TX_Power — RSSI) / (10 × n)).

Apple Core Bluetooth Programming Guide (2024)-ə görə, iBeacon üçün məsafə qiymətləndirmə dəqiqliyi: immediate (<0,5 m) — RSSI kalibrasiya dəyərindən yüksək olduqda, near (0,5–3 m) — RSSI kalibrasiya dəyərindən 3–6 dB aralığında olduqda, far (>3 m) — zəif siqnal olduqda. Heç bir riyazi model əlavə emal olmadan ±1 m-dən yaxşı dəqiqlik vermir.

RSSI dəqiqliyinə təsir edən amillər

RSSI — səs-küylü göstəricidir və onun dəqiqliyi bir çox amillərdən asılıdır. Əsas xəta mənbələri: maneələr (divarlar, mebel, insanlar) hər biri siqnalı 3–15 dB zəiflədir, çoxşüalı yayılma (divarlardan əks olunmalar) bəzi nöqtələrdə siqnalı gücləndirə, bəzilərində zəiflədə bilər, antenna oriyentasiyası cihazın döndərilməsi ilə RSSI-ni 3–10 dB dəyişir.

İnsan bədəni BLE siqnalının ən güclü uducularından biridir. Beacon və smartfon arasında insan varsa, RSSI 10–20 dB düşə bilər. İnsan bədənindəki su 2,4 GHz tezliyində radio şüalanmanı effektiv şəkildə udur. Buna görə mağaza qapılarındakı beaconlar müxtəlif boy və bədən quruluşlu müştərilər üçün fərqli RSSI göstərə bilər.

Əlavə amillər: qonşu kanallardakı Wi-Fi müdaxiləsi RSSI-ni 3–5 dB azalda bilər, BLE çipinin temperatursi RSSI ölçmə dəqiqliyinə təsir edir (bəzi çiplərdə 1 dB/°C sürüşmə), beaconda batareyanın deqradasiyası TX Power-i azaldır ki, bu da qəbuledicidə aşağı RSSI-yə səbəb olur.

RSSI filtrasiyası və hamarlaşdırılması

Xam RSSI dəqiq hesablamalar üçün yararsızdır — çoxlu səs-küy və kənar dəyərlər ehtiva edir. Sabit məsafə qiymətləndirməsi əldə etmək üçün filtrasiya metodları tətbiq olunur. Ən sadəsi — sürüşən orta: son N RSSI dəyərinin arifmetik ortası götürülür. N = 5–10 adətən qısamüddətli dəyişmələri hamarlaşdırmaq üçün kifayətdir.

kotlin
// RSSI üçün Kalman filtri
class RssiKalmanFilter(
    private val processNoise: Double = 0.01,
    private val measurementNoise: Double = 1.0
) {

    private var estimate: Double = 0.0
    private var errorCovariance: Double = 1.0

    fun filter(rawRssi: Double): Double {
        // Proqnozlaşdır
        errorCovariance += processNoise

        // Yenilə
        val kalmanGain =
            errorCovariance /
            (errorCovariance + measurementNoise)

        estimate = estimate +
            kalmanGain * (rawRssi - estimate)

        errorCovariance =
            (1.0 - kalmanGain) * errorCovariance

        return estimate
    }
}

Kalman filtri — RSSI dəyişmə dinamikasını nəzərə alan və sürüşən ortadan daha az gecikmə verən daha qabaqcıl metoddur. Stasionar beaconlar (hərəkətsiz) üçün sürüşən orta məqbul nəticə verir. Hərəkət edən cihazlar üçün Kalman filtri daha üstündür, çünki dəyişikliklərə daha tez uyğunlaşır. Əlavə olaraq, kənar dəyərləri atmaq üçün Median filtrindən istifadə etmək olar.

iOS və Android-də RSSI əldə etmək

iOS Core Bluetooth RSSI oxunuşu tamamlandıqdan sonra peripheral.rssi (NSNumber) xassəsi vasitəsilə RSSI təqdim edir. Reklam paketinin RSSI-sini əldə etmək üçün advertisementData[CBAdvertisementDataRSSIKey] istifadə edin. iOS RSSI-ni üç kanal üzrə orta dəyər kimi qaytarır. Davamlı RSSI monitorinqi üçün readRSSI-ni saniyədə 1 dəfədən tez çağırmayın.

swift
// iOS-da RSSI əldə edin
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    let signalStrength = Int(truncating: RSSI)

    // Zəif siqnalları filtrlə
    guard signalStrength > -90 else {
        return
    }

    print("Cihaz " +
          "\(peripheral.name ?? "unknown") " +
          "RSSI: \(signalStrength) dBm")
}

Android RSSI-ni onScanResult call-back-i vasitəsilə təqdim edir: result.getRssi(). RSSI dəyəri son reklam paketinin RSSI-sidir (orta deyil). Sabit göstəricilər üçün bir neçə dəyər toplamaq və filtrasiya tətbiq etmək lazımdır. Android həmçinin TX Power Level-i result.getScanRecord().getTxPowerLevel() vasitəsilə təqdim edir, əgər reklam paketində ötürülürsə.

kotlin
// Android-də RSSI əldə edin
private val scanCallback = object : ScanCallback() {

    override fun onScanResult(
        callbackType: Int,
        result: ScanResult
    ) {
        val rssi = result.rssi
        val txPower = result.scanRecord?.
            txPowerLevel ?: -128

        // Kalman filtrini tətbiq et
        val filtered = kalmanFilter.
            filter(rssi.toDouble())

        Log.d("BLEScanner",
            "RSSI: $rssi, " +
            "Filtered: $filtered, " +
            "TX: $txPower")
    }
}

RSSI-dən mövqeləndirmə üçün istifadə edən tətbiqlər hazırlayarkən nəzərə alın: iOS-da RSSI dəyərləri aparat kalibrasiyası sayəsində daha sabitdir, Android-də — daha səs-küylü və cihaz istehsalçısından asılıdır. Çoxplatformalı layihələr üçün hər platforma üçün konfiqurasiya olunan parametrlərlə tətbiq tərəfində filtrasiya tətbiq etmək tövsiyə olunur.

Tez-tez verilən suallar

RSSI əsasında məsafəni dəqiq müəyyən etmək olarmı?

Xeyr, RSSI yalnız təxmini qiymətləndirmə verir, dəqiqlik real şəraitdə ±2–5 m təşkil edir. Dəqiq mövqeləndirmə üçün bir neçə skanerdən trianqulyasiya, Kalman filtrasiyası və ötürücünün TX Power-inin nəzərə alınması tələb olunur.

Niyə cihaz hərəkət etməsə belə RSSI dəyişir?

Çoxşüalı yayılma və radio siqnalının dəyişmələri səbəbindən. Divarlardan və əşyalardan əks olunmalar siqnalın bəzən gücləndiyi, bəzən zəiflədiyi interferensiya yaradır. Hərəkətsiz cihazda RSSI-nin 5–10 dB dəyişməsi normal haldır.

iOS-da RSSI nə qədər tez-tez oxuna bilər?

iOS readRSSI-nin saniyədə 1 dəfədən tez çağırılmamasını tövsiyə edir. Çox tez-tez sorğular məlumat paketlərinin itkisinə səbəb ola bilər. Skaner zamanı RSSI monitorinqi üçün hər reklam paketi üçün mövcud olan CBAdvertisementDataRSSIKey istifadə edin.

TX Power Level nədir və RSSI ilə necə əlaqəlidir?

TX Power Level — reklam paketində göstərilən ötürücü gücü dBm ilə. RSSI + TX Power = ötürücüdən qəbulediciyə qədər siqnalın ümumi zəifləməsi. TX Power-i bilməklə məsafəni daha dəqiq qiymətləndirmək olar: RSSI - TX Power = Path Loss (yolda itkilər).

Beaconlar üçün hansı RSSI filtrasiya metodu daha yaxşıdır?

Stasionar beaconlar üçün — 5–10 dəyər pəncərəsi ilə sürüşən orta. Hərəkət edən cihazlar üçün — kiçik proses səs-küyü ilə (0,01–0,05) Kalman filtri. Kənar dəyərləri atmaq üçün 2 standart kənarlaşmadan kənar dəyərləri kəsən Median filtri əlavə edin.

Nəticə

  • RSSI — hər paketin qəbulu zamanı qəbuledici tərəfdə ölçülən dBm ilə BLE siqnal gücü göstəricisi.
  • Dəyər diapazonu: -30 dBm (əla siqnal) ilə -100 dBm (aşkarlanma həddində zəif siqnal).
  • RSSI məsafəni ±2–5 m dəqiqliklə təxminən qiymətləndirməyə imkan verir, lakin səs-küy və müdaxilələr səbəbindən dəqiq məsafəölçən deyil.
  • Əsas xəta mənbələri: maneələr (divarlar, insanlar), çoxşüalı yayılma, antenna oriyentasiyası və Wi-Fi müdaxiləsi.
  • Sabit məsafə qiymətləndirməsi üçün Kalman filtrasiyası, sürüşən orta və kənar dəyərləri atmaq üçün Median filtri tətbiq olunur.
  • iOS-da RSSI üç kanalın ortası, Android-də — son paketin dəyəri, bu da tətbiq tərəfində filtrasiya tələb edir.
  • Reklam paketində TX Power Level RSSI ilə birlikdə Path Loss — məsafənin daha dəqiq qiymətləndirilməsi üçün ümumi siqnal zəifləməsini verir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun