Portail qui s'ouvre et se referme seul

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

Cest pas mal comme scenario.

Je viens justement d’en faire un pour ouvrir mon portail quand je rentre dans la zone maison .

Pour l’instant ce nest pas concluant

Mon portail est gere en mqtt sur jeedom donc il y a bcp d’intermédiaire et de risque de probleme mais ce qui est sur cest qu’il ne fonctionne pas lol.

Mon scenario est très simple.

Quand je rentre dans ma zone maison
Si portail fermé
Alors actionne le portail

Id: '171'
  alias: ouverture portail pour cedric
  description: ''
  trigger:
  - platform: geo_location
    source: Cedric
    zone: zone.home
    event: enter
  condition:
  - condition: state
    entity_id: sensor.info_portail
    state: Fermé
  action:
  - service: switch.toggle
    metadata: {}
    data: {}
    target:
      entity_id: switch.bouton_test
  mode: single

Bonjour,

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 ›.

je suis intéressé par le sujet d’ouverture portail mais en ce qui me concerne, ca sera allumage des lumières devant la maison et particulièrement Frigate.
Je n’ai pas encore Frigate car j’hésite à me prendre la carte usb Google Coral (prix vs efficacité).

Vous mentionnez la détection voiture ! Frigate peut distinguer votre voiture de celle de la voisine par exemple ?
Merci

Bonjour savfab, à ma connaissance Frigate ne sait pas encore différencier ta voiture de celle de ta voisine, seulement d’un humain ou d’un animal… mais tu peux définir des zones sur l’image de tes caméras et ne créer une détection que si une voiture entre dans une certaine zone.

J’ai lu aussi que Frigate pouvait lire des plaques d’immatriculation, mais concrètement je ne vois pas comment paramétrer ça dans Frigate. Il y a aussi la possibilité de reconnaître un camion Amazon… j’imagine que c’est grâce au gros logo bien visible…

Concernant la clé Coral, vu le travail qu’elle fournit, je trouve que ça vaut le coup !

1 « J'aime »