Map iBeacon/Eddystone packet to Connectivity Packet


We are working on app that use estimote beacons. We intercept ibeacons and eddytone packets and show them. Earlier we used to use the iBeacon packet Mac Address to connect to the beacon and configure.
So we display to the user a list of ibeacons/eddystorneURL around him and he can edit each.
Now we have moved to the latest android SDK and I can see that Estimote broadcast different packets with different mac address. So the Mac address can no longer be used and I can see deviceId was introduced and can be found in Connectivity packet. The issue I am having is I cant find a way to map the iBeacon/Eddystone packet to its corresponding Connectivity Packet, which allow the user if once he see the ibeacon/eddystone packet he will have its connectivity packet that allow him to connect. So far, I couldnt see anything in the api that allow me to map them. The functionality I am asking for is the exact same found in estimote app in the listing view of devices. So each row, show the ibeacon packet like uuid/major and minor and clicking on it connects you.

What im trying to do now, is get the list of devices from estimote cloud. This will allow me to map the connectivity packet to packets data, then when intercepting other packets, i try to match the data to find the appropriate connectivity, based on data packets.
To be honest I m hoping there is a better way as this pose and overhead request and we need the data to be sync.
Also like what if 2 devices are broadcasting the same ibeacon packet how should i know which exact connectivity pack belong to. This pose another question does estimote allow to have 2 beacons broadcasting same signatures (UUID, major, Minor or Eddytone URL) ?

Btw I am using android, your help is really appreciated.


Hi @eli,

where did you read that the emitted beacon MAC address are changing? Reading the documentation, I can see:

public MacAddress getMacAddress()
MAC address of the beacon.

and here:

public final MacAddress macAddress
Mac address of device. Notice that Nearable devices are rotating their Mac addresses, so you better don’t rely on them

So it seems to me that you can use the MAC address properly to map the different packets…

If two beacons are broadcasting the same iBeacon packets, you should be able to differentiate them with the MAC address.
And yes, Estimote allows to same signatures with your beacons (for example if you want to broadcast an URL in a large space).

Thanks @Ximun,

I must have not properly explained my case. One beacon > v4 can send multiple packets at the same time, and each packet has a different mac address for the same beacon. On older beacons, estimote used to broadcast one packet, which we used the mac address of that packet to connect using BeaconConnection.

So for beacon > v4 this is no longer possible and if you need to connect you need to acquire the Connectivity Packet in other terms ConfigurableDevice object.
See this post Mac address in estimote android sdk - #3 by heypiotr

My issue is now how to map these different packets from one beacon back to the connectivity one, so I can tell from an iBeacon packet whats the corresponding Connectivity packet.


personally I did not use those beacons…

The documentation specifies that the MAC address is the beacon’s MAC address. But if you tried and had different addresses I can’t help you :frowning: