RSSI у BLE — шта је то, индикатор сигнала и процена растојања

Аутор: IT Sectr Објављено: 2026-07-16 Време читања: 10 мин

RSSI (Received Signal Strength Indicator) — нумеричка метрика која мери снагу сигнала BLE уређаја у dBm на пријемној страни. Вредност RSSI варира од -30 dBm (уређај у близини) до -100 dBm (на граници откривања). Bluetooth Core Specification 5.4 (2023) дефинише RSSI као опциони параметар доступан у сваком рекламном пакету и пакету података. RSSI се користи за процену растојања (range estimation) и филтрирање уређаја по нивоу сигнала, али је нетачан индикатор: на њега утичу препреке, вишеструка пропагација и тип антене. За прецизно позиционирање примењују се триангулација и Калманов филтер.

Главне тачке

  • RSSI — ниво снаге BLE сигнала у dBm, мерен на пријемној страни при пријему пакета.
  • Опсег RSSI: од -30 dBm (веома јак сигнал) до -100 dBm (граница откривања).
  • RSSI се користи за процену растојања по моделу Path Loss, али тачност износи ±2–5 м у реалним условима.
  • На RSSI утичу: препреке (зидови, људи), вишеструка пропагација и оријентација антене.
  • За побољшање тачности примењују се Калманов филтер, покретни просек и триангулација са више скенера.

Шта је RSSI у BLE?

RSSI (Received Signal Strength Indicator) — мерење снаге радио сигнала које прима BLE пријемник у тренутку пријема пакета. У BLE, RSSI се мери за сваки рекламни пакет (advertising) и сваки пакет података након повезивања. Вредност RSSI је логаритамска скала, где сваки корак од 1 dBm приближно одговара промени снаге сигнала од 1,26 пута.

RSSI је показатељ зависан од хардвера: различити BLE чипови (nRF, TI, Dialog, Broadcom) и различите антене могу приказивати различите RSSI вредности за исти сигнал. Стога је поређење RSSI између различитих уређаја нетачно. Чак и два идентична паметна телефона на истом оперативном систему могу показати разлику од 2–5 dBm за исти beacon.

У рекламном пакету, RSSI се мери за сваки од три канала (37, 38, 39). Вредности могу да се разликују за 3–10 dBm између канала због фреквенцијских сметњи. Модерни BLE стекови пријављују просечан RSSI на свим каналима или RSSI за сваки пакет појединачно. iOS Core Bluetooth пружа просечан RSSI, Android — RSSI последњег пакета.

Опсег вредности RSSI

Типичан опсег RSSI за BLE је од -30 dBm до -100 dBm. Вредности изван ових граница су изузетно ретке: -20 dBm значи да уређај буквално додирује антену скенера, а -105 dBm — потпуно одсуство сигнала. Произвођачи чипова могу ограничити опсег: на пример, nRF52832 пријављује RSSI од -40 до -105 dBm.

RSSI (dBm)Квалитет сигналаПриближно растојањеПрепорука
-30 – -50Одличан0–1 мУређај у близини
-51 – -70Добар1–5 мУ оквиру просторије
-71 – -85Средњи5–15 мПрихватљиво за beacon-е
-86 – -95Слаб15–30 мНепоуздана веза
Испод -95Критичан30+ мНа граници откривања

TX Power Level — снага предајника, која се наводи у рекламном пакету (AD Type 0x0A) и омогућава корекцију процене. RSSI -70 dBm од уређаја са TX Power +4 dBm значи да је сигнал ослабио за 74 dB. Ако TX Power није познат, тачна процена растојања је немогућа. iBeacon укључује TX Power (1 бајт) у структуру Manufacturer Data за калибрацију растојања.

Зависност RSSI од растојања

Модел Path Loss (губици пропагације) користи се за процену растојања на основу RSSI. Основна формула: RSSI = TX_Power - 10 × n × log10(d), где n — коефицијент слабљења (2,0 за слободан простор, 3,0–4,5 за просторије са препрекама), d — растојање у метрима. У пракси, тачност процене је ±2–5 м у реалним условима.

За калибрацију модела потребно је измерити RSSI на познатом растојању (обично 1 м) и израчунати референцу TX Power. У iBeacon-у овај параметар се чува у пакету. У Eddystone-у се користи сличан механизам. Након калибрације може се израчунати растојање: d = 10 ^ ((TX_Power — RSSI) / (10 × n)).

Према Apple Core Bluetooth Programming Guide (2024), тачност процене растојања за iBeacon износи: immediate (<0,5 м) — када је RSSI виши од калибрационог, near (0,5–3 м) — када је RSSI у опсегу 3–6 dB од калибрационог, far (>3 м) — при слабом сигналу. Ниједан математички модел не даје прецизност бољу од ±1 м без додатне обраде.

Фактори који утичу на тачност RSSI

RSSI је шуман показатељ, а његова тачност зависи од многих фактора. Главни извори грешке: препреке (зидови, намештај, људи) слабе сигнал за 3–15 dB свака, вишеструка пропагација (рефлексије од зидова) може појачати сигнал у неким тачкама и ослабити у другим, оријентација антене мења RSSI за 3–10 dB при окретању уређаја.

Људско тело је један од најјачих апсорбера BLE сигнала. Ако се између beacon-а и паметног телефона налази особа, RSSI може пасти за 10–20 dB. Вода у људском телу ефикасно апсорбује радио зрачење на фреквенцији 2,4 GHz. Због тога beacon-и на вратима продавница могу показати различит RSSI за купце различите висине и грађе.

