Getting beacon Identifier

I’m trying to get beacon Identifier (the one that’s also visible in the cloud web panel), for a particular beacon
(I have the beacon’s UUID, major, minor, and mac address).

I’ve seen there’s a class called ConfigurableDevicesScanner which basically allows to do that,
as it returns a list of ConfigurableDevices, so I can match theirs macAddress with the address of the beacon I have,
to finally obtain the identifier.

This works, but not with the newest beacons, which seem to return different mac addresses when using ConfigurableDevicesScanner, so I cannot match them.
Is this normal, and if so, why is it like that? How can I get the identifier otherwise?

The new beacons broadcast their “connectable” (AKA “configurable”) packet separately from the rest of their packets, and each packet has a unique MAC address. (Beacons w/ HW revision “D” broadcast their “configurable” data as part of their normal packet, which is why the MAC address is the same.)

I understand that you want to “merge” the packets broadcast by the new beacons together? Can you let us know more about this requirement? We’ll see how we can help.

Thanks. I wanted to discover which beacon is the closest one, and present the user with the device ID, so he would be able to know which device was detected. Using device id (in addition of major/minor) seemed like a bit better idea, since the id does not change.

Ps. it seems now that BeaconManager can also discover beacons of other vendors. How can I filter out estimote beacons only? By UUID? But what if user changes it?

Depending on why you want to present the beacons to the user, it might actually make more sense to go with UUID+major+minor. If you ever need to replace a beacon, you can assign the same UUID+major+minor to the new one, and the user won’t even notice a change. You won’t be able to do that with the static identifier—which can be a good thing, or a bad thing.

In the iBeacon packet, there’s no place for information about the vendor of the beacon, that’s why you’re detecting beacons by UUID/major/minor, you will pick up any iBeacon-compatible devices. If you really need to narrow it down to Estimote, then scanning for the Estimote Identifier (i.e., the ConfigurableDevicesScanner) might indeed be a better option.

What app are you building? It’d help us advise better, since lots of the recommendations here seem to be very use-case specific.