What does the ESPresense "Absorption" setting do?

Hey Everyone,

I have been experimenting with ESPresense for a few weeks and noticed a new configuration value: Absorption. I’ve looked around but haven’t found much on what it does, how it works, or how to use it to improve performance. Basically, those are my questions.

  1. What is “absorption”?
  2. What factors affect absorption?
  3. How does it affect presence detection?
  4. What is the value range?
  5. What values are good for what situations?
  6. How do I determine what is a good value for my setup?

Thanks again for your help!!

1 Like

Are there other places that may have the answers to these questions?

Maybe someone will know the answer today?

An average value that accounts for the amount of “stuff” in between rooms in your house. Use a higher number for dense materials, lower for assuming no walls.

https://espresense.com/configuration/settings

1 Like

Thank you for your reply!

What is a “high value”? 10? 100? 1000? The instructions don’t define a value range.

Thanks again!

2 Likes

Anyone able to elaborate further on this? What is a high value? What does changing this value actually do?

as in all ranges when the input box turns red, it is out of range.
Looked this one up for you, looks like max is 100

Perhaps a better way to phrase the question would be, “What are the consequences of turning up absorption? What unwanted results would I get if I unnecessarily used the maximum absorption value? Why isn’t absorption set to a value greater than zero by default?”

What are the consequences of turning up absorption?

Increasing the computed distance from the receiver to the BLE device, and subsequently potentially placing it out of range depending on what your configured max reporting range is.

What unwanted results would I get if I unnecessarily used the maximum absorption value?

Your BLE device will likely be reported as not seen by this receiver, due to the increased computed distance from the receiver.

Why isn’t absorption set to a value greater than zero by default?

The espresense code writer doesn’t know the physical characteristics of your specific receiver deployment to come up with a reasonable value. He is offering you this variable as a method to calibrate to your specific circumstances.

Here’s a short description as I understand it -

You have a BLE receiver, and a BLE transmitter. The signal strength of the transmitter as seen by the receiver is how the distance between the 2 are calculated, e.g. the signal strength is the only “measured/known” value of the receiver for a specific BLE device ID that varies as you get closer/father away. Problem is, you want distance between the two.

Distance is a fixed formula of known loss of power over free air for the given 2.4Ghz signal frequency. In other words, received power level diminishes at a known rate over a given distance for a given frequency in free air.

Calculated distance will be a factor of multiple unknowns - What is the transmitter’s original power? What objects are in the way that will increase the loss over distance vs free air?

The Calibration section of the software attempts to account for these unknowns. Original power is the first item “Rssi expected from a 0dBm transmitter at 1 meter distance” and defaults to -65 which is the default for most BLE transmitters. That said, you can change that value on the transmitter, so here you can specify the change (note for this to be useful, all transmitters would have to be adjusted).

What objects are in the way that will increase the loss over distance is the second item asked about, “Factor used to account for absorption, reflection, or diffraction”. Entering a value here will reduce the expected receiver power for a given distance because something that absorbs, reflects, or diffracts 2.4Ghz is in the way. This value is a SWAG. The idea is to tweak it and compare your transmitters actual distance to the software’s reported distance to make them as close as possible at several known distances.

Most people aren’t going to go through the effort (I haven’t) but the options are there if you really want accurate distance reporting.

Long winded, but hope that helps.

7 Likes

Ok, that makes sense! Thank you for the explanation!!

Last question (hopefully): What are the proper procedures for determining what each of my devices’ absorption value should be?

Thanks again for being awesome!!

First, all devices use the same value so calibration will be a compromise.

Take a transmitting device with a known RSSI value, like your phone with the HA Companion App or a good quality tag. Make sure the RSSI value at 1 meter match for the receiver and transmitter in the receiver settings. Start with an absorption value (mine is defaulted to 3.5, I don’t think I’ve changed it).

Place the transmitter 1 meter from the receiver and check the distance being stored by the receiver. You can use Home Assistant or MQTT Explorer.

Place the transmitter 2 meters from the receiver and check the distance being stored by the receiver. You can use Home Assistant or MQTT Explorer.

Place the transmitter 3 meter from the receiver and check the distance being stored by the receiver. You can use Home Assistant or MQTT Explorer.

Place the transmitter 5 meters from the receiver and check the distance being stored by the receiver. You can use Home Assistant or MQTT Explorer.

Repeat up to whatever distance you feel you need to be accurate to.

If the values aren’t close, adjust the absorption value up or down and repeat the tests. You should get an indication from the delta whether you need to increase or decrease the absorption. Repeat testing/adjusting until you feel you are close enough, or lose interest, or get frustrated. (Now you can begin to see why most people won’t adust this).

This has to be repeated for every BLE receiver you have, BTW, the number won’t be “universal”.

8 Likes

Perfection!! I’ll go through these steps with my setup. Greatly appreciated!!

Hi,

Is this the better method instead of playing with the rssi value?

Kim

I’m not sure I understand what you mean. RSSI is the received signal strength, it will be directly correlated with distance. Not sure how you can play with it.

The calibration section has an expected rssi value. Right above the absorption settings.

@kimoppalfens What did you end up doing? Did you modify the absorption or the RSSI or both?

I’ve got 6 sensors set up in my house - 2 in the basement, 2 on main floor and 2 upstairs - at opposite ends of the house - and I have 2 phones and a watch sending updates through MQTT - but I haven’t calibrated them yet or created any automations.

I heard there was an Appdaemon app that would/could do triangulation to pinpoint a device anywhere within the house? Have you tried it?

I’m really hoping to leverage the experience of others - but I haven’t been able to find much beyond the initial setup.

Empirically, I’ve found that increasing the Absorption value of a base station “attracts” other beacons to it. In other words, if you have a beacon that is close to a base station (X), but that beacon is being reported as closer to other base stations, turn up the absorption of base station X. I have needed to do this because of one of my base station’s antenna seems to be weaker than the others.

I can not get this correctly setup.

The distance of my phone at 1 meter away the distance is shown as 0.40 and at 2 maters away also 0.60. When i leave my phone at two meters away and set the absorption to 1 the phone is reported as 0.01 meter away and when i set the absorption to 100 it is reported as 0.8 meters away.

So i can not get this working at all. even when i move the phone 4 meters away, it won’t even get to 1 meter.

So what else can i do then changing the absorption?