Python Bluetooth Advertising выходит из строя, когда я включаю какие -либо производственные данныеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Bluetooth Advertising выходит из строя, когда я включаю какие -либо производственные данные

Сообщение Anonymous »

Я использую Raspberry Pi 3 с свежей установкой Raspberry Pi Os Lite 32-битный. У меня есть ключ Bluetooth, который поддерживает низкую энергию Bluetooth. Я использую Python 3.11.2. < /P>
Я пытаюсь транслировать рекламу Bluetooth. Когда я запускаю свой сценарий Python, я вижу рекламу, используя телефонные приложения LightBlue или NRF Connect. Однако, как только я добавляю производственные данные, я больше не могу видеть рекламу.

Код: Выделить всё

import dbus
import dbus.mainloop.glib
import dbus.service
from gi.repository import GLib

MANUFACTURER_ID = 0x0397  # LEGO
PAYLOAD_BYTES = b'\x10\x06\x18\x1a\xb6'

class Advertisement(dbus.service.Object):
PATH_BASE = '/org/bluez/example/advertisement'

def __init__(self, bus, index):
self.path = self.PATH_BASE + str(index)
self.bus = bus
super().__init__(bus, self.path)

def get_path(self):
return dbus.ObjectPath(self.path)

def get_properties(self):
return {
'org.bluez.LEAdvertisement1': {
'Type': 'peripheral',
'LocalName': 'MyBrickPi',

# 'ManufacturerData': {
# dbus.Array([dbus.Byte(0x00)], signature='y')
# dbus.UInt16(0x0397): dbus.Array([dbus.Byte(0x01)], signature='y')
# dbus.UInt16(0x0397): dbus.Array([dbus.Byte(b) for b in b'\x10\x06\x18\x1a\xb6'], signature='y')
# dbus.UInt16(0xFFFF): dbus.Array([dbus.Byte(0x01)], signature='y')
# dbus.UInt16(0x0000): dbus.Array([dbus.Byte(0x01)], signature='y')
# {dbus.UInt16(0x0000): [16, 5, 7, 24, 186, 175, 161]}
# [{16: [[b'4a04389']]}]
# },
# 'IncludeTxPower': True,
# 'Appearance': dbus.UInt16(0),
}
}

@dbus.service.method('org.freedesktop.DBus.Properties',
in_signature='s',
out_signature='a{sv}')
def GetAll(self, interface):
return self.get_properties()['org.bluez.LEAdvertisement1']

@dbus.service.method('org.bluez.LEAdvertisement1',
in_signature='',
out_signature='')
def Release(self):
print('Advertisement released')

def main():
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()

adapter_path = '/org/bluez/hci0'
adapter = bus.get_object('org.bluez', adapter_path)
adapter_props = dbus.Interface(adapter, 'org.freedesktop.DBus.Properties')

# Power on adapter if off
try:
powered = adapter_props.Get('org.bluez.Adapter1', 'Powered')
if not powered:
adapter_props.Set('org.bluez.Adapter1', 'Powered', dbus.Boolean(1))
except Exception as e:
print(f"Failed to get/set adapter power state: {e}")
return

ad_manager = dbus.Interface(adapter, 'org.bluez.LEAdvertisingManager1')

advertisement = Advertisement(bus, 0)

def on_success():
print("Advertising started.")

def on_error(error):
print(f"Failed to advertise: {error}")

ad_manager.RegisterAdvertisement(advertisement.get_path(), {},
reply_handler=on_success,
error_handler=on_error)

try:
GLib.MainLoop().run()
except KeyboardInterrupt:
print("\nStopping advertisement...")
try:
ad_manager.UnregisterAdvertisement(advertisement)
except Exception:
print("Advertisement was not registered or already unregistered.")
advertisement.remove_from_connection()

if __name__ == '__main__':
main()
Функция get_properties Возвращает рекламные данные. В настоящее время прокомментируется производители . Как только я внесу это обратно, ошибок нет, но я не могу обнаружить рекламу с помощью LightBlue или NRF Connect. Я оставил в ряде разных форматов для производственных данных, которые я пробовал. И на данный момент мне все равно, каковы вторые данные, просто любая строка ASCII. Я просто хочу что -нибудь работать.

Подробнее здесь: https://stackoverflow.com/questions/796 ... uring-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»