Automatisation sur évènement de calendrier local HA

Mon problème

Bonjour à tous
J’essaie d’utiliser le calendrier interne de HA pour déclencher des triggers dans mes automatisations, mais ayant suivi les exemples de la doc à la lettre, ça ne fonctionne pas…

Renseigner votre problème
Petite automatisation toute simple, j’essaie d’allumer un circuit d’alimentation du chauffe-eau lorsque j’ai l’évènement « chauffe-eau » dans mon calendrier local (calendrier HA).

J’ai fait l’automatisation suivante, en suivant à la lettre le tuto https://www.home-assistant.io/integrations/local_calendar
Et en particulier l’exemple « Example: Calendar Event Light Schedule » du tuto https://www.home-assistant.io/integrations/calendar#automation

alias: test calendrier essai
description: Test calendrier Essai
trigger:
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.calendrier_ha
  - platform: calendar
    event: end
    offset: "0:0:0"
    entity_id: calendar.calendrier_ha
condition:
  - condition: template
    value_template: "{{ 'Chauffe-eau' in trigger.calendar.calendrier_ha }}"
action:
  - if:
      - "{{ trigger.event == 'start' }}"
    then:
      - service: light.turn_on
        entity_id: light.commutateur_chauffe_eau_tableau_light
    else:
      - service: light.turn_off
        entity_id: light.commutateur_chauffe_eau_tableau_light
mode: queued

L’automatisation plante sur la condition …
Je ne vois pas ce qui ne va pas…
Quelqu’un pour m’aider ?
Merci d’avance !

Ma configuration


System Information

version core-2022.12.7
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.80
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4807
Installed Version 1.28.4
Stage running
Available Repositories 1263
Downloaded Repositories 30
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 9.4
update_channel stable
supervisor_version supervisor-2022.11.2
agent_version 1.4.1
docker_version 20.10.19
disk_total 30.8 GB
disk_used 20.5 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons File editor (5.4.2), MariaDB (2.5.1), Nginx Proxy Manager (0.12.3), Plex Media Server (3.1.2), Samba share (10.0.0), Samba Backup (5.2.0), Mosquitto broker (6.1.3), SQLite Web (3.6.1), InfluxDB (4.5.0), Grafana (8.1.0)
Dashboards
dashboards 2
resources 15
views 10
mode storage
Recorder
oldest_recorder_run 1 novembre 2022 à 12:30
current_recorder_run 19 décembre 2022 à 17:37
estimated_db_size 3737.84 MiB
database_engine sqlite
database_version 3.38.5
___

Hello

Malgre les info que tu donne tu as oublié quelque chose :wink:

mets les journaux de HA et quand tu déclenches en manuel
poste une capture de TRACE
ex:


Si tu regarde l’exemple, je pense que ton value_template n’est pas bon.

automation:
  alias: Front Light Schedule
  trigger:
    - platform: calendar
      event: start
      entity_id: calendar.device_automation
    - platform: calendar
      event: end
      entity_id: calendar.device_automation
  condition:
    - condition: template
      value_template: "{{ 'Front Lights' in trigger.calendar_event.summary }}"
  action:
    - if:
        - "{{ trigger.event == 'start' }}"
      then:
        - service: light.turn_on
          entity_id: light.front
      else:
        - service: light.turn_off
          entity_id: light.front
  mode: queued

Merci Telenaze de ton message.

J’ai corrigé le value template, de la façon suivante :


condition:
  - condition: template
    value_template: "{{ 'Chauffe-eau' in trigger.calendar_event.summary }}"

mais en déclenchant en manuel, j’obtiens l’erreur suivante :
« In ‹ template › condition: UndefinedError: ‹ trigger › is undefined »

Je crois que tu as mis un C majuscule a Chauffe alors que qu’il faudrait un c minuscule.

Je crois que tu as mis un C majuscule a Chauffe

