Indentification between iBeacon & telemetry

Hello Guys,

We are developing an application in which we are using both information which we get from iBeacon & telemetry.
Right now are able to get all the information about iBeacon after calling ,

self.beaconManager.startMonitoring(for: CLBeaconRegion( proximityUUID: UUID(uuidString: "B9407F30-F5F8-466E-AFF9-25556B57FE6D")!, major: "12345", minor: 12345, identifier: "monitored region"))

after calling above method, in

func beaconManager(_ manager: Any, didEnter region: CLBeaconRegion)

above method will call and we are able to get all the information about that beacon & its region.

Now in other phase we also try to get information about telemetry for that beacon also.So we get information like temprature,motion,light etc.

But there is no any parameter or value through which we can identify beacon & its telemetry.
In simple language how can we identify telemetry information for iBeacon.

so is there any parameter or value through which we can map or match beacon & its telemetry.
If yes than let me know how to do it.

Thanks in advance.

Telemetry packets advertise a unique device ID called shortIdentifier (see http://developer.estimote.com/sensors/estimote-telemetry/#ios). You can use this identifier to match beacons with their UUID/major/minor triples. You will need to store those matchings somewhere.

You can also check out our new Proximity SDK based on Estimote Monitoring — it works in the background just as well as iBeacon, and uses the identifier to, well, identify individual beacons. Combining this with Telemetry would be easier than working with Telemetry + iBeacon.

Thanks for the quick reply.

I have ShortIdentifier which i get from telemetry but how can i identify this ShortIdentifier is for which beacon.

Because there is no any string like major,minor or UUID of beacon which matches with ShortIdentifier of telemetry.

Every Estimote beacon have its own unique 16-byte identifier that cannot be changed by user. You can see this identifier when you log to your account on Estimote Cloud. iBeacon however is a one of the configurable packets and you can change UUID/major/minor as you want.
Telemetry packets and Proximity SDK use this identifier in their packets (in various forms). What we are suggesting here is to drop iBeacon at all, and use Proximity SDK + Telemetry because it will be easier to match packets.
If you still want to use iBeacon you will need to prepare you own data base that will contain mapping between device ID and UUID/major/minor triple used by iBeacon standard. You can build that database by individually scanning each of your beacons (in radio isolation) for both types of packets and writing down mapping to database.
You can also query Estimote Cloud and dig that information from returned JSON. See https://cloud.estimote.com/docs/#api-Devices-GetDevices

The ShortIdentifier is the first half of the identifier. So, for instance, the identifier is c9cd4d7f46891ba52e4782f220e9e405; the matching ShortIdentifier is c9cd4d7f46891ba5.

You can e.g. fetch a list of all your beacons from you Estimote Account and match the short identifiers to the identifiers on that list.

from where i can find this type of identifier.menas in which method & in which parameter.

`func beaconManager(_ manager: Any, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)
    {
}

func beaconManager(_ manager: Any, didEnter region: CLBeaconRegion)
    {
 }`

from above method where can i found identifier for beacon & in which parameter like beacon.major,beacon.minor.

Thanks.

You won’t find that identifier there. Telemetry and iBeacon are different packet types, using different methods of identification (telemetry is using deviceID and iBeacon uses UUID/major/minor). You need to provide external mapping as I mentioned above. You can build that mapping using data from Estimote Cloud using for example: https://cloud.estimote.com/docs/#api-Devices-GetDevices . You will find UUID/major/minor there and corresponding device ID.

We need to fetch the beacon’s identifier from proximity SDK for below two methods,

func monitoringManager(_ manager: ESTMonitoringV2Manager,
didEnterDesiredRangeOfBeaconWithIdentifier identifier: String)
{

}
func monitoringManager(_ manager: ESTMonitoringV2Manager,
    didExitDesiredRangeOfBeaconWithIdentifier identifier: String)
 {

}

Actually we know that we can get identifier from cloud using get device api but we don’t want to use them as our app is for any user regardless of fixed app token & app id , so can any one know that how to get beacon identifier for those beacons which are in range or for nearest beacon.

Thanks.

If you are using Proximity SDK there is no need to query Cloud since Telemetry and Proximity are using the same IDs.
Telemetry it is using its shorter form (shortIdentifier which is 8 bytes long) so you need to compare only prefixes of those identifiers.

Thank you for your reply.

But how can i decide for which identifiers i have to start monitoring in proximity.Like below example,

 self.monitoringManager.startMonitoring(forIdentifiers: [
            "4f53483e6a6e22d6e447049712aff214",
            "5ab2d6a30e9850230292f7cb1b8e5c16"])

Actually i just want to display notification to user when user go out side the beacon range for one or more than one meter.I want to achieve that using proximity & telemetry.

How can i pass the identifiers for beacon which are in range in above method instead if static string.

Can you please help me for my question if possible.I am waiting for your reply.

Thanks.