This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Initiation and change of Bluetooth Mesh provisioning

Hi!

I'd like some help in understanding the initiation of provisioning. We would like to have something along the lines of:

  1. Using a mobile app, a user receives a list of discovered, unprovisioned lamps.
  2. The user taps a first lamp in the list, the physical lamp flashes briefly.
  3. The user taps a second lamp in the list, this physical lamp flashes briefly.
  4. The user presses and holds on a third lamp in the list, this lamp flashes briefly and then keeps on flashing.
  5. ...

My interpretation:

  1. The app receives "Unprovisioned Device beacons" from the unprovisioned devices and constructs the list (spec 5.4.2.1)
  2. The app sends "Provisioning invite PDU" to the first lamp with "Attention Duration field" set to a small value.
  3. The app interrupts provisioning of the first lamp and sends  "Provisioning invite PDU" to the second lamp with "Attention Duration field" set to a small value.
  4. The app interrupts provisioning of the second lamp and sends  "Provisioning invite PDU" to the third lamp with "Attention Duration field" set to a larger value
  5. Provisioning of the third lamp is ongoing...

In other words, we'd like to have quick and immediate feedback for a user in locating lamps.

Some questions:

A. Is this interpretation correct?

B. Is the Attention Timer (set by the Attention Duration field) the only way to make a device indicate that it's being provisioned? i.e. is time the only condition?

C. How is provisioning of the "previous device" interrupted (as in point 3. and 4.)? From the Bluetooth Mesh profile specification (5.4.2.2):

"After establishing a provisioning bearer, a Provisioner shall send a Provisioning Invite PDU and the device shall respond with a Provisioning Capabilities PDU. The Provisioning Invite PDU includes an Attention Duration field, used to determine how long the primary element of the device identifies itself using the Attention Timer, as described in Section 4.2.9. If the provisioning bearer is dropped, the device shall set the Attention Timer state of the primary element to 0x00 (Off)."

and "5.4.4 Provisioning errors" goes on to describe how a connection is terminated by disconnecting, sending a "Provisioning Failed PDU" (by the provisionee) or through a timeout of 60 seconds. Is there a graceful way of terminating or changing which device is currently being provisioned? How can a provisioner change between devices? Is it done technically by abruptly disconnecting an underlying BLE (GAP) connection?

Many thanks!

Related