Correction faite, mais sans plus de résultat. Je pense qu’il doit y avoir un problème de syntaxe dans la condition, j’ai essayé pas mal de choses, mais rien n’a fonctionné jusqu’à présent…

Passe par les outils de développement pour décomposer et tester

Désolé, je ne vois pas comment, si tu as une idée, peux-tu m’orienter ?
Merci d’avance

Bonjour,
Grâce à ce post, j’ai découvert cette nouvelle intégration. Je viens de l’ajouter mais forcément la première question qui se pose est : Comment créer un évènement ?
Quelqu’un aurait une piste s’il vous plait ?

Il n’y a pas grand chose à faire à part aller dans les ‹ modèles › et copier/coller

Là comme je n’ai pas tes entités, ça rale en rouge, normal

Bonjour ,
@Pulpy-Luke même avec une config Ok de mon coté, on ne peut accéder à l’objet trigger dans ‹ modèle ›, ni même dans les événements, on ne voit pas le déclencheur du calendrier mais uniquement le déclenchement de l’automatisation.
@Voileux, apparemment l’automatisation ce déclenche. Il faut investiguer en regardant le journal d’execution de l’automatisation (Traces) de la on voit les données du déclencheur et le résultat d’eval de la condition.
Si c’est un prb de déclenchement, il faut faire attention au mode de l’automatisation (conseillé ‹ queued › ou ‹ parallel ›) et au délai ; il faut au moins 15 min avant l’événement en cas de test (les evenements sont lus toute les 15 min)

Oui tu as raison, mais il est quand même possible d’ajouter un variable json qui a la même structure que le trigger. On valide ensuite la ‹ fin › du template

après plusieurs tests, voici celle qui fonctionne chez moi.

alias: 01 calendar
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.device_automation
  - platform: calendar
    event: end
    offset: "0:0:0"
    entity_id: calendar.device_automation
condition:
  - condition: template
    value_template: "{{ 'Front Lights' in trigger.calendar_event.summary }}"
action:
  - if:
      - condition: template
        value_template: "{{ trigger.event == 'start' }}"
    then:
      - service: notify.persistent_notification
        data:
          message: déclenchement calendar
          title: Calendar !
    enabled: true
    else:
      - service: notify.persistent_notification
        data:
          message: pas déclenchement calendar
          title: pas calendar
  - service: persistent_notification.create
    data:
      message: >-
        Event {{ trigger.calendar_event.summary }} @ {{
        trigger.calendar_event.start }}
mode: queued

Merci Telenaze
J’ai suivi ton automatisation, et attendu 15 minutes…. Et ça marche !
Le résultat est ici :


alias: test calendrier essai
description: Test calendrier Essai
trigger:
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.calendrier_ha
  - platform: calendar
    event: end
    offset: "0:0:0"
    entity_id: calendar.calendrier_ha
condition:
  - condition: template
    value_template: "{{ 'Chauffe-eau' in trigger.calendar_event.summary }}"
action:
  - if:
      - condition: template
        value_template: "{{ trigger.event == 'start' }}"
    then:
      - service: light.turn_on
        data: {}
        target:
          entity_id: light.commutateur_chauffe_eau_tableau_light
    else:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.commutateur_chauffe_eau_tableau_light
mode: queued

Un grand merci à tous pour votre aide ! Joyeux Noël…

1 « J'aime »

Tu vas dans l’onglet Calendrier, et tu fais « ajouter un événement » en bas de la page.
Il faut préalablement que tu aies déclaré ton entité « local calendar » dans la page de l’onglet.

1 « J'aime »

Pfff, désolé centré sur la carte que je n’ai même pas remarqué l’onglet sur le côté. Désolé pour la question bête.

1 « J'aime »

Merci pour l’info sur les 15 minutes !

Suite à l’arrêt de garbage collector, j’ai refais ma planification des poubelles jaunes et vertes mais je testais en ne laissant que quelques minutes et le trigger n’était jamais bon :smiley: