Je déménage dans quelque mois aussi ![]()
Je viens de faire le test tout fonctionne comme sur des roulettes du moment qu’il n’y a pas d’événement toute la journée « all_day »
sinon il se fige sur l’événement de la journée…
Il faudra que j’essaie à nouveau mais avant le débranchement, il me lançait l’alerte programmée même quand l’événement n’apparaissait pas dans la journée. ![]()
Étrange si tu as l’occasion plus tard de me faire remonter l’exemple
Je le ferai dès que possible, merci
Bonjour, est-il possible de faire un TTS la veille d’un événement ? Exemple par rapport a « sortir les poubelles », je voudrais avoir le TTS et une notifications sur smartphone la veille de l’évènement car les poubelles passent très tot chez moi
Auriez-vous une solution ?
Merci d’avance.
Salut,
Tu peux récupérer la date de début (start_time) ou de fin (end_time) des évènements du calendrier (gmail chez moi)
un exemple de 24h avant la fin (dans un binary_sensor)
- platform: template
sensors:
retour24h:
friendly_name: Retour <24h
value_template: >
{% if is_state('calendar.maison_vide', 'on') %}
{%- set diff = as_timestamp(state_attr('calendar.maison_vide','end_time')) - as_timestamp(now()) -%}
{%- if diff <= 86400 and diff >= 0 -%}
true
{%- else -%}
false
{%- endif -%}
{% else %}
false
{% endif %}
C’est un des premiers trucs que j’ai mis dans HA. C’est peut-être pas le code le plus optimal possible mais l’idée est là
Et si l’événement est mis sur « toute la journée » dans le calendrier ça va fonctionner ?
Toute la journée, c’est juste une heure de début et une fin à 0h00
A toi d’adapter, parce que être alerté 24H avant 0H00 ça peut être drôle à différents niveaux
Je vais essayer ça je te remercie, je reviens vers toi dés que j’ai pu tester ![]()
Je suppose que les 24h c’est le chiffre 86400 ?
Oui : 24 heures = 1440 minutes = 86400 secondes… (attention, retour à l’école primaire)
Code à tester dans le modèle, coté Outils de développement
Merci je vais tester ! Et oui moi et les chiffres ça n’a jamais fait bon ménage ![]()
@Pulpy-Luke je rencontre un erreur sur le code indiquant que la valeur par defaut n’est pas défini pourrais tu me dire a coter de quoi je suis passé ?
Logger: homeassistant.helpers.event
Source: helpers/template.py:423
First occurred: 16:28:41 (2 occurrences)
Last logged: 16:28:41
Error while processing template: Template("dans {{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) /86400+1) | int(0) }} jours")
Error while processing template: Template("{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) /86400+1) | int(0) }}")
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1585, in forgiving_as_timestamp
return dt_util.as_timestamp(value)
File "/usr/src/homeassistant/homeassistant/util/dt.py", line 129, in as_timestamp
raise ValueError("not a valid date/time.")
ValueError: not a valid date/time.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 421, in async_render
render_result = _render_with_context(self.template, compiled, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1906, in _render_with_context
return template.render(**kwargs)
File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "<template>", line 1, in top-level template code
File "/usr/local/lib/python3.10/site-packages/jinja2/sandbox.py", line 393, in call
return __context.call(__obj, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1588, in forgiving_as_timestamp
raise_no_default("as_timestamp", value)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1395, in raise_no_default
raise ValueError(
ValueError: Template error: as_timestamp got invalid input '' when rendering template 'dans {{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) /86400+1) | int(0) }} jours' but no default was specified
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 537, in async_render_to_info
render_info._result = self.async_render(variables, strict=strict, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 423, in async_render
raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: ValueError: Template error: as_timestamp got invalid input '' when rendering template 'dans {{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) /86400+1) | int(0) }} jours' but no default was specified
Le template du sensor :
- platform: template
sensors:
next_anniversary:
friendly_name: >-
{{ (states.calendar.agendamq_anniversaire.attributes.message) }}
value_template: >-
dans {{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) /86400+1) | int(0) }} jours
# {{ strptime(states.calendar.agendamq_anniversaire.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%A %d %B") }}:
# {{ states.calendar.agendamq_anniversaire.attributes.message }}
# {%- if states.calendar.agendamq_anniversaire.attributes.location %} at {{ states.calendar.agendamq_anniversaire.attributes.location -}}
# {% endif %}
icon_template: >-
{% if is_state('calendar.agendamq_anniversaire', 'on') %}
mdi:crown
{% else %}
mdi:calendar-clock
{% endif %}
- platform: template
sensors:
next_anniversary2:
friendly_name: >-
{{ (states.calendar.agendamq_anniversaire.attributes.message) }}
value_template: >-
{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) /86400+1) | int(0) }}
# {{ strptime(states.calendar.agendamq_anniversaire.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%A %d %B") }}:
# {{ states.calendar.agendamq_anniversaire.attributes.message }}
# {%- if states.calendar.agendamq_anniversaire.attributes.location %} at {{ states.calendar.agendamq_anniversaire.attributes.location -}}
# {% endif %}
icon_template: >-
{% if is_state('calendar.agendamq_anniversaire', 'on') %}
mdi:crown
{% else %}
mdi:calendar-clock
{% endif %}
Salut.
Vite fait sans pour autant être certain les as_timestamp(xxx) sont de templates avec des valeurs par défaut à préciser et que j’ai jamais réussi à exploiter.
À la place je fais un xxx|as_timestamp c’est plus facile.
Essaye déjà ça
Dans le même genre d’idée moi j’aime mieux les state_attr('xx,' yy') plutôt que states.xx.attributes.yy
Modification faite mais une autre erreur apparait moins importante :
- platform: template
sensors:
next_anniversary:
friendly_name: >-
{{ (states.calendar.agendamq_anniversaire.attributes.message) }}
value_template: >-
{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(0)(now())) /86400+1) | int(0) }} jours
# {{ strptime(states.calendar.agendamq_anniversaire.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%A %d %B") }}:
# {{ states.calendar.agendamq_anniversaire.attributes.message }}
# {%- if states.calendar.agendamq_anniversaire.attributes.location %} at {{ states.calendar.agendamq_anniversaire.attributes.location -}}
# {% endif %}
icon_template: >-
{% if is_state('calendar.agendamq_anniversaire', 'on') %}
mdi:crown
{% else %}
mdi:calendar-clock
{% endif %}
- platform: template
sensors:
next_anniversary2:
friendly_name: >-
{{ (states.calendar.agendamq_anniversaire.attributes.message) }}
value_template: >-
{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(0)(now())) /86400+1) | int(0) }}
# {{ strptime(states.calendar.agendamq_anniversaire.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%A %d %B") }}:
# {{ states.calendar.agendamq_anniversaire.attributes.message }}
# {%- if states.calendar.agendamq_anniversaire.attributes.location %} at {{ states.calendar.agendamq_anniversaire.attributes.location -}}
# {% endif %}
icon_template: >-
{% if is_state('calendar.agendamq_anniversaire', 'on') %}
mdi:crown
{% else %}
mdi:calendar-clock
{% endif %}
Erreur:
Logger: homeassistant.helpers.template
Source: helpers/template.py:537
First occurred: 17:45:02 (56 occurrences)
Last logged: 17:58:02
Template variable warning: 'homeassistant.util.read_only_dict.ReadOnlyDict object' has no attribute 'start_time' when rendering '{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(0)(now())) /86400+1) | int(0) }} jours'
Template variable warning: 'homeassistant.util.read_only_dict.ReadOnlyDict object' has no attribute 'start_time' when rendering '{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(0)(now())) /86400+1) | int(0) }}'
Ça c’est probablement une entité vide. Donc pas de start_time
C’est bon cette fois-ci:
voici la solution:
- platform: template
sensors:
next_anniversary2:
friendly_name: >-
{{ (states.calendar.agendamq_anniversaire.attributes.message) }}
value_template: >-
{% if states.calendar.agendamq_anniversaire.attributes.start_time %}
{{((as_timestamp(states.calendar.agendamq_anniversaire.attributes.start_time) - as_timestamp(now())) / 60) | default(99) | int }}
{%- else -%}
-1
{%- endif %}
icon_template: >-
{% if is_state('calendar.agendamq_anniversaire', 'on') %}
mdi:crown
{% else %}
mdi:calendar-clock
{% endif %}
