Library for scanning BLE beacons (iBeacons, Eddystone, others)

I recently had a project where I needed to scan BLE beacons, so decided to make it into a more general purpose library for scanning multiple types of beacons.

The library is called BeaconScanner, and can scan and publish (or return a Vector) of iBeacons, Eddystone beacons, or custom Kontakt asset tags.

Here’s the source code:

And an application note using it:

6 Likes

Nice!

Very good. Please keep the libraries and ideas for BLE coming.

1 Like

Trying to get rssi from a tlm beacon. Not having any luck modifying the library to add it.

Never mind I got it working once I made Particle Workbench use a local copy of the library.

@mariano
I have a project where 5 Argon are communicating to Boron via BLE. They mostly sleep and wake on INT. What I have noticed is that when the BORON drops cellular, the BLE stops working reliably.

I am wondering what happens in the case you present using beacons? Do you see similar behavior when the cellular is dropped on the Boron?

Thank you in advance

@jackpot

What I have noticed is that when the BORON drops cellular, the BLE stops working reliably.

I haven’t seen this behavior. BLE works even with Cellular.off() called. Are you seeing the issue when turning off cellular, or when cellular connectivity drops? Is it possible that the device is trying to reconnect to cellular, and blocking the loop? If so, make sure that you are running with SYSTEM_THREAD(ENABLED)

@mariano

Thanks for the reply. I am in fact using SYSTEM_THREAD(ENABLED). I am seeing the issue when the cellular connection drops.

1 Like

Any update on this BLE behavior?

I’m not able to reproduce this with either the Beacon Scanner library or the BLE Group library. Both have BLE continuing to work, even when Cellular connectivity drops. Do you have more details on the application to help replicate?

To be clear, I am not using the beacon scanner library. I am using BLE to communicate between 5 Argon and 1 Boron. The Argon sleep for 1m wake up, send a TX to the Boron. The Boron in turn sends and ACK back to the Argon. When the Argon receives the ACK, it goes back to sleep. There is also an INT that can wake the Argon at any time but the process is the same- wake, send TX, receive ACK, sleep. Cycle repeats every 1m. As long as I have a cellular connection, it runs perfectly. When the cellular connection is lost and while the Boron is struggling to find and reconnect to cellular, the Argons eventually fail to connect to the Boron. The only remedy is to manually RESET the Argons once the Boron has re-established the cellular connection.

If you DM me, I can send you serial data showing the issue. I can also send you firmware if you like but I will not post either in the public forum because of NDA.

Thanks for your help and consideration.

@jackpot Would you mind going to Support and use the Submit a request link on the top right?

@mariano, request submitted. Thank you