Get increasing records over time
Window functions , for instance LAG should do the trick: 

SELECT run_date, count(distinct car_id) 
  FROM 
  (
   SELECT id as car_id, date_trunc('day', (time::timestamp) AT TIME ZONE 'EST') as run_date, 
   battery - LAG(battery,1) OVER (partition by id,date_trunc('day', (time::timestamp) AT TIME ZONE 'EST')
     order by time) as diff
   from test_db
  )a 
  WHERE diff &gt;0
  GROUP BY run_date