So you want each of those things to trigger arrival at home but then not again until all of them have become false (you both left the home zone and disconnected from home wifi). Right?
Easiest way to do this is probably by making a template binary sensor and triggering off that instead. Like this:
template:
- binary_sensor:
- name: Phil is home
state: >-
{{ is_state('person.phil', 'home') or is_state('sensor.phils_phone_wifi', '<home wifi name>') }}
Then in your automation just do this:
trigger:
- platform: state
entity_id: binary_sensor.phil_is_home
to: 'on'
from: 'off'
A brief wifi disconnect won’t trigger this autoamtion as long as your phone is still in the home zone. And arriving home won’t trigger it twice (once when you get to the home zone and once when your phone connects to wifi).
If you really want to use the zone entered trigger can do that as well, just need a trigger template binary sensor:
template:
- trigger:
- platform: zone
entity_id: zone.home
event: enter
- platform: state
entity_id: sensor.phils_phone_wifi
binary_sensor:
name: Phil is home
state: >-
{{ is_state('person.phil', 'home') or is_state('sensor.phils_phone_wifi', '<home wifi name>') }}
Automation is the same.
That’s basically what I do. If you have an automation that wants to fire only when the first of n triggers is true and then not again until all of them have become false again easiest solution is usually template binary sensor.
EDIT: Actually realizing in this case if the first one works for you then you don’t need the binary sensor, just a template trigger:
trigger:
- platform: template
value_template: >-
{{ is_state('person.phil', 'home') or is_state('sensor.phils_phone_wifi', '<home wifi name>') }}
Even better, no extra entities required.