Додатни фактори: Wi-Fi сметње на суседним каналима могу смањити RSSI за 3–5 dB, температура BLE чипа утиче на тачност мерења RSSI (код неких чипова одступање до 1 dB/°C), деградација батерије у beacon-у смањује TX Power, што доводи до нижег RSSI на пријемнику.

Филтрирање и изглађивање RSSI

Сирови RSSI није погодан за прецизна израчунавања — садржи превише шума и изузетака. За добијање стабилне процене растојања примењују се методе филтрирања. Најједноставнија — покретни просек: узима се аритметичка средина последњих N вредности RSSI. N = 5–10 обично је довољно за изглађивање краткотрајних флуктуација.

kotlin
// Калманов филтер за RSSI
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 {
        // Предвиди
        errorCovariance += processNoise

        // Ажурирај
        val kalmanGain =
            errorCovariance /
            (errorCovariance + measurementNoise)

        estimate = estimate +
            kalmanGain * (rawRssi - estimate)

        errorCovariance =
            (1.0 - kalmanGain) * errorCovariance

        return estimate
    }
}

Калманов филтер — напреднија метода која узима у обзир динамику промена RSSI и даје мање кашњење од покретног просека. За стационарне beacon-е (непокретне), покретни просек даје прихватљив резултат. За уређаје у покрету, Калманов филтер је пожељнији јер се брже прилагођава променама. Додатно се може користити Median филтер за одбацивање изузетака.

Добијање RSSI у iOS и Android

iOS Core Bluetooth пружа RSSI кроз својство peripheral.rssi (NSNumber) након завршетка читања RSSI. За добијање RSSI рекламног пакета користите advertisementData[CBAdvertisementDataRSSIKey]. iOS враћа RSSI као просечну вредност на три канала. За континуирано праћење RSSI позивајте readRSSI са интервалом не чешћим од 1 пута у секунди.

swift
// Добиј RSSI на iOS
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    let signalStrength = Int(truncating: RSSI)

    // Филтрирај слабе сигнале
    guard signalStrength > -90 else {
        return
    }

    print("Уређај " +
          "\(peripheral.name ?? "unknown") " +
          "RSSI: \(signalStrength) dBm")
}

Android пружа RSSI кроз callback onScanResult: result.getRssi(). Вредност RSSI је RSSI последњег рекламног пакета (не просек). За стабилна очитавања потребно је акумулирати више вредности и применити филтрирање. Android такође пружа TX Power Level кроз result.getScanRecord().getTxPowerLevel(), ако се преноси у рекламном пакету.

kotlin
// Добиј RSSI на Android
private val scanCallback = object : ScanCallback() {

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

        // Примени Калманов филтер
        val filtered = kalmanFilter.
            filter(rssi.toDouble())

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

При развоју апликација које користе RSSI за позиционирање, узмите у обзир: у iOS-у вредности RSSI су стабилније захваљујући хардверској калибрацији, у Android-у — шумније и зависне од произвођача уређаја. За вишеплатформске пројекте препоручује се имплементација филтрирања на страни апликације са подесивим параметрима за сваку платформу.

Често постављана питања

Може ли се тачно одредити растојање на основу RSSI?

Не, RSSI даје само приближну процену растојања са тачношћу ±2–5 м у реалним условима. За прецизно позиционирање потребна је триангулација са више скенера, Калманов филтер и узимање у обзир TX Power предајника.

Зашто се RSSI мења чак и када се уређај не помера?

Због вишеструке пропагације и флуктуација радио сигнала. Рефлексије од зидова и предмета стварају интерференцију при којој се сигнал час појачава, час слаби. Промене RSSI од 5–10 dB на непокретном уређају су нормална појава.

Колико често се може читати RSSI на iOS-у?

iOS препоручује позивање readRSSI не чешће од 1 пута у секунди. Пречести захтеви могу довести до пропуштања пакета података. За праћење RSSI током скенирања користите CBAdvertisementDataRSSIKey, који је доступан за сваки рекламни пакет.

Шта је TX Power Level и како је повезан са RSSI?

TX Power Level — снага предајника у dBm наведена у рекламном пакету. RSSI + TX Power = укупно слабљење сигнала на путу од предајника до пријемника. Познавајући TX Power, може се прецизније проценити растојање: RSSI - TX Power = Path Loss (губици на путањи).

Који метод филтрирања RSSI је најбољи за beacon-е?

За стационарне beacon-е — покретни просек са прозором од 5–10 вредности. За уређаје у покрету — Калманов филтер са малим шумом процеса (0,01–0,05). За одбацивање изузетака додајте Median филтер који одсеца вредности изван 2 стандардне девијације.

Закључак

  • RSSI — показатељ снаге BLE сигнала у dBm, мерен на пријемној страни при пријему сваког пакета.
  • Опсег вредности: од -30 dBm (одличан сигнал) до -100 dBm (слаб сигнал на граници откривања).
  • RSSI омогућава грубу процену растојања са тачношћу ±2–5 м, али није прецизан даљиномер због шума и сметњи.
  • Главни извори грешке: препреке (зидови, људи), вишеструка пропагација, оријентација антене и Wi-Fi сметње.
  • За стабилну процену растојања примењују се Калманов филтер, покретни просек и Median филтер за одбацивање изузетака.
  • У iOS-у RSSI је просек три канала, у Android-у — вредност последњег пакета, што захтева филтрирање на страни апликације.
  • TX Power Level у рекламном пакету заједно са RSSI даје Path Loss — укупно слабљење сигнала за прецизнију процену растојања.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође