Info on update battery level: best practice

Hello one,

I’m starting to look at how can I update the battery level of my beacons.
From what I understood I have to connect to my beacons.

I will try to do this using swift tomorrow and paste my code so other users can use my code.

From the ones that have experience,
I was thinking of putting im my Apps a check, so that on saturdays my users would automatically update the battery in estimote cloud. Once a week, or once every 2 weeks should be enough.

Any feedback on that, does the idea seem possible, or the impact on the user’s experience is not worth it.

Thank you in advance,


You might be already aware of this, but I’ll mention it anyway if other developers look this thread up: we hold estimated remaining battery lifetime in Estimote Cloud, where you can see it on your Beacons dashboard, or fetch it via our RESTful API. These estimates are based on the last known battery level (i.e., you need to connect to the beacon at least once), and a mathematical model we’ve built that takes current beacon settings into account. Naturally, it’s just a prediction, and it won’t be 100% accurate—there are some factors at play such as the ambient temperature (which affects the battery capacity), or our smart power saving mode (which slows down the advertising when there’s no traffic around the beacon), which are hard to predict and model accurately. But it should give you a rough idea if the beacon’s gonna run out of the battery in the coming month or not.

If you connect to the beacon every week, our SDK will automatically upload the current battery level to the cloud, and the prediction will be more accurate.

Some things to keep in mind:

  • connecting to a beacon uses up more battery than broadcasting; if you do it only once a week, it shouldn’t affect the battery life in any considerable way, but we’d rather recommend against doing this, e.g., on a daily basis (:
  • the beacon stops broadcasting for the duration of being connected to an iPhone, so your app’s triggers will temporarily not work
  • connection process can take up to a minute in extreme cases (e.g., slow/spotty Internet connection, as the authorization keys need to be downloaded from Estimote Cloud), and it usually require the iPhone to be much closer to the beacon than it’s normal broadcasting range

Another option which I’ll include for the record is to set your beacon to broadcast Eddystone instead of iBeacon. Eddystone includes a telemetry frame, which has the current battery voltage embedded directly in it, so no connection is required. A significant downside is, if you’ve already coded your app around iBeacon, you’ll need to rework it; and if you rely on triggers that work even if the app is not running (i.e., the beacon region monitoring feature), that’s not currently possible with Eddystone and our SDK (and to our knowledge, no other SDK out there).


I’m back with another question. I’m using the API to fetch Beacons informations ( Battery, interval, version etc…) I have based my back-end on the Beacon->settings->battery to display to my users the percentage of battery left for each beacons.

Months have now go by and I still have this value of 100. I thought it was the percentage of battery left, but i’m now having a few beacons with 600 days left of battery and others with over 1000. But in both cases i have that 100 value, could anyone give me more information regarding this value.

Thank you

There are two battery-related fields returned from the API:

  • battery_life_expectancy_in_days, this is from the mathematical model I mentioned earlier, and is computed dynamically when you request beacon details from the API, so it always reflects the most current prediction.

  • battery is the last known battery charge level, in %.

    Yes, it will be 100% most of the time, which is related to battery discharge characteristics. We don’t know exactly how much “juice” a battery has left, we only observe drops in voltage—and these usually don’t start happening until the battery is half-full. This is precisely why we developed the other metric, to allow for more accurate prediction.