コード例 #1
0
def create_mqtt_proxy(client, newline):

    bus = dbus.SystemBus()
    app = localGATT.Application()
    srv = localGATT.Service(1, MQTT_SRVC, True)

    receive = Receive(srv, MQTT_RX_CHRC, client, newline)
    transmit = Transmit(srv, MQTT_TX_CHRC, client)

    app.add_managed_object(srv)
    app.add_managed_object(receive)
    app.add_managed_object(transmit)

    srv_mng = GATT.GattManager(adapter.list_adapters()[0])
    srv_mng.register_application(app, {})

    dongle = adapter.Adapter(adapter.list_adapters()[0])
    if not dongle.powered:  # bring hci0 up if down
        dongle.powered = True

    advert = advertisement.Advertisement(1, 'peripheral')
    advert.service_UUIDs = [MQTT_SRVC]

    ad_manager = advertisement.AdvertisingManager(dongle.address)
    ad_manager.register_advertisement(advert, {})
コード例 #2
0
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        self.srv = localGATT.Service(1, SERVICE_UUID, True)
        self.light = localGATT.Characteristic(1, LIGHT_UUID, self.srv, [0xAA],
                                              True, ['read', 'notify'])
        self.switch = localGATT.Characteristic(2, SWITCH_UUID, self.srv,
                                               [0xBB], True,
                                               ['read', 'write', 'notify'])

        self.light.service = self.srv.path
        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.light)
        self.app.add_managed_object(self.switch)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral')
        advert.service_UUIDs = [SERVICE_UUID]
        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.path)
        ad_manager.register_advertisement(advert, {})
コード例 #3
0
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        self.srv = localGATT.Service(1, SERVICE_UUID, True)

        self.charc = localGATT.Characteristic(1, CHAR_UUID, self.srv, [0xBB],
                                              True, ['write'])

        self.charc.service = self.srv.path
        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.charc)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral')

        advert.service_UUIDs = [SERVICE_UUID]
        eddystone_data = tools.url_to_advert(WEB_BLINKT, 0x10, TX_POWER)
        advert.service_data = {EDDYSTONE: eddystone_data}
        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.path)
        ad_manager.register_advertisement(advert, {})
コード例 #4
0
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        self.srv = localGATT.Service(1, SVC_UUID, True)

        self.idsCharc = DeviceIDsChrc(self.srv)
        self.attrCharc = DeviceAttrChrc(self.srv)

        self.idsCharc.service = self.srv.path
        self.attrCharc.service = self.srv.path

        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.idsCharc)
        self.app.add_managed_object(self.attrCharc)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral')

        advert.service_UUIDs = [SVC_UUID]
        # eddystone_data = tools.url_to_advert(WEB_BLINKT, 0x10, TX_POWER)
        # advert.service_data = {EDDYSTONE: eddystone_data}
        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.address)
        ad_manager.register_advertisement(advert, {})
コード例 #5
0
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        self.srv = localGATT.Service(
            1, HR_UUID,
            True)  # HR_UUID = '0000180d-0000-1000-8000-00805f9b34fb'

        self.charc = HeartRateMeasurementChrc(self.srv)

        self.charc.service = self.srv.path

        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.charc)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral', 'HeartRate')
        #        advert.appearance = [0x0341]  # Actually will give Error: Failed to register advertisement: org.bluez.Error.Failed: Failed to register advertisement
        advert.service_UUIDs = [HR_UUID]

        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.address)
        ad_manager.register_advertisement(advert, {})
コード例 #6
0
ファイル: veering.py プロジェクト: jguodev/smart-cane
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        '''
            service_id: 1
            uuid: VEERING_SRVC
            primary: True
        '''
        self.srv = localGATT.Service(1, VEERING_SRVC, True)
        self.charc = VeeringChrc(self.srv)
        self.charc.service = self.srv.path

        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.charc)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        self.advert = advertisement.Advertisement(1, 'peripheral')

        self.advert.service_UUIDs = [VEERING_SRVC]
        if not self.dongle.powered:
            self.dongle.powered = True
        self.ad_manager = advertisement.AdvertisingManager(self.dongle.path)
        self.ad_manager.register_advertisement(self.advert, {})
コード例 #7
0
    def __init__(self, reading_callback):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        self.srv = localGATT.Service(1, AQI_PM_SRVC, True)

        self.pm_2_5_charc = AQIChrc(1, PM_2_5_CHRC, self.srv, 0.0, 'PM 2.5',
                                    reading_callback)
        self.pm_2_5_charc.service = self.srv.path
        self.pm_10_charc = AQIChrc(2, PM_10_CHRC, self.srv, 0.0, 'PM 10',
                                   reading_callback)
        self.pm_10_charc.service = self.srv.path

        pm_2_5_format_value = dbus.Array([
            dbus.Byte(0x0E),
            dbus.Byte(0xFE),
            dbus.Byte(0x2F),
            dbus.Byte(0x27),
            dbus.Byte(0x01),
            dbus.Byte(0x00),
            dbus.Byte(0x00)
        ])

        pm_10_format_value = dbus.Array([
            dbus.Byte(0x0E),
            dbus.Byte(0xFE),
            dbus.Byte(0x2F),
            dbus.Byte(0x27),
            dbus.Byte(0x01),
            dbus.Byte(0x00),
            dbus.Byte(0x00)
        ])

        self.pm_2_5_format = localGATT.Descriptor(4, PM_2_5_FMT_DSCP,
                                                  self.pm_2_5_charc,
                                                  pm_2_5_format_value,
                                                  ['read'])

        self.pm_10_format = localGATT.Descriptor(5, PM_10_FMT_DSCP,
                                                 self.pm_10_charc,
                                                 pm_10_format_value, ['read'])

        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.pm_2_5_charc)
        self.app.add_managed_object(self.pm_2_5_format)
        self.app.add_managed_object(self.pm_10_charc)
        self.app.add_managed_object(self.pm_10_format)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral')

        advert.service_UUIDs = [AQI_PM_SRVC]
        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.address)
        ad_manager.register_advertisement(advert, {})
コード例 #8
0
 def __init__(self, adapter_address, local_name=None, appearance=None):
     self.app = localGATT.Application()
     self.srv_mng = GATT.GattManager(adapter_address)
     self.services = []
     self.characteristics = []
     self.descriptors = []
     self.primary_services = []
     self.dongle = adapter.Adapter(adapter_address)
     self.local_name = local_name
     self.appearance = appearance
     self.advert = advertisement.Advertisement(1, 'peripheral')
     self.ad_manager = advertisement.AdvertisingManager(adapter_address)
     self.mainloop = async_tools.EventLoop()
コード例 #9
0
    def __init__(self, adapter_obj=None):
        """Default initialiser.

        Creates the BLE beacon object
        If an adapter object exists then give it as an optional argument
        If an adapter object is not given then the first adapter found is used
        :param adapter_obj: Optional Python adapter object.
        """
        self.dongle = None
        if adapter_obj is None:
            self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        else:
            self.dongle = adapter_obj

        self.broadcaster = advertisement.Advertisement(1, 'broadcast')
コード例 #10
0
def advertise_beacon():
    dongle = adapter.Adapter('/org/bluez/hci0')

    advertiser0 = advertisement.Advertisement(0, 'peripheral')

    advertiser0.service_UUIDs = ['FEAA']
    advertiser0.service_data = {
        'FEAA': [0x10, 0x08, 0x0E, 70, 97, 116, 79, 110, 101]
    }

    if not dongle.powered:
        dongle.powered = True
    ad_manager = advertisement.AdvertisingManager(dongle.path)
    ad_manager.register_advertisement(advertiser0, {})

    return ad_manager, advertiser0
コード例 #11
0
    def __init__(self):
        self.mainloop = async_tools.EventLoop()

        self.app = localGATT.Application()
        self.srv = localGATT.Service(1, CPU_TMP_SRVC, True)

        self.charc = TemperatureChrc(self.srv)

        self.charc.service = self.srv.path

        cpu_format_value = dbus.Array([dbus.Byte(0x0E),
                                       dbus.Byte(0xFE),
                                       dbus.Byte(0x2F),
                                       dbus.Byte(0x27),
                                       dbus.Byte(0x01),
                                       dbus.Byte(0x00),
                                       dbus.Byte(0x00)])
        self.cpu_format = localGATT.Descriptor(4,
                                               CPU_FMT_DSCP,
                                               self.charc,
                                               cpu_format_value,
                                               ['read'])

        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.charc)
        self.app.add_managed_object(self.cpu_format)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral')

        advert.service_UUIDs = [CPU_TMP_SRVC]
        advert.local_name = 'CPU Temp'
        advert.appearance = 1344
        # eddystone_data = tools.url_to_advert(WEB_BLINKT, 0x10, TX_POWER)
        # advert.service_data = {EDDYSTONE: eddystone_data}
        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.address)
        ad_manager.register_advertisement(advert, {})
コード例 #12
0
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.app = localGATT.Application()
        self.srv = localGATT.Service(1, UART_SRVC, True)

        self.receive = UartRxChrc(self.srv)
        self.transmit = UartTxChrc(self.srv, self.receive)

        self.app.add_managed_object(self.srv)
        self.app.add_managed_object(self.receive)
        self.app.add_managed_object(self.transmit)

        self.srv_mng = GATT.GattManager(adapter.list_adapters()[0])
        self.srv_mng.register_application(self.app, {})

        self.dongle = adapter.Adapter(adapter.list_adapters()[0])
        advert = advertisement.Advertisement(1, 'peripheral')

        advert.service_UUIDs = [UART_SRVC]
        if not self.dongle.powered:
            self.dongle.powered = True
        ad_manager = advertisement.AdvertisingManager(self.dongle.address)
        ad_manager.register_advertisement(advert, {})