Déclencheur d'un calendrier

Je cherche à comprendre comment fonctionne l’automatisation à partir du calendrier. Je n’arrive pas à déclencher l’automatisation…

Voici les options possibles:

image

image

Sachant que l’attribut « Message » est le nom de l’évènement dans le calendrier:

image

image

J’ai essayé comme ceci, mais rien ne se déclenche:

image

ce qui donne en YAML:

alias: test calendrier
description: ''
trigger:
  - platform: state
    entity_id: calendar.test
    attribute: message
    to: Test
condition: []
action:
  - device_id: 19d31a64a97ddae78975dbedf80c9382
    domain: mobile_app
    type: notify
    title: ''
    message: test evenement
mode: single

Une idée?

Bonjour,

Si tu as ajouté un calendrier Google, tu as l’air de mélanger 2 choses.
Regarde

Donc teste ceci plutôt

alias: test calendrier
description: ''
trigger:
  - platform: state
    entity_id: calendar.test
    to: "on"
condition: []
action:
  - device_id: 19d31a64a97ddae78975dbedf80c9382
    domain: mobile_app
    type: notify
    title: ''
    message: test evenement
mode: single

ou avec le contenu de l’attribut « message » en condition

alias: test calendrier
description: ''
trigger:
  - platform: state
    entity_id: calendar.test
    to: "on"
condition: 
  - condition: state
    entity_id: calendar.test
    state: Test1
    attribute: message
action:
  - device_id: 19d31a64a97ddae78975dbedf80c9382
    domain: mobile_app
    type: notify
    title: ''
    message: test evenement
mode: single

C’est icloud, j’ai juste déclaré le calendrier dans le fichier config.

J’ai testé ton exemple avec la condition, toujours rien…

alias: test calendrier
description: ''
trigger:
  - platform: state
    entity_id: calendar.test
    to: 'on'
condition:
  - condition: state
    entity_id: calendar.test
    state: Test4
    attribute: message
action:
  - device_id: 19d31a64a97ddae78975dbedf80c9382
    domain: mobile_app
    type: notify
    title: ''
    message: test evenement 4
mode: single

Mais je me demande si c en’est pas parce que l’état du calendrier est déjà sur ON car un évènement est en cours. Je teste en m’assurant qu’il soit sur off.

Etrange, il ne passe plus sur On. Il s’est mis à ON je ne sais pas comment, probablement lors de mon premier rdv de test, mais il ne rebascule pas au rdv suivant.

image

S’il ne passe plus sur on tu n’aura rien, puisque c’est bien le déclencheur.

Regarde dans Developer tools son etat stp ?

C’est ce que je fais pour vérifier. Là il est sur off. Il l’était aussi quand j’ai fais le dernier test.

image
image

J’ai remis un rdv test à 14h05.

Est-ce que tu as essayé sans condition au début ?

De plus je pense que la condition ne va pas là mais dans les actions dans un choose

Dans un choose ca devrait le faire aussi. Mais cela devrait fonctionner aussi à cet endroit non ?

@MoPepettes pour tester l’automatisation tu peux aussi forcer l’état à « on »

Je fais les deux en même temps avec 2 autos.

En fait, même si les RDV apparraissent dans les cartes et le module calendrier de l’UI, le trigger ne se déclenche que 2 ou 3 minutes après le début du RDV.
Second point, il ne se déclenche pas si l’état du calendrier est déjà sur on, suite à un rdv en cours.
Enfin, la condition ne fonctionne pas car j’ai l’alerte pour la mise à on mais pas si ya la condition.

Oui je l’ai fait au début pour être sûr, je viens de le refaire, c’est ok, mais uniquement si passage de off à on. Pas si on est déjà son état.

Oui c’est le fonctionnement normal, tu déclenches ton automatisation au changement d’état, donc de « off » à « on ».

Il va falloir que je trouve une astuce pour outre–asser cela car il arrive souvent que 2 évènements de calendrier soient en même temps.

Le but est de lancer des actions selon des mots clés dans le titre de l’évènement, donc l’attribut « message ».

L’astuce existe déjà :wink: en modifiant le fichier google_calendars.yaml dans lequel doit se trouver ton calendar.test

Cree un evenement « pizza » dans ton calendrier « test »

Ensuite tu peux faire quelquechose comme ceci :

- cal_id: "*****@group.calendar.google.com"
  entities:
  - device_id: pizza_test
    name: Soiree Pizza
    track: true
    search: "#pizza"
    offset: "!!10"

En ajoutant :

  • search : tu cherche uniquement l’occurrence dont tu as besoin
  • offset: le délai AVANT l’ heure de l’évènement. Va faire passer ton binary_sensor à « on » X minutes ou HH:MM avant l’heure prévu sur le calendrier.

Nein, c’est un calendrier icloud déclaré directement dans le fichier config

L’offset est possible je pense dans mon cas mais ça ne résoud pas le pb. Il faut que le calendrier soit sur off pour que le trigger fonctionne. Mettre un offset mettra sur ON et restera tout le long de l’évènement. Donc offset ou pas, le chevauchement sera quand même là.

ah oui c’est vrai. j ai jamais testé

Je ne vois dans ce cas que la possibilité de passer par

{{ state_attr('calendrier.test', 'message') }}

Et tu compares la valeur avec ce que tu as dans ton calendrier.

Arf, du code, je ne sais pas faire… Je vais regarder sur NodeRed mais je pensais que ce serait + facile via l’UI. Je continue mes tests :slight_smile:

Mais c’est quand même étonnant que la carte voit les RDV avant le trigger de HA .

Oui vous avez tous les 2 raison! Mon dernier test avec 1 auto pour chacun de vos cas:

Version attribut dans la condition:

alias: calndreir condition
description: ''
trigger:
  - platform: state
    entity_id: calendar.test
    to: 'on'
condition:
  - condition: state
    entity_id: calendar.test
    state: Test
    attribute: message
action:
  - device_id: 19d31a64a97ddae78975dbedf80c9382
    domain: mobile_app
    type: notify
    title: ''
    message: on avec condition
mode: single

Version attribut dans action/choose:

alias: calndreir condition choose
description: ''
trigger:
  - platform: state
    entity_id: calendar.test
    to: 'on'
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: calendar.test
            attribute: message
            state: Test
        sequence:
          - device_id: 19d31a64a97ddae78975dbedf80c9382
            domain: mobile_app
            type: notify
            title: ''
            message: choose!
    default: []
mode: single

J’ai reçu les 2 notifs en même temps. Match nul.

Autre point que j’ai remarqué, HA met presque 1 minute à désactiver l’entité en fin de RDV. Ce qui fait que si un autre RDV démarre à la même minute que la fin du précédent, ba, HA ne laisse pas le ON en place…
Là, par exemple, j’avais mis un RDV qui se fini à 15h50 et un autre qui débute à 15H50 aussi:

image

L’entité est passée sur OFF 58 secondes après la fin du premier RDV, sans rebasculer sur ON pour le second. C’était probablement la cause de mes échecs de ce matin.

Le décalage du trigger est énorme… J’avais un test de rdv à 15h55, le trigger s’est déclenché à 58!

image

Ce n’est pas très grave en soi, mais ça complique encore pour éviter le chevauchement et et rdv collés.