Automatisation liée à un calendrier

Bonjour à tous,
J’ai une automatisation que ne devrait se lancer que quand un évènement est présent dans le calendrier, malheureusement, cette dernière se lance tous les jours même quand l’évènement n’apparait pas dans le calendrier.
Est-ce que quelqu’un accepterait de me relire pour m’indiquer où je me suis trompé s’il vous plait ?

- id: '1613835496855'
  alias: Au boulot_Marc
  description: ''
  trigger:
  - platform: time
    at: 07:45:00
  condition:
      - condition: state
        entity_id: calendar.marc
        state: ULE
        attribute: message
  action:
  - service: notify.alexa_media_egensperger_echo_dot
    data:
      data:
        type: tts
      message: Marc, il est l'heure d'aller à l'école. Bonne journée.
  mode: single

Ma configuration


System Health

version core-2021.5.0
installation_type Home Assistant OS
dev false
hassio true
docker true
virtualenv false
python_version 3.8.9
os_name Linux
os_version 5.4.83-v8
arch aarch64
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 5000
Installed Version 1.12.4
Stage running
Available Repositories 893
Installed Repositories 15
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 5.13
update_channel stable
supervisor_version supervisor-2021.04.3
docker_version 19.03.15
disk_total 219.4 GB
disk_used 10.8 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Samba share (9.3.1), Let’s Encrypt (4.11.0), File editor (5.3.1), Check Home Assistant configuration (3.7.1), Samba Backup (4.5.0), Terminal & SSH (9.1.3), deCONZ (6.8.0), AirCast (3.1.0), Visual Studio Code (3.3.0), MariaDB (2.3.0), Mosquitto broker (5.1.1), Zigbee2mqtt (1.18.1-1)
Lovelace
dashboards 2
resources 9
views 7
mode storage
___

Bonjour Egensperger,
Je pense que tu as déjà un problème d’indentation dans condition (2 tab de trop)
essayes comme çà:

  condition:
  - condition: state
    entity_id: calendar.marc
    state: ULE
    attribute: message

Je vais essayer ça, merci

Je voudrai profiter de ce sujet pour demander si il est également possible de faire des automations avec un CalDav du NAS Synology car dans outils et dev je n’est que On / OFF

Merci d’avance :slight_smile:

Désolé, je n’utilise pas le calendrier syno pour le moment.

Bonjour à tous,
J’ai essayé les corrections proposées, malheureusement le problème persiste. Je pense que cela vient du fait qu’il trouvera toujours des occurrences « ULE » dans mon calendrier (forcément, je vais bosser régulièrement…).
J’ai une automatisation qui fonctionne nickel pour penser à sortir les poubelles.Celle ci se déclenche à l’heure de l’évènement.

- id: '1613657363988'
  alias: Sortir les poubelles
  description: ''
  trigger:
  - platform: state
    entity_id: calendar.domotique
    to: "on"
  condition:
  - condition: state
    entity_id: calendar.domotique
    state: Sortir les poubelles
    attribute: message
  action:
  - service: notify.notifier_sms_marc
    data:
      title: Info
      message: (message HA) Il faut sortir les poubelles.
  mode: single

Ce que je voudrais pour mon autre automatisation, ce n’est pas qu’elle se déclenche à l’heure où je commence le travail mais qu’elle se déclenche plus tôt dans la journée.
Vous auriez une idée de comment je peux procéder s’il vous plait ?
Bonne journée à tous.
Marc

Voila mon Automatisation:

- alias: '[SENSOR] JOUR DES POUBELLES'
  id: 8d6a76c569fe4d28a8a8d79bd79131e8
  description: notify la sortie des poubelles
  trigger:
  - platform: time
    at: 01:00:00 #A changer par l'heure que tu souhaite avoir la notification
  condition:
  - condition: or
    conditions:
    - condition: state
      entity_id: sensor.poubelle_noir
      state: '0'
    - condition: state
      entity_id: sensor.poubelle
      state: '0'
  action:
  - service: notify.notify
    data:
      message: '{{ ''Jour des poubelles Jaune ♻️ et Noir 🚮'' if is_state(''sensor.poubelle'',
        ''0'') else ''Jour des poubelles noir 🚮'' }}'

Donc tu crées un sensor à partir de ton calendrier ? Comment tu fais cela ?

@egensperger
Je n’est pas créer mon sensor, j’ai utilisé une intégrations qui permet plusieurs variables (semaine paire/impaires, fériés …)

