Measurments on ADC of ESP32 is noisy

I am using solar and battery to power an ESP32 based sensor so I am using an ADV voltage divider to monitor the level of the battery and this controls when and for how long the device should enter deep sleep.

It works well enough but I notice some “noise” in the readings… They are fairly consistent but fluctuate by about 0.15v and now wondering if there is some suggested way to make these readings more accurate?

sensor:
  - platform: adc
    pin: GPIO34
    name: "${device_name} Battery Volts"
    id: battery_volts
    accuracy_decimals: 2
    device_class: voltage
    unit_of_measurement: "V"
    update_interval: 15s
    filters:
      - multiply: 5.0000 # The ADC Divides by 5.00 so we multiple back again

Is this an external voltage divider?

Try using a smaller voltage divider so that you get a maximum reading of 3v and use this in your ADC config:

sensor:
  - platform: adc
    pin: GPIO34
    name: "${device_name} Battery Volts"
    id: battery_volts
    accuracy_decimals: 2
    attenuation: 12dB  ### <--- ADD THIS
    device_class: voltage
    unit_of_measurement: "V"
    update_interval: 15s

Thanks @tom_l as the battery voltage should never go over 5V would you suggest I just use the ESP32 gpio pin to measure the voltage instead of an external voltage divider?

No. The maximum the ADC can take in is 3.12V. See: https://esphome.io/components/sensor/adc#adc-esp32-attenuation