Ok. j’ai mis ca en place pour gérer le chauffage de manière automatique. (c’est un peu le principe de la domotique tu me diras…).
J’ai un calendrier sur mon smartphone partagé avec ma femme pour la gestion familiale. Quand nous partons en vacances, c’est écrit dedans. Quand nous rentrons aussi. Pareil si c’est juste un ou deux enfants qui partent.
Le but est d’eteindre le chauffage (ou le rallumer) automatiquement dans les zones de la maison qui sont innocupées.
Le principe est:
- 1 automation se déclenche tout les jours à 1h00 et récupère les événements qui m’intéressent sur les 3 prochaines semaines: départ famille, retour famille, départ enfants, retour enfants… et set un input_datetime correspondant avec la bonne date et la bonne heure (input_datetime.depart_enfants, input_datetime.retour_enfants…)
- une deuxième automation a pour trigger les input_datetime : si input_datetime.depart_enfants = le 22 décembre 2024 à 10h : l’automation se declenche a cette date et heure et eteint le chauffage dans la zone enfant; et ainsi de suite.
Je partage mon automation qui récupère les Evénements du calendrier (la deuxième je pense que tu as compris).
Accroche toi, c’est un peu hard a lire! Réalisée avec l’aide de claude.ai.
Si besoin demande des détails.
alias: Gestion Automatisée Récupération dates Calendrier chauffage
description: >-
Récupère et notifie les événements des 3 prochaines semaines et met à jour les
dates de retour et départ famille et enfants si des événements sont trouvés
triggers:
- hours: "01"
minutes: "0"
trigger: time_pattern
actions:
- target:
entity_id: calendar.chauffage_ics
data:
start_date_time: "{{ now().strftime('%Y-%m-%d 00:00:00') }}"
end_date_time: "{{ (now() + timedelta(weeks=3)).strftime('%Y-%m-%d 00:00:00') }}"
response_variable: calendar
action: calendar.get_events
- variables:
events_list: "{{ calendar['calendar.chauffage_ics']['events'] }}"
first_date_famille: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'retour famille' in summary_normalized or ('retour' in summary_normalized and 'enfant' not in summary_normalized) %}
{{ event.start.split('+')[0] }}{% break %}
{% endif %}
{% endfor %}
first_summary_famille: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'retour famille' in summary_normalized or ('retour' in summary_normalized and 'enfant' not in summary_normalized) %}
{{ event.summary }}{% break %}
{% endif %}
{% endfor %}
first_date_enfants: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'retour enfant' in summary_normalized or 'retour enfants' in summary_normalized %}
{{ event.start.split('+')[0] }}{% break %}
{% endif %}
{% endfor %}
first_summary_enfants: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'retour enfant' in summary_normalized or 'retour enfants' in summary_normalized %}
{{ event.summary }}{% break %}
{% endif %}
{% endfor %}
first_date_depart_famille: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'depart famille' in summary_normalized or ('depart' in summary_normalized and 'enfant' not in summary_normalized) %}
{{ event.start.split('+')[0] }}{% break %}
{% endif %}
{% endfor %}
first_summary_depart_famille: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'depart famille' in summary_normalized or ('depart' in summary_normalized and 'enfant' not in summary_normalized) %}
{{ event.summary }}{% break %}
{% endif %}
{% endfor %}
first_date_depart_enfants: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'depart enfant' in summary_normalized or 'depart enfants' in summary_normalized %}
{{ event.start.split('+')[0] }}{% break %}
{% endif %}
{% endfor %}
first_summary_depart_enfants: |-
{% for event in events_list|sort(attribute='start') %}
{% set summary_normalized = event.summary|lower|replace('é','e')|replace('è','e')|replace('ê','e')|replace('ë','e')|replace('à','a')|replace('â','a')|replace('ä','a')|replace('î','i')|replace('ï','i')|replace('ô','o')|replace('ö','o')|replace('ù','u')|replace('û','u')|replace('ü','u')|replace('ç','c') %}
{% if 'depart enfant' in summary_normalized or 'depart enfants' in summary_normalized %}
{{ event.summary }}{% break %}
{% endif %}
{% endfor %}
current_date_famille: >-
{% if states('input_datetime.date_retour_famille') != 'unknown' and
states('input_datetime.date_retour_famille') != 'unavailable' %}
{{ states('input_datetime.date_retour_famille')|replace(' ', 'T') }}
{% else %}
none
{% endif %}
current_date_enfants: >-
{% if states('input_datetime.date_retour_enfants') != 'unknown' and
states('input_datetime.date_retour_enfants') != 'unavailable' %}
{{ states('input_datetime.date_retour_enfants')|replace(' ', 'T') }}
{% else %}
none
{% endif %}
current_date_depart_famille: >-
{% if states('input_datetime.date_depart_famille') != 'unknown' and
states('input_datetime.date_depart_famille') != 'unavailable' %}
{{ states('input_datetime.date_depart_famille')|replace(' ', 'T') }}
{% else %}
none
{% endif %}
current_date_depart_enfants: >-
{% if states('input_datetime.date_depart_enfants') != 'unknown' and
states('input_datetime.date_depart_enfants') != 'unavailable' %}
{{ states('input_datetime.date_depart_enfants')|replace(' ', 'T') }}
{% else %}
none
{% endif %}
should_notify_famille: >-
{{ first_date_famille|trim != '' and first_date_famille|trim !=
current_date_famille|trim and current_date_famille != 'none' }}
should_notify_enfants: >-
{{ first_date_enfants|trim != '' and first_date_enfants|trim !=
current_date_enfants|trim and current_date_enfants != 'none' }}
should_notify_depart_famille: >-
{{ first_date_depart_famille|trim != '' and
first_date_depart_famille|trim != current_date_depart_famille|trim and
current_date_depart_famille != 'none' }}
should_notify_depart_enfants: >-
{{ first_date_depart_enfants|trim != '' and
first_date_depart_enfants|trim != current_date_depart_enfants|trim and
current_date_depart_enfants != 'none' }}
- choose:
- conditions:
- condition: template
value_template: >-
{{ should_notify_famille or should_notify_enfants or
should_notify_depart_famille or should_notify_depart_enfants }}
sequence:
- choose:
- conditions:
- condition: template
value_template: "{{ should_notify_famille }}"
sequence:
- target:
entity_id: input_datetime.date_retour_famille
data:
datetime: "{{ first_date_famille }}"
action: input_datetime.set_datetime
- choose:
- conditions:
- condition: template
value_template: "{{ should_notify_enfants }}"
sequence:
- target:
entity_id: input_datetime.date_retour_enfants
data:
datetime: "{{ first_date_enfants }}"
action: input_datetime.set_datetime
- choose:
- conditions:
- condition: template
value_template: "{{ should_notify_depart_famille }}"
sequence:
- target:
entity_id: input_datetime.date_depart_famille
data:
datetime: "{{ first_date_depart_famille }}"
action: input_datetime.set_datetime
- choose:
- conditions:
- condition: template
value_template: "{{ should_notify_depart_enfants }}"
sequence:
- target:
entity_id: input_datetime.date_depart_enfants
data:
datetime: "{{ first_date_depart_enfants }}"
action: input_datetime.set_datetime
- variables:
notif_famille: >-
{%- if should_notify_famille -%} {%- set dateF =
first_date_famille|as_datetime -%} {%- set jour =
dateF.strftime("%A")|replace('Monday','Lundi')|replace('Tuesday','Mardi')|replace('Wednesday','Mercredi')|replace('Thursday','Jeudi')|replace('Friday','Vendredi')|replace('Saturday','Samedi')|replace('Sunday','Dimanche')
-%} {%- set mois =
dateF.strftime("%B")|replace('January','Janvier')|replace('February','Février')|replace('March','Mars')|replace('April','Avril')|replace('May','Mai')|replace('June','Juin')|replace('July','Juillet')|replace('August','Août')|replace('September','Septembre')|replace('October','Octobre')|replace('November','Novembre')|replace('December','Décembre')
-%} 👨👩👧👦 Retour Famille mis à jour : {{
first_summary_famille }} (le {{ jour|lower }} {{
dateF.strftime("%d") }} {{ mois|lower }} à {{
first_date_famille.split('T')[1][:5] }}) {%- endif -%}
notif_enfants: >-
{%- if should_notify_enfants -%} {%- set dateE =
first_date_enfants|as_datetime -%} {%- set jour =
dateE.strftime("%A")|replace('Monday','Lundi')|replace('Tuesday','Mardi')|replace('Wednesday','Mercredi')|replace('Thursday','Jeudi')|replace('Friday','Vendredi')|replace('Saturday','Samedi')|replace('Sunday','Dimanche')
-%} {%- set mois =
dateE.strftime("%B")|replace('January','Janvier')|replace('February','Février')|replace('March','Mars')|replace('April','Avril')|replace('May','Mai')|replace('June','Juin')|replace('July','Juillet')|replace('August','Août')|replace('September','Septembre')|replace('October','Octobre')|replace('November','Novembre')|replace('December','Décembre')
-%} 👶 Retour Enfants mis à jour : {{ first_summary_enfants }}
(le {{ jour|lower }} {{ dateE.strftime("%d") }} {{ mois|lower }}
à {{ first_date_enfants.split('T')[1][:5] }}) {%- endif -%}
notif_depart_famille: >-
{%- if should_notify_depart_famille -%} {%- set dateDF =
first_date_depart_famille|as_datetime -%} {%- set jour =
dateDF.strftime("%A")|replace('Monday','Lundi')|replace('Tuesday','Mardi')|replace('Wednesday','Mercredi')|replace('Thursday','Jeudi')|replace('Friday','Vendredi')|replace('Saturday','Samedi')|replace('Sunday','Dimanche')
-%} {%- set mois =
dateDF.strftime("%B")|replace('January','Janvier')|replace('February','Février')|replace('March','Mars')|replace('April','Avril')|replace('May','Mai')|replace('June','Juin')|replace('July','Juillet')|replace('August','Août')|replace('September','Septembre')|replace('October','Octobre')|replace('November','Novembre')|replace('December','Décembre')
-%} 🚶 Départ Famille mis à jour : {{
first_summary_depart_famille }} (le {{ jour|lower }} {{
dateDF.strftime("%d") }} {{ mois|lower }} à {{
first_date_depart_famille.split('T')[1][:5] }}) {%- endif -%}
notif_depart_enfants: >-
{%- if should_notify_depart_enfants -%} {%- set dateDE =
first_date_depart_enfants|as_datetime -%} {%- set jour =
dateDE.strftime("%A")|replace('Monday','Lundi')|replace('Tuesday','Mardi')|replace('Wednesday','Mercredi')|replace('Thursday','Jeudi')|replace('Friday','Vendredi')|replace('Saturday','Samedi')|replace('Sunday','Dimanche')
-%} {%- set mois =
dateDE.strftime("%B")|replace('January','Janvier')|replace('February','Février')|replace('March','Mars')|replace('April','Avril')|replace('May','Mai')|replace('June','Juin')|replace('July','Juillet')|replace('August','Août')|replace('September','Septembre')|replace('October','Octobre')|replace('November','Novembre')|replace('December','Décembre')
-%} 👶🚶 Départ Enfants mis à jour : {{
first_summary_depart_enfants }} (le {{ jour|lower }} {{
dateDE.strftime("%d") }} {{ mois|lower }} à {{
first_date_depart_enfants.split('T')[1][:5] }}) {%- endif -%}
- data:
message: >-
📅 Nouvelles dates pour l'automatisation du chauffage détectées
!
{{ notif_famille }}
{{ notif_enfants }}
{{ notif_depart_famille }}
{{ notif_depart_enfants }}
action: notify.telegram_ben