BLE

As part of the Dell Edge Gateway IoT-Ready Solutions, IOTech provides a BLE Device Service that supports Bluetooth Low Energy (BLE) Generic Attribute Profile (GATT) devices. This allows Edge Xpert to read data from, and issue commands to, BLE GATT devices.

The BLE Device Service provides a means of integrating BLE device services with Edge Xpert. For more information about BLE, refer to the Bluetooth Special Interest Group (SIG) website.

The Edge Xpert BLE Device Service uses the BlueZ stack, which is the official Linux Bluetooth protocol stack. BlueZ is an open-source project, and is distributed under GNU Public License (GPL). The BlueZ kernel has been part of the official Linux kernel since version 2.4.6. The BlueZ Linux module must be installed on the host to support connections between the Device Service and BLE devices using D-Bus.

Edge Xpert uses the D-Bus protocol to communicate with BlueZ to read and write data with BLE Gatt devices. D-Bus is an Inter-Process Communication (IPC) and Remote Procedure Classing (RPC) mechanism, which was specifically designed for efficient and easy-to-use communication between processes running on the same machine. D-Bus daemon must be running on the host with the Device Service to allow communication between the BLE Device Service and the BlueZ daemon.

The BLE Device Service is designed for the Dell 3002 Gateway. It can be used with any GATT devices that are compliant with Bluetooth 5.0.

The BLE Device Service supports the following key features:

  • Discovery of all BLE devices that meet the following criteria:
    • Within range
    • Advertising connectability
    • Advertising name
  • Connecting to a device that meets the above criteria
  • Reading the value of the specified device characteristic
  • Writing the value of the specified device characteristic
  • Disconnecting from the device

The BLE Device Service supports the following data types:

  • Boolean
  • String
  • Binary
  • UInt8, UInt16, UInt32, UInt64
  • Int8, Int16, Int32, Int64
  • Float32
  • Float64

Note

The BLE Device Service can be embedded with Edge XRT. For further information on implementing Edge XRT with a Device Service, see Edge XRT.

BLE Attributes

The device profile defines what resources are available on a particular device. Ensure that the following profile attributes are defined in the YAML file:

Required Profile Attributes
Attribute Description
serviceUuid The Universally Unique Identifier (UUID) of the service. The UUID format is separated by dashes as illustrated below
characteristicUuid The UUID of the characteristic. The UUID format is separated by dashes as illustrated below
attributes:
   { serviceUuid: "f000aa70-0451-4000-b000-000000000000", characteristicUuid: "f000aa72-0451-4000-b000-000000000000" }

For further information on the characteristic UUID, refer to the Bluetooth device specification.

GATT Characteristics

Some GATT characteristics are Vendor-specific and do not follow the BLE GATT standard data types. Some of these devices return data in a final readable format, such as an Integer or a Float. However, some do not, and the data must be converted to a readable format that can be used with Edge Xpert. To address this, a conversion function can be created, as described in the following topic:

BLE Examples

The following examples illustrate how the BLE Device Service can be used:

These examples assume that the Edge Xpert services are running with at least the --xpert-manager and --device-ble parameters. A suitable command would be as follows:

edgexpert up --xpert-manager --device-ble

Note

All examples require a physical BLE device connected to a compatible gateway. In our examples, we have used the CC2650 Sensor Tag. You must edit the profile and configuration files with the correct values for your device.