Identifying each entity as an individual with net Libary with EntIndex()

So I have a separate thread however it is not on this topic. I managed to solve that. Anyway the problem now, is when I spawn in 2 of the same entities and press my derma button, it sends it to the server (the init.lua file). But now, when I press the button on one entity it will affect the other I have already come over this with my timers with


EntIndex()

However, I am not sure how to apply it with the rest.
Here it is (init.lua)


net.Receive( "start_pop_grow", function ( len, ply )
	ent = net.ReadEntity()
	if ent:GetPos():Distance(ply:GetPos()) < 70 then
	if ent.cangrow == true then 
	ent.cangrow = false
	ent.cancollect = false
	print ( ent.cangrow )
	growtime = 2
	ent:SetModel("models/pot/pot_06.mdl")
	if !IsValid(ent) then return end
	timer.Create( "timer"..ent:EntIndex(), growtime, 1, function()
		if !IsValid(ent) then return end
		ent:SetModel("models/pot/pot_07.mdl")
		timer.Create( "timer"..ent:EntIndex(), growtime, 1, function()
			if !IsValid(ent) then return end
			ent:SetModel("models/pot/pot_08.mdl")	
			timer.Create( "timer"..ent:EntIndex(), growtime, 1, function()
				if !IsValid(ent) then return end
				ent:SetModel("models/pot/pot_09.mdl")
				timer.Create( "timer"..ent:EntIndex(), growtime, 1, function()
					if !IsValid(ent) then return end
					ent:SetModel("models/pot/pot_10.mdl")
					ent.cangrow = true
					ent.cancollect = true
					print (ent.cangrow)
				end)
			end)
		end)
	end)
	end
	end
	end
end)

net.Receive( "pop_eject_seeds", function ( len, ply )
	if ply:GetPos():Distance(ent:GetPos() ) < 5 then return end
	if ent.cancollect == true then
		print("cancollect")
		local SpawnPos = ent:GetPos()
		local poppyseed = ents.Create("poppy_plant") --CHANGE THIS TO THE POPPY SEED
		poppyseed:SetPos(SpawnPos + Vector(0,15,15))
		poppyseed:Spawn()
	end
end)

function ENT:Use(activator)
	net.Start("poppy_menu")
		net.WriteEntity( self )
	net.Send(activator)
end	


So when I press a button (in cl_init) it will call the first function (start_pop_grow), however if I spawn in the same entity (so I have 2 of them) and press a button on the other entity it will stop growing and the other one will start growing. So basically, the a button on one entity will act on both of them. Any help is appreciated, mainly looking for guidance on how to do it, not for someone to do it (but it would be useful as well as they explained it)

EDIT:
Just found GetCreationID, I will have a go with this considering it increases and does not stay the same however I do not think this is it due to it only keeps creating and not re-using and do not think this is the problem.

Instead of using timer.Create( “timer”…ent:EntIndex(), growtime, 1, function()
you could simply use timer.Simple(growtime, function()…
That way you don’t have collisions, and you don’t have to mess about with what you’re trying to do

Oh right, I did not know that a simple timer would not cause collisions. Thanks, I will try it out

EDIT:
After writing it out I just realized how they could cause collisions, however, this is not the cause of my problem.