How is total_increasing working?

I am not sure how can I accurately count the total water usage. Is it linked to the update_interval ?

I know for a fact the real-time readings are accurate as I am using the same sensor used by the water softener. The values are matching, but the total seems to be inaccurate, way low under what I estimate.

This is the current configuration with the Total inaccurate. Is it correct and my estimation is wrong?

  # Water Meter
  - platform: pulse_counter
    name: 'Water Meter'
    id: water_per_hour
    pin: GPIO34
    unit_of_measurement: "m³/h"
    device_class: water
    accuracy_decimals: 3
    # filters:
    #   # - multiply: 0.000265
    update_interval: 1s
    filters:
      lambda: return ((x / 3773.584));
    total:
      name: "Total water consumption"
      id: total_water
      unit_of_measurement: "m³"
      device_class: water
      state_class: total_increasing
      accuracy_decimals: 5
      filters:
        lambda: return ((x / 3773.584) / 3600);

I tried to measure it by filling up a bottle

or maybe this should be more accurate(I am planning to test this):

      filters:
        lambda: return id(total_water).state + (id(water_per_hour).state / 3600);

Is there anything stored on the eeprom? Is there any reason why I should not send updates each second?

I tried this in the Total from pulse_counter, but the value is stuck on Unknown

     lambda: return id(total_water).state + (id(water_per_hour).state / 3600);

so does this

  - platform: template
    name: $friendly_name Total
    id: total_water_usage
    unit_of_measurement: "m³"
    update_interval: 1s
    device_class: water
    accuracy_decimals: 2
    filters:
      lambda: return (id(water_per_hour_m3).state / 3600) + id(total_water_usage).state;

This seems to be accurate for some reason. I expected the total was linked to the update interval

  # Water Meter
  - platform: pulse_counter
    name: $friendly_name in m³/h
    id: water_per_hour_m3
    pin: GPIO34
    unit_of_measurement: "m³/h"
    device_class: water
    accuracy_decimals: 3
    update_interval: 1s
    filters:
      lambda: return (x / 3773.584);
    on_value:
      then:
        - script.execute: uv_lamp_trigger
    total:
      name: "Total water consumption"
      id: total_water_m3
      unit_of_measurement: "m³" # m³
      device_class: water
      state_class: total_increasing
      accuracy_decimals: 5
      filters:
        lambda: return ( (x / 3773.584) / 60);

  - platform: template
    name: Total water consumption in L
    id: total_water_l
    unit_of_measurement: "l"
    device_class: water
    accuracy_decimals: 2
    update_interval: 10s
    lambda: return (id(total_water_m3).state) * 1000;