Automation avec GoogleCalendar

Bonjour,

Mon problème

Maintenant que j’arrive à envoyer une notification sur mes Echos Alexa (ils me préviennent de sortir la poubelle le jour venu et me répètent le message toutes les minutes jusqu’à ce que je demande à Alexa de désactiver le boolen de test), j’aimerais que les Echos me listent les évènements du lendemain tous les soirs.
Le calendrier Google est bien connu dans Home Assistant, avec l’aide d’une IA, je suis arrivé à quelque chose qui m’envoie un message sur les Echos d’Alexa mais le message est aucun message. En testant le modèle, il semble que le problème vienne du modèle (template) que voici :

{% set tomorrow = as_timestamp(now().replace(hour=0, minute=0, second=0)) + 86400 %}
{% set events = state_attr('calendar.jpaul_olivier_laposte_net', 'all') %}
{% if events is not none %}
  {% for event in events %}
    {% if as_timestamp(event.start_time) >= tomorrow and as_timestamp(event.start_time) < tomorrow + 86400 %}
      {{ event.message }}
    {% endif %}
  {% endfor %}
{% else %}
  Aucun événement trouvé.
{% endif %}

Je précise que « calendar.jpaul_olivier_laposte_net » m’a été suggéré par Home Assistant quand j’ai eu saisi « calendar. » (il m’a affiché la liste des calendriers présents dans mon calendrier Google.
Je précise également qu’il y a bien un évènement programmé pour le lendemain.

J’imagine que l’IA n’est probablement pas à jour avec la syntaxe de Home Assistant, quelqu’un peut-il m’aider avec la syntaxe du template ?

Merci, amicalement,
Jean-Paul

Ma configuration


[center]## System Information

version core-2024.12.5
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.13.0
os_name Linux
os_version 6.6.66-haos
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.4
Stage running
Available Repositories 1516
Downloaded Repositories 4
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 14.1
update_channel stable
supervisor_version supervisor-2024.12.3
agent_version 1.6.0
docker_version 27.2.0
disk_total 30.8 GB
disk_used 9.8 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.16.0), Let’s Encrypt (5.2.10), ESPHome Device Builder (2024.12.4), Mosquitto broker (6.4.1), Zigbee2MQTT (2.0.0-2), SQLite Web (4.2.2), Piper (1.5.2), Whisper (2.2.0), Matter Server (6.6.1)
Dashboards
dashboards 4
resources 1
views 4
mode storage
Recorder
oldest_recorder_run 15 janvier 2025 à 14:49
current_recorder_run 5 février 2025 à 00:34
estimated_db_size 127.95 MiB
database_engine sqlite
database_version 3.45.3
[/center] Comment récupérer ma configuration : Dans votre HA, Menu latéral `Paramètres` > `Système` > `Corrections` puis les trois petits points en haut a droite > `Informations Système` puis une fois en bas `Copier` ___

Salut

Avec une boucle for dans un bout de code jinja, il faut passer par un namespace pour que la variable soit exploitable en sortie de boucle. Sinon le résultat est vide.
Un exemple là Automatiser l'interface avec des templates? - #6 par titoumimi

Super Pulpy-Luke, merci :slightly_smiling_face:
J’avoue que je me suis fait encore aider par l’IA (ça va plus vite mais ça fait peur)…
Toujours est-il que ça marche.

Bonne soirée,
Jean-Paul

Re-bonjour,

Hier, j’ai mis résolu un peu tôt, je n’avais pas bien testé : ça marche sur un évènement mais s’il y en a plusieurs dans la même journée, un seul est listé.
J’ai tenté de retirer résolu mais ça ne semble pas marcher…

Voici le code de mon template :

{% set ns = namespace(events=[]) %}
{% set tomorrow = as_timestamp(now().replace(hour=0, minute=0, second=0)) + 86400 %}
{% set calendar_entity = 'calendar.jpaul_olivier_laposte_net' %}
{% set events = state_attr(calendar_entity, 'message').split(';') %}

{% for event in events %}
  {% set event_start_time = as_timestamp(state_attr(calendar_entity, 'start_time')) %}
  {% if event_start_time >= tomorrow and event_start_time < tomorrow + 86400 %}
    {% set ns.events = ns.events + [{'start_time': event_start_time, 'message': event}] %}
  {% endif %}
{% endfor %}

{% if ns.events | length > 0 %}
  {% for event in ns.events %}
    {{ event.start_time }} - {{ event.message }}
  {% endfor %}
{% else %}
  Aucun événement trouvé.
{% endif %}

Est-il possible de lister plusieurs évènements à partir du template avec un attribut du genre all (sachant que j’ai tenté all et ça provoque une erreur, j’imagine que l’attribut n’existe pas) ?