I have an app that is using Eddystone TLM packets which receive a DeviceID.
For example: the Device is in Android is something like: D8:1B:CE:57:DA:85, in iOS the same device is returning a DeviceID of A75BC01B-2B34-8567-0BDD0-30A9187337A6 - IE: looks like a GUID.
Using REST API I am able to get a list of devices but there is no direct link from the EddystoneTLM packets to the List of devices.
My question is how to associate the device ID I am receiving in the EddystoneTLM packet with the ones in the EstimoteCloud device list?
I am using Embarcadero C++ Builder as the foundation for the development so I cant use the SDK you provided.
iOS Bluetooth API doesn’t actually expose the MAC addresses of Bluetooth devices. Instead, they only provide you with an ephemeral GUID, but keep in mind this GUID might change e.g. when you restart Bluetooth or the phone. And it will certainly differ between iOS devices.
But back to your problem (: Here’s how to go about it:
- Enable Eddystone UID and Eddystone TLM on your beacon.
- Both the UID and TLM packets will have the same MAC address. (On iOS, I think that should mean they have the same GUID, but I’m not 100% sure.)
- Use the MAC address to associate the TLM packet with a specific UID.
- Finally, you can use the UID and the Estimote Cloud API (specifically, the
/v2/devices/ endpoint, documentation here: http://cloud.estimote.com/docs/#api-Devices-Get_All), and based on the UID, find the Device ID.
Alternatively, an easier way could be to use Estimote Telemetry instead of Eddystone-TLM. Estimote Telemetry packet broadcasts half of the Device ID directly in it. And it also has more telemetry data than Eddystone-TLM (:
How can I be sure that a Device ID X refers to a Mac Address Y, if there are more than one beacon near user?
Here is my question in separate thread EstimoteTelemetry + Eddystone