Le voici: (ca va créer un agenda à part directement sur home assistant donc pratique pour différencier celui personnelle ou familial.

Toutefois, je pense qu’il est tout à fait possible de créer un sensors en utilisant un sensor semaine paire et donc créer un second sensor poubelle en indiquant si semaine paire et si ont est (ex:mardi) alors notification.

Voici le code partager ici sur le forum pour savoir si c’est une semaine paire:

binary_sensor:
  - platform: template
    sensors:
      semaine_paire:
        value_template: >
          #Récupération du numéro de semaine
          {% set numero_de_semaine = (now()).isocalendar()[1] %}
          #Calcul du modulo (0 si paire)
          {%set modulo = (numero_de_semaine % 2) %}
          #Affectation de l'état de l'entité
          #Si 0 alors pair donc mettre 'not' pour avoir 1 et donc Vrai quand la semaine est paire
          {{ not modulo }}

Hello,
Merci pour la réponse, personnellement, j’utilise un calendrier dédié à la domotique donc pas vraiment besoin de cette intégration.
Ce que je cherche à faire finalement, c’est que l’on me prévienne à l’avance (à une heure déterminée) qu’un évènement va avoir lieu ce jour.
Concrètement, si je travaille un jour (à 8h30) que j’ai une notif ce même jour à 7h45.

Dans ce cas il te faut mettre un

trigger:
  - platform: time
    at: 01:00:00 #A changer par l'heure que tu souhaite avoir la notification
- id: '1613657363988'
  alias: Sortir les poubelles
  description: ''
  trigger:
  - platform: time
    at: 06:45:00 #A changer par l'heure que tu souhaite avoir la notification
  - platform: state
    entity_id: calendar.domotique
    to: "on"
  condition:
  - condition: state
    entity_id: calendar.domotique
    state: Sortir les poubelles
    attribute: message
  action:
  - service: notify.notifier_sms_marc
    data:
      title: Info
      message: (message HA) Il faut sortir les poubelles.
  mode: single

Merci pour le conseil, je l’ai mis en application. On va voir si ça fonctionne.
Marc

Hello,
J’ai suivi les conseils donnés mais ça ne fonctionne pas. Je pense que ça vient du fait que la demande d’avertissement soit antérieure au début de l’évènement concerné.
Je ne vois vraiment pas comment faire :no_mouth:

Merci pour ton retour en effet il va falloir créer un value template, je m’en occupe cette après midi :slight_smile:

le voici @egensperger

Tout d’abord il faut creer un sensor qui va calculer dans combien de minute à lieu l’évenement de ton calendrier:

- platform: template
  sensors:
    upcoming_event:
        friendly_name: Time Until Next Event
        icon_template: mdi:calendar
        value_template: >- #agendamq est à remplacer par le nom de ton agenda referencer dans HA.
          {% if states.calendar.agendamq.attributes.start_time %}
            {{((as_timestamp(states.calendar.agendamq.attributes.start_time) - as_timestamp(now())) / 60) | default(99) | int }}
          {%- else -%}
            0
          {%- endif %}

Et enfin, ont peux créer l’automatisation universelle à tout prochain événement du calendrier:

- alias: '[NOTIFY] Calandar event'
  description: notify prochaine event
  trigger:
    - platform: state
      entity_id: sensor.upcoming_event
  condition:
    - condition: or
      conditions:
        - condition: state
          entity_id: sensor.upcoming_event
          state: '60'
        - condition: state
          entity_id: sensor.upcoming_event
          state: '30'
        - condition: state
          entity_id: sensor.upcoming_event
          state: '15'        
  action:
  - service: notify.notify
    data:
      title: 📅 {{state_attr('calendar.agendamq', 'message')}}
      message: Prévu dans {{states('sensor.upcoming_event')}} minutes.
  id: 38f2b639bbeb41d3b81836e71aaf59bb

J’ai juste remarqué une attention de la part de HA mais n’empêche en rien le fonctionnement:

Logger: homeassistant.helpers.template
Source: helpers/template.py:1366
First occurred: 15:15:08 (2 occurrences)
Last logged: 15:15:08

Template variable warning: 'mappingproxy object' has no attribute 'start_time' when rendering '{% if states.calendar.agendamq.attributes.start_time %} {{((as_timestamp(states.calendar.agendamq.attributes.start_time) - as_timestamp(now())) / 60) | default(99) | int }} {%- else -%} 0 {%- endif %}'

Voila voila ! n’hésitez pas à faire remonter vos avis ou conseils :slight_smile:

1 « J'aime »

Hello,
Merci pour le boulot, je vais essayer ça de ce pas. :grin:

Ça fonctionne ! Merci beaucoup !!!

Après un constat j’ai corrigé une erreur qui peux l’empêcher de fonctionner dans son automatisation @egensperger

1 « J'aime »

Je regarde ça, encore merci.

Depuis peu je rencontre une difficulté sur l’agenda.
J’ai décidé de découper l’agenda en 2 avec une partie anniversaire mais depuis l’agenda principale reste bloqué et n’affiche que l’événement all_day mais n’interroge pas les futurs événements…donc le sensor upcoming met des valeurs -3000 (minutes).
le but étant d’un agenda de prédire les événement futur :stuck_out_tongue:

#config.yaml
calendar:
  - platform: caldav
    username: !secret IDcalendar_caldav_syno
    password: !secret Passcalendar_caldav_syno
    url: !secret URLcalendar_Caldav_syno
    #calendars:
    #   - 'AgendaMQ'
    days: 30
    custom_calendars:
      - name: "Anniversaire"
        calendar: "AgendaMQ"
        search: ".+Anniversaire"
      - name: "AgendaMQ"
        calendar: "AgendaMQ"
        search: ".*"

On peux voir qu’il y a bien un événement ce jour dans -4h :stuck_out_tongue:


upcoming

Si jamais vous avez la solution, Mille merci :slight_smile:

Bonjour,
J’ai remarqué aussi que ça ne fonctionnait pas top. Malheureusement, la construction étant encore en cours et ayant déménagé en location pour le moment, je n’ai plus HA qui tourne pour l’instant. Quand je m’y remets je vous tiens au courant si u’e trouve une parade.