L’idée est d’ouvrir le portail automatiquement lorsque l’on rentre à la maison grâce à l’intégration Proximity, de détecter que la personne est arrivée grâce à Frigate et au statut de la personne, puis de refermer le portail.
Problèmes :
La couverture réseau est mauvaise chez moi, plus de connexion du smartphone sur le dernier kilomètre environ.
Mon portail est vieux, certains des ordres sur je lui envoie sont perdus.
Donc :
j’ouvre le portail à 1500m.
5 sec après je vérifie qu’il consomme du courant, si c’est le cas je renvoie l’ordre, jusqu’à ce qu’il se soit en mouvement.
Je le bloque quand il est ouvert (au bout de 25s).
5 sec après, je vérifie que le portail ne consomme plus de courant. Si c’est le cas je renvoie l’ordre, jusqu’à ce qu’il se soit arrêté.
Ensuite j’attends que Frigate détecte une car occupancy sur une caméra,
puis confirme ensuite que la personne en question est bien ‹ home ›.
Alors je referme le portail.
A la fin je vérifie qu’il est bien fermé.
Je renvoie l’ordre d’éteindre le commutateur (cela n’engendre pas d’action mais évite qu’il ne reste faussement en statut activé).
Au moment ou le portail s’ouvre, je joue une petite musique pour prévenir à la maison que les chiennes ne sortent pas, s’il y a une alarme je l’enlève, ainsi que la simulation de présence etc.
C’est encore en test, je ferai des mises à jour si nécessaire.
alias: Arrivée distance
description: ""
trigger:
- platform: numeric_state
entity_id:
- sensor.maison_distance_agnes
below: 1500
id: Distance Agnès
- platform: numeric_state
entity_id:
- sensor.maison_distance_raphael
below: 1500
id: Distance Raphaël
condition:
- condition: state
state: "off"
entity_id: input_boolean.portail_manuel
action:
- choose:
- conditions:
- condition: trigger
id:
- Distance Agnès
- condition: state
entity_id: person.agnes
state: not_home
sequence:
- repeat:
sequence:
- service: switch.turn_on
target:
entity_id: switch.ouverture_portail_trigger
data: {}
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
until:
- condition: numeric_state
entity_id: sensor.compteur_portail_power
above: 15
- if:
- condition: time
after: "11:00:00"
before: "23:00:00"
then:
- service: automation.trigger
target:
entity_id: automation.sonnerie_maison_4_low
data:
skip_condition: true
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- service: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.sonneries_maison
- delay:
hours: 0
minutes: 0
seconds: 8
milliseconds: 0
- service: switch.turn_off
target:
entity_id:
- switch.sonneries_maison
data: {}
- service: automation.trigger
data:
skip_condition: true
target:
entity_id: automation.sonneries_maison_11_high
else:
- delay:
hours: 0
minutes: 0
seconds: 11
milliseconds: 0
- service: switch.turn_off
target:
entity_id: switch.presence_simulation
data: {}
- service: input_boolean.turn_off
data: {}
target:
entity_id: input_boolean.alarme_maison
- service: cover.open_cover
data: {}
target:
entity_id: cover.volet_entree_nord
- wait_for_trigger:
- platform: state
entity_id:
- binary_sensor.ouverture_portail_garage_door_contact
to: "on"
- delay:
hours: 0
minutes: 0
seconds: 9
milliseconds: 0
- repeat:
sequence:
- service: switch.turn_off
target:
entity_id:
- switch.ouverture_portail_trigger
data: {}
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
until:
- condition: numeric_state
entity_id: sensor.compteur_portail_power
below: 15
- wait_for_trigger:
- platform: state
entity_id:
- binary_sensor.entree_nord_car_occupancy
- binary_sensor.entree_nord_serre_car_occupancy
- binary_sensor.parking_car_occupancy
- binary_sensor.parking_serre_car_occupancy
- binary_sensor.portails_car_occupancy
to: "on"
from: "off"
timeout:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
- wait_template: "{{ states('person.agnes') == \"home\" }}"
continue_on_timeout: true
timeout: "05:00"
- if:
- condition: state
entity_id: binary_sensor.ouverture_portail_garage_door_contact
state: "off"
for:
hours: 0
minutes: 0
seconds: 20
then:
- stop: Le portail a été fermé autrement
- service: switch.turn_on
target:
entity_id: switch.ouverture_portail_trigger
data: {}
- wait_for_trigger:
- platform: state
entity_id:
- binary_sensor.ouverture_portail_garage_door_contact
to: "off"
for:
hours: 0
minutes: 0
seconds: 20
timeout:
hours: 0
minutes: 1
seconds: 30
milliseconds: 0
- if:
- condition: state
entity_id: binary_sensor.ouverture_portail_garage_door_contact
state: "off"
for:
hours: 0
minutes: 0
seconds: 20
then: []
else:
- repeat:
sequence:
- service: switch.turn_off
target:
entity_id:
- switch.ouverture_portail_trigger
device_id: []
area_id: []
data: {}
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: switch.turn_on
target:
entity_id: switch.ouverture_portail_trigger
data: {}
- delay:
hours: 0
minutes: 1
seconds: 30
milliseconds: 0
until:
- condition: state
entity_id: binary_sensor.ouverture_portail_garage_door_contact
state: "off"
for:
hours: 0
minutes: 0
seconds: 20
- service: switch.turn_off
target:
entity_id:
- switch.ouverture_portail_trigger
device_id: []
area_id: []
data: {}
- conditions:
- condition: trigger
id:
- Distance Raphaël
- condition: state
entity_id: person.raphael
state: not_home
sequence:
- repeat:
sequence:
- service: switch.turn_on
target:
entity_id: switch.ouverture_portail_trigger
data: {}
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
until:
- condition: numeric_state
entity_id: sensor.compteur_portail_power
above: 15
- if:
- condition: time
after: "11:00:00"
before: "23:00:00"
then:
- service: automation.trigger
target:
entity_id: automation.sonnerie_maison_4_low
data:
skip_condition: true
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- service: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.sonneries_maison
- delay:
hours: 0
minutes: 0
seconds: 8
milliseconds: 0
- service: switch.turn_off
target:
entity_id:
- switch.sonneries_maison
data: {}
- service: automation.trigger
data:
skip_condition: true
target:
entity_id: automation.sonneries_maison_11_high
else:
- delay:
hours: 0
minutes: 0
seconds: 11
milliseconds: 0
- service: switch.turn_off
target:
entity_id: switch.presence_simulation
data: {}
- service: input_boolean.turn_off
data: {}
target:
entity_id: input_boolean.alarme_maison
- service: cover.open_cover
data: {}
target:
entity_id: cover.volet_entree_nord
- wait_for_trigger:
- platform: state
entity_id:
- binary_sensor.ouverture_portail_garage_door_contact
to: "on"
- delay:
hours: 0
minutes: 0
seconds: 9
milliseconds: 0
- repeat:
sequence:
- service: switch.turn_off
target:
entity_id:
- switch.ouverture_portail_trigger
data: {}
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
until:
- condition: numeric_state
entity_id: sensor.compteur_portail_power
below: 15
- wait_for_trigger:
- platform: state
entity_id:
- binary_sensor.entree_nord_car_occupancy
- binary_sensor.entree_nord_serre_car_occupancy
- binary_sensor.parking_car_occupancy
- binary_sensor.parking_serre_car_occupancy
- binary_sensor.portails_car_occupancy
to: "on"
from: "off"
timeout:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
- wait_template: "{{ states('person.agnes') == \"home\" }}"
continue_on_timeout: true
timeout: "05:00"
- if:
- condition: state
entity_id: binary_sensor.ouverture_portail_garage_door_contact
state: "off"
for:
hours: 0
minutes: 0
seconds: 20
then:
- stop: Le portail a été fermé autrement
- service: switch.turn_on
target:
entity_id: switch.ouverture_portail_trigger
data: {}
- wait_for_trigger:
- platform: state
entity_id:
- binary_sensor.ouverture_portail_garage_door_contact
to: "off"
for:
hours: 0
minutes: 0
seconds: 20
timeout:
hours: 0
minutes: 1
seconds: 30
milliseconds: 0
- if:
- condition: state
entity_id: binary_sensor.ouverture_portail_garage_door_contact
state: "off"
for:
hours: 0
minutes: 0
seconds: 20
then: []
else:
- repeat:
sequence:
- service: switch.turn_off
target:
entity_id:
- switch.ouverture_portail_trigger
device_id: []
area_id: []
data: {}
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: switch.turn_on
target:
entity_id: switch.ouverture_portail_trigger
data: {}
- delay:
hours: 0
minutes: 1
seconds: 30
milliseconds: 0
until:
- condition: state
entity_id: binary_sensor.ouverture_portail_garage_door_contact
state: "off"
for:
hours: 0
minutes: 0
seconds: 20
- service: switch.turn_off
target:
entity_id:
- switch.ouverture_portail_trigger
device_id: []
area_id: []
data: {}
mode: single