Replying to myself.
The solution is to read many times, and take the mean.
8000 reads takes about 31.7s with the default 2ms pause at the end of the UIFlow script, which is good enough for me. (Water level sensor). So I have a value published on mqtt twice/minute.
From 1000 reads, I get a good accuracy / measures stability.
Over 4000 reads, there's no visible improvement. I do not have more than 0.25% between 2 measures.
Some tips & links for other people interested in this kind of sensor reading or ADC :
- I found the power supply combining both 24v and USB really great for this project : https://www.amazon.fr/gp/product/B09PYMBPLK/
- https://w4krl.com/esp32-analog-to-digital-conversion-accuracy/
- https://microcontrollerslab.com/adc-esp32-measuring-voltage-example/
François