Aide sur une automatisation

Hello,

J’ai besoin d’aide pour une automatisation svp.

Je souhaite désactiver une prise lorsque moi ET ma compagne sortons de chez nous et réactiver la prise lorsque moi OU ma compagne rentrons.

J’ai fait ça:

alias: Gestion Prises Suite
description: ''
trigger:
  - platform: zone
    entity_id: device_tracker.iphone_antho_2
    zone: zone.home
    event: enter
    id: Antho_Home
  - platform: zone
    entity_id: device_tracker.iphone_mlyne
    zone: zone.home
    event: enter
    id: Mlyne_Home
  - platform: zone
    entity_id: device_tracker.iphone_mlyne
    zone: zone.home
    event: leave
    id: Mlyne_live
  - platform: zone
    entity_id: device_tracker.iphone_antho_2
    zone: zone.home
    event: leave
    id: Antho_live
condition: []
action:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: trigger
                id: Antho_Home
              - condition: trigger
                id: Mlyne_Home
        sequence:
          - type: turn_on
            device_id: 07c025446dd855a9e2053db9b2ced4df
            entity_id: switch.shellyplus1pm_441793d49fb4_switch_0
            domain: switch
      - conditions:
          - condition: and
            conditions:
              - condition: trigger
                id: Mlyne_live
              - condition: trigger
                id: Antho_live
        sequence:
          - type: turn_off
            device_id: 07c025446dd855a9e2053db9b2ced4df
            entity_id: switch.shellyplus1pm_441793d49fb4_switch_0
            domain: switch
    default: []
mode: single

Mais cela ne semble pas fonctionner… Une idée pour quelque chose de fonctionnel et « propre » ?

Merci d’avance :slight_smile:

Salut,

Dans la doc Script Syntax - Home Assistant

la syntaxe pour l’action à exécuter dans un bloc choose est la suivante

       - choose:
          # IF motion detected
          - alias: "Motion detected"
            conditions: "{{ trigger.to_state.state == 'on' }}"
            sequence:
              - service: script.turn_on
                target:
                  entity_id:
                    - script.slowly_turn_on_front_lights
                    - script.announce_someone_at_door

Pour toi ça ferait un truc du genre :

alias: Gestion Prises Suite
description: ''
trigger:
  - platform: zone
    entity_id: device_tracker.iphone_antho_2
    zone: zone.home
    event: enter
    id: Antho_Home
  - platform: zone
    entity_id: device_tracker.iphone_mlyne
    zone: zone.home
    event: enter
    id: Mlyne_Home
  - platform: zone
    entity_id: device_tracker.iphone_mlyne
    zone: zone.home
    event: leave
    id: Mlyne_live
  - platform: zone
    entity_id: device_tracker.iphone_antho_2
    zone: zone.home
    event: leave
    id: Antho_live
condition: []
action:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: trigger
                id: Antho_Home
              - condition: trigger
                id: Mlyne_Home
        sequence:
          - service: switch.turn_on
          - target:
            entity_id: 
              - switch.shellyplus1pm_441793d49fb4_switch_0
      - conditions:
          - condition: and
            conditions:
              - condition: trigger
                id: Mlyne_live
              - condition: trigger
                id: Antho_live
        sequence:
          - service: switch.turn_on
          - target:
            entity_id: 
              - switch.shellyplus1pm_441793d49fb4_switch_0
    default: []
mode: single

J’ai pas testé, mais ca correspond à la doc.
Concernant le service à appeler, j’utilise ici switch.turn_on car ton entité à allumer est un switch. D’une manière générale, toutes les entités de base ont des services que tu peux appeler. Pour en savoir plus, voir les developer tools Developer Tools - Home Assistant ou la doc Documentation - Home Assistant

Tu dois aussi pouvoir mettre tes 2 trackers dans un groupe, et te servir de l’état du groupe comme trigger.

  • le groupe :
people:
  name: People
  icon: mdi:account-group
  entities:
    - device_tracker.iphone_mlyne
    - device_tracker.iphone_antho_2

Après pour l’automatisation tu dois pouvoir faire un truc comme ça :

alias: Gestion Prises Suite
description: ''
trigger:
  - platform: state
    entity_id: group.people
action:
  - choose:
    - conditions: "{{ is_state('group.people', 'home') }}"
      sequence:
        - service: switch.turn_on
          target:
            entity_id: switch.shellyplus1pm_441793d49fb4_switch_0
  - choose:
    - conditions: "{{ is_state('group.people', 'not_home') }}"
      sequence:
        - service: switch.turn_off
          target:
            entity_id: switch.shellyplus1pm_441793d49fb4_switch_0     
mode: single

Pas mal l’idée du groupe mais ça marche que pour une des deux action car j’ai un OU pour l’autre.
Genre si les deux not_home alors off et si un des deux home alors on.

Je sais pas si je suis clair ^^

SI si très clair même,

Mais le groupe passera à « home » si au moins une des 2 entités l’est également.
Et il sera « not_home » uniquement si les 2 entités le sont :

image

image

Donc plus la peine de gérer le « or » ou le « and » dans l’automation :wink:

Ok top, j’ai mis en place, je testerais ça. En tous cas le not_home fonctionne, je verrais en rentrant le home.
Par contre je vois pas ou est la différence entre la gestion home et not_home…

Tous les changements d’état du groupe vont « trigger » l’automation si tu ne lui dis pas « d’écouter » un état en particulier.

Ce qu’on fait avec ça

trigger:
  - platform: state
    entity_id: group.people

Les « choose » se chargeront d’appeler le service adéquat en fonction de l’état du groupe.

Après il existe tellement de façon différentes de mettre en place ton automation, que tu risques d’avoir encore 1 ou 2 propositions d’ici ce soir :wink:

Mais l’idée du groupe te permet au moins de la simplifier un minimum.

Tu peux aussi appeler le service via une template avec un code du style :

alias: Gestion Prises Suite
description: ''
trigger:
  - platform: state
    entity_id: group.people
action:
  - service: switch.turn_{{ 'on' if is_state('group.people', 'home') else 'off'}}
    target:
      entity_id: switch.shellyplus1pm_441793d49fb4_switch_0
mode: single

Ok!! Compris! Merci :slight_smile: