BlueZ пример Гатт-сервер

1

Я изучаю BlueZ и BLE. В каталоге bluez/test находится "пример сервера gatt" на python. Я прочитал код и почти понял, как он работает, но что-то не понятно. Например, существует этот метод, который уведомляет об изменении значения характеристики (в данном примере это значение уровня заряда батареи):

    def notify_battery_level(self):
    if not self.notifying:
        return
    self.PropertiesChanged(
            GATT_CHRC_IFACE,
            { 'Value': [dbus.Byte(self.battery_lvl)] }, [])

Метод PropertiesChanged определен так:

@dbus.service.signal(DBUS_PROP_IFACE,
                     signature='sa{sv}as')
def PropertiesChanged(self, interface, changed, invalidated):
    pass

Я начинаю рекламу и запускаю этот пример, затем использую на своем смартфоне приложение сканера BLE для считывания характеристики (в данном случае уровня заряда батареи). Ну, self.battery_lvl - это целое число (например, 24), но на самом сканере в качестве значения характеристики я вижу "уровень заряда батареи 24%". Проблема в том, что нигде в коде не добавлен "% уровень заряда батареи" к self.battery_lvl (просто 24). Так, где эта дополнительная информация добавлена? Извините за мой английский. Если вам нужна дополнительная информация, пожалуйста, сообщите мне

  • 0
    В приложении для смартфона добавлен знак «%».
Теги:
server
bluetooth-lowenergy
bluez
gatt

1 ответ

0
Лучший ответ

В примере уровня заряда батареи используется UUID службы Bluetooth (0x180F) и формат атрибута (см. Это). Таким образом, когда приложение для мобильного телефона находит службу и видит UUID, оно будет знать, что это служба батареи, и добавит% при чтении значения. Это является основным преимуществом при использовании принятых услуг/характеристик по сравнению с пользовательскими, вы можете добавить интеллектуальные данные на удаленном конце, потому что локальный конец имеет предопределенный формат. Обратите внимание, что это также относится к принятой службе/характеристике сердечного ритма (приложение сразу добавит уд./Мин.), Принятой службе температуры/характеристике (приложение сразу добавит (° C) и т.д.

Для полного списка принятых услуг и характеристик, пожалуйста, смотрите эти ссылки: -

Для дальнейшего чтения по этой теме: -

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню