Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calibrating the heat map #11

Open
richb-hanover opened this issue Jan 28, 2025 · 4 comments
Open

Calibrating the heat map #11

richb-hanover opened this issue Jan 28, 2025 · 4 comments

Comments

@richb-hanover
Copy link

I'm not sure I understand what WiFi Heatmap is showing me... In particular, as I add more measurements, the "hot places" seem to move: areas that were hot become "cooler" when there are new measurements.

I started with this floor plan, and made the four measurements (locations in magenta). The APs are shown as turquoise rectangles: the center one is on the same floor, the other two are on the floor above.

Image

The resulting heat maps (no heat map for the first measurement) are shown below:

Image

Note that adding the second point moved the hottest point near the bottom; adding a third point pretty far away didn't change it, but adding the fourth point (6 feet from the AP) shifted the hottest point close to that last measurement.

Note too that the area near #2 (10 feet below the hotspot) got "cooler" after adding #4. This confuses me - why would a new measurement make an earlier one get cooler? What other information could I provide?

(Here's the list of measurements)

Image

And here's a map generated by the Android NetSpot app (about $7, I think). I can't say whether I believe it or not...

Image

@hnykda
Copy link
Owner

hnykda commented Jan 28, 2025

Hey, thanks for the feedback.

I think you are hitting some kind of fundamental properties of heatmaps and their settings in general. They are inherently imprecise because they interpolate and the scale matters, and there is no "standard" or "right" setting. E.g.:

Note too that the area near #2 (10 feet below the hotspot) got "cooler" after adding #4. This confuses me - why would a new measurement make an earlier one get cooler? What other information could I provide?

is definitely possible with heatmaps, is it not? Like, say, you measure 20 degrees celsius in London. Depending on your heatmap settings, you will have London to be the "hottest" (e.g. most red) in London and gradually going weaker as you go further. You do another measurement in Berlin, and you measure 30 degrees. You max is now 30, so the reddest is no Berlin, while London gets whatever color your heatmap interpolates in London (yellow?).

Ideas for how to do these are surely welcome.

Android NetSpot clearly setups maximum and minimum on -96 and max on -10 dBm, a design choice 🤷 , which we definitely could do as well.

As for your map, it seems that parameters could be changed there so it's not doing one huge blob but a more nuanced spots. You can achieve that by going to advanced settings for the heatmap (hidden under the toggle).

@richb-hanover
Copy link
Author

is definitely possible with heatmaps, is it not?

Hmmm.... I had expected that the readings/colors were absolute values... That way, if I'm in a room far from the router, the closest corner won't be red while the far corner is blue. I'd expect the entire room to be about the same middlin' color.

It looks as if the current Advanced Configuration shows a percentage from the range 0..1. (weakest signal .. highest signal). I think it could help if they were switched to use the thresholds below (These come from ChatGPT):

-30 dBm to -50 dBm: Excellent signal.
-50 dBm to -70 dBm: Good to fair signal. 
Below -70 dBm: Weak signal. 
Below -90 dBm: Unusable. 

You probably know this, but I also learned this from ChatGPT: A common formula to approximate percentage from dBm: Signal Percentage=2×(dBm+100)

Example:
    -50 dBm: 2×(−50+100)=100%2×(−50+100)=100%
    -80 dBm: 2×(−80+100)=40%2×(−80+100)=40%

Thanks again

@hnykda
Copy link
Owner

hnykda commented Jan 29, 2025

Valid expectation. I would like to support both, so skilled as well as inexperienced users could use this well. The problem with absolute values you gave is that as soon as someone e.g. has a router by default too far from everywhere, they will not see nuances in their coverage (which might be OK/good tradeoff). I.e. everything will be between -75 and -60, and that might still be a totally working wifi and fine signal (but would show here as somewhat bad).

I use some conversion to signal here: https://github.com/hnykda/wifi-heatmapper/blob/main/src/lib/utils.ts#L24. Every such conversion is a simplification and effectively imprecise, but I am committed to finding the most useful way (or, again, have a sane default and then some advanced option)

Image

@richb-hanover
Copy link
Author

richb-hanover commented Feb 12, 2025

I'm coming back to this now that I have cleared off some of my desk...

... The problem with absolute values you gave is that as soon as someone e.g. has a router by default too far from everywhere, they will not see nuances in their coverage (which might be OK/good tradeoff).

I think that would be a good tradeoff. If someone is too far from their router, they should see a low signal/green or blue color in the heat map.

Also, you gave a hint that I don't understand. You said, "...You can achieve that [more nuanced spots] by going to advanced settings for the heatmap (hidden under the toggle)." I don't understand how those Advanced settings would change things.

PS I've had some fun with the code: I have successfully tweaked up the "spots" so they are colored by their RSSI value (displayed in the label, too). Notice that the -40dBm (bottom) is red, while the middle values (-59 dBm) are green, and the blue dots represent less than -70 dbm.

Image

PPS Am I wrong to expect that the heat map should reflect the -76 dBm value in the middle of the red blob near the bottom?

Image

Thanks for all this fun! I'll keep playing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants