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. 

Please sign in to leave a comment.