Estimote Nearables

Parsing Estimote Nearable using AltBeacon

Try the following parser expression:

new BeaconParser()
.setBeaconLayout("m0-2=5d0101,i=3-11,d=12,d=13,d=14-15,d=16,d=17,d=18,d=19,d=20,p=21")

EDIT: Based on the comments below, I have revised the expression here:

new BeaconParser()
.setBeaconLayout("m2-6=02155d0101,i=7-14,d=16-16,d=17-17,d=18-19,d=20-20,d=21-21,d=22-22,d=23-23,d=24-24,p=25-25")

EDIT 2: Based on this byte sequence reported in the comments:

02010403030f1817ff5d01018fc81ebfbebb57d30482855135ff00bd580157

Try this expression:

new BeaconParser()
.setBeaconLayout("m1-2=0101,i=3-11,d=12-12,d=13-13,d=14-15,d=16-16,d=17-17,d=18-18,d=19-19,d=20-20,p=21-21")

This may or may not work. The above assumes the packet format defined in the link supplied in the question (https://github.com/sandeepmistry/node-bleacon/blob/master/estimote-sticker/estimote-sticker.js#L53) is correct, which I have converted to an offset table here:

0-1: 5d01 (Bluetooth SIG manufacturer id for Estimote)
2: 01 (nearable protocol version)
3-11: identifier
12: firmware version
15: temperature
14-15: battery and moving indicator
16: acceleration x
17: acceleration y
18: acceleration z
19: current motion state duration
20: previous motion state duration
21: power and firmware state

The layout defined above will return a beacon instance with a single identifier field and 8 data fields which map to:

Data Field #   Meaning
1 firmware version
2 temperature
3 battery and moving indicator
4 acceleration x
5 acceleration y
6 acceleration z
7 current motion state duration
8 previous motion state duration

You will have to decode the meaning of the data fields properly from the raw values parsed out of the packets.

The above parser probably will not do distance estimates correctly, as the power calibration field (p=21) does not appear to be in a standard format (like used by AltBeacon, iBeacon and Eddystone) that the library will work with out of the box.

How to return Estimote nearable type in android

Nearable type is not broadcast in the advertising packet, that's why it's not part of the Nearable class.

Instead, type is stored in Estimote Cloud, so you need to use the Estimote SDK to fetch it from there. You can do that via the EstimoteCloud#fetchNearableDetails method. You'll get the NearableInfo object in your callback, and that objects has the type property which has what you're looking for.

Estimote Telemetry : Unable to track temperature

The API for telemetry discovery changed slightly, and it looks like the docs haven't been updated accordingly—I've just fixed that.

In the most recent version of the SDK, startTelemetryDiscovery no longer returns a scanId, and stopTelemetryDiscovery no longer accepts one. You just start and stop the scan:

@Override protected void onStart() {
super.onStart();
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
beaconManager.startTelemetryDiscovery();
}
});
}

@Override protected void onStop() {
super.onStop();
beaconManager.stopTelemetryDiscovery();
}

ARC unavailable methods in Swift

Here I found the same question. I answered more deeply there. I could not find something more good, so I went ahead with my old assumptions.

I Added this category to Bridging Header. It worked fine.

#import <EstimoteSDK/EstimoteSDK.h>

@interface ESTNearable (Ex)

/// Solving the compiler problem that "zone" method is unavailable in Swift
@property (readonly) ESTNearableZone nearableZone;

@end

// Implementation

@implementation ESTNearable (Ex)

- (ESTNearableZone)nearableZone
{
return self.zone;
}

@end

After that I just used nearableZone method in Swift

var zone = someNearable.nearableZone

Estimote SDK vs Altbeacon Library for Android Development

Some of the main benefits of the Android Beacon Library vs. proprietary alternatives:

  • Open source. There are no secrets to how it works. If you have a problem with the library, you can take a look at the source code yourself and even modify it to suit your needs. You can even share your changes and propose they be added to the library.

  • Works with many beacon brands and types. The library is designed to be agnostic of the beacon brand and transmission format, so it works with beacons from any vendor using a variety of formats. In addition to AltBeacon, Eddystone, and iBeacon, it is possible to configure the library to work with a wide variety of beacon formats, potentially even those that have not been invented yet.

  • Very widely used. The library is used by over 4,000 mobile apps in the Google Play store and has been installed on over 150 million devices.

  • Active Community Support. Doing a search on StackOverflow for "Android Beacon Library" returns a large number of questions and answers. It's easy to find help when working with the library.

In addition, the library has robust support for background launching and battery saving, and supports beacon transmission on Android 5+ devices.

A proprietary alternative like the the Estimote SDK may be useful for non-standard functions that only work on Estimote beacons, for example, configuring the beacon's identifiers using the proprietary Estimote GATT Service.

Full Disclosure: I am the lead developer on the Android Beacon Library open source project.



Related Topics



Leave a reply



Submit