How to count unique records within a time range in MySQL?
This query will give you the answer you are looking for:

select s.id, count(*) as visits from 
(select distinct id, concat(hour(door_entry), floor(minute(door_entry)/30)) 
from visit_log) s group by s.id