Eddystone Motion Detection

Continuing the discussion from How-to get Motion UUID of a beacon?:

Hi Piotr,

So how do I get Motion UUID in case of Eddystone beacon… I don’t have ibeacon turned on…

I have setup an Eddystone beacon with only Eddystone-UID turned on and Motion flag. Your Android app still detects motion. Is that using Cloud API?

Basically, I am only interested in finding eddystone beacon is moving or not.

The Android app detect motion because when connected to the beacon, you get access to an API that notifies you when the beacon changes its motion state. Motion UUID has the advantage of working even if you’re not connected to the beacon, but it only works with iBeacon.

The connection requirement can be a problem b/c:

  • You can only have one connection to the beacon at a time.
  • Connecting to the beacon requires you to be pretty close to it (up to a few meters), even if the beacon’s advertising range is tens of meters.
  • In “old” Proximity Beacons (hardware revision “D”), beacon stops broadcasting its iBeacon/Eddystone packets when connected to.

With our new Location Beacons (hardware revision “F”) and Proximity Beacons (hardware revision “G”), you can instead enable Estimote Telemetry packet, which contains motion status; no need to connect, and it can be broadcast alongside an Eddystone-UID packet.

Here’s how to scan for the Telemetry packet with our Android SDK.

Hi Piotr,

Thanks for the quick response. I tried the TelemetryListener but having some issues with detecting motion.

Here is what I am trying to do:

  1. I have to continuously scan Eddystone beacons and display them in a list.

  2. Once I find Eddystone beacons, I have to display their motion state (when they move) and Light sensor values etc.

Here is what I have done so far:

  1. On launching the app, I setup EddystoneListener and TelemetryListener. Then I start TelemetryDiscovery() and EddystoneScanning().

  2. Upon finding eddystone I populate a list view.

  3. Upon receiving Telemetry packet, I check whether InstanceId of the telemetry packet matches with already found eddystones or not. If it does then I need to check motionstate property from the EstimoteTelemetry object and display status accordingly.

Issues I am having:

  1. For some reason, I am not receiving Telemetry data based on the interval set for Estimote Telemetry (its set to broadcast every 1 second). I cant even figure out at what interval it sends data. When it sends, sometimes I get 14-15 packets in a second from the same beacon. and then nothing for next minute or so.

  2. If I don’t get the Telemetry packet every second then How do I know or alert whether beacon is moving or not

I m not sure how do I go about achieving this? Any idea on what am I doing wrong?


Hi SK,

Did you find the solution? I also got the same issue, I set the telemetry broadcast interval to be 200ms, write the detected data into a file in the device, and found the detection interval is about 1s. Any idea about it?