QtRemoteObjects Bluetooth LE Example

Using QtBluetooth Low Energy (BT LE or BLE for short) as a transport medium with Qt Remote Objects.

This is achieved by wrapping the bluetooth low energy transport logic in a QIODevice.

The example consists of a client and server application which communicate over the bluetooth low energy radio.

The server-side is a simple heater object which is either turned ON (heats) or OFF (cools). The temperature changes periodically and this temperature is shown by the client-side GUI. This changing temperature value flows from the server to client as remote object property. The client-side can control the ON/OFF status of the server-side heater object. This data flows similarly as a remote object property.

Overview

Bluetooth Low Energy is inherently a client/server architecture, where server advertises its services and client discovers them, after which the data can be transferred.

The following Figure illustrates the main steps when running the example:

"Main phases when starting the example"

Data flow

The data flows over the Bluetooth Low Energy medium. This is implemented with two GATT characteristics, one for each direction. This is illustrated by the following Figure:

"BT LE IO Device"

Known limitations

The example relies on QLowEnergyController::connected() and QLowEnergyController::disconnected() signals to detect client connection and disconnection. These signals are not always reliable on the server (peripheral) side on all platforms. This is typically not a problem when connecting for the first time, but may be an issue on subsequent reconnections if the server is not restarted.

Example project @ code.qt.io

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.