Detection how long someone is in a zone?

I can check enter or leave, but any way of seeing if someone is in a zone for say 5 minutes or more?

When asking for help like this it’s usually a good idea to share your current code.

You should be able to do what you want using a state trigger instead of a zone trigger. A device_tracker or person entity’s state will be the name of the zone when they enter it. So:

- trigger:
    - platform: state
      entity_id: person.me
      to: zone_name
      for:
        minutes: 5

This will only trigger when the person enters the zone and stays there for at least 5 minutes.

if you want a template to see for how long a person currently is in a zone (or at least changed lastly…) you can do something like:

{{(now() - states.person.xxx.last_changed).total_seconds()|timestamp_custom('%X')
}}

filter to be in a Zonze:

{% set zones = states.zone|map(attribute='name')|list %}
{% if states('person.xxx') in zones %}
{{(now() - states.person.xxx.last_changed).total_seconds() |timestamp_custom('%X')
}}
{% else %} Not in zone
{% endif %}

check for more tha. 5 minutes would be

{{(now() - states.person.xxx.last_changed).total_seconds() > 300 }}

not sure if that can be done more efficiently with one of the recently introduced new template options, must have a look…