Telemetry: Acceleration




  • Adrian Ziobro

    Accelerometer, as the name implies, measures acceleration. When you multiply the value from X, Y or Z axis by the sensitivity value, you will get the acceleration value in that axis in the mg. If a beacon is static and lays flat on one of its sides, two of the axes will have values close to 0 and one should have value around 1 g (1000 mg), because of the acceleration due to gravity. We use this in our app to determine the position of a beacon.

    When you start moving your beacon, these values will change accordingly, showing you acceleration in given axes.

    Please keep in mind that your phone is not directly connected to an accelerometer. The acceleration data is broadcasted in Bluetooth advertising packets (specifically, in the Telemetry packet). This specific packet is usually broadcasted roughly twice per second. You phone probably won't detect and process all these packets all the time. Because of that, the SDK won't give a constant stream of acceleration changes, but rather snapshots from the sensor from when the packet was broadcasted and detected by your phone.

    If you need to know when a beacon moved, you can enable… movement detection. Our developer documentation will tell you how to configure it or you can use one of the presets we've provided. But basically, the Telemetry packet also contains a number of seconds since the movement was detected the last time. SDK should be able to parse it as well and provide it to your app. On Android check the getLastThreshold() method on KontaktTelemetry.


  • Carlos Ramirez

    Thank you for your response. What would be your recommended configuration/settings for the closest approximation to a streaming scenario. I need to capture the most amount of acceleration values (one axis might be enough) that you think might be possible via a beacon Pro by fine tuning some of the configuration parameters.  If that's not an option, Is there any way to change:

    • accelerometer.move.duration = 160
    • accelerometer.move.threshold = 240

    to get a faster response from getLastThreshold() using the SDK ?. Battery life is not a constraint. Thank you again. 

  • Silvan

    Hi Carlos

    Did you find you how to change the threshold? We are currently facing a similiar issue, where we need to change the threshold to a smaller value so that the acceleration is recognized via Telemetry.


    Thanks for an update if you have one :)


  • Carlos Ramirez

    Hi Siilvan,


    The answer is no. I could not figure out a way of modifying those parameters using the SDK.  At this point I'm using the last threshold method to estimate seconds since last movement and from there number of movements. Not really what I wanted.

Please sign in to leave a comment.