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 %}