Bonjour,
J’ai crée (plusieurs) automatisations relativement avancés où je calculs plusieurs valeurs ( une heure de début, une durée, une puissance requise, … )
Ces valeurs sont imbriquées et donc je me retrouve obliger de tous les calculer a chaque étape de mon automatisation :
- sur l’heure de fin :
- action: input_datetime.set_datetime
data_template:
entity_id: input_datetime.heure_fin_schedule
time: >
{% if (now()| as_local).hour >= 22 %}
{% set duree = ( ( state_attr("sun.sun", "next_rising")| as_datetime | as_local ) + timedelta(hours=1) - now()).seconds /3600 %}
{% set forecast = states('sensor.solcast_pv_forecast_forecast_tomorrow') | float(default=0) %}
{% elif (now()|as_local).hour < 6 %}
{% set duree = ( ( state_attr("sun.sun", "next_rising")| as_datetime | as_local ) + timedelta(hours=1) - now()).seconds /3600 %}
{% set forecast = states('sensor.solcast_pv_forecast_forecast_today') | float(default=0) %}
{% else %}
{% set duree = 0 %}
...
sur la durée
- action: input_datetime.set_datetime
data_template:
entity_id: input_datetime.schedule_duree
time: >
{% if (now()| as_local).hour >= 22 %}
{% set duree = ( ( state_attr("sun.sun", "next_rising")| as_datetime | as_local ) + timedelta(hours=1) - now()).seconds /3600 %}
{% set forecast = states('sensor.solcast_pv_forecast_forecast_tomorrow') | float(default=0) %}
{% elif (now()|as_local).hour < 6 %}
{% set duree = ( ( state_attr("sun.sun", "next_rising")| as_datetime | as_local ) + timedelta(hours=1) - now()).seconds /3600 %}
{% set forecast = states('sensor.solcast_pv_forecast_forecast_today') | float(default=0) %}
{% else %}
...
- sur la notification vers mon telephone :
- action: notify.mobile_app_xxx
metadata: {}
data:
title: Schedule Charge
message: >-
{% if (now()| as_local).hour >= 22 %}
{% set duree = ( ( state_attr("sun.sun", "next_rising")| as_datetime | as_local ) + timedelta(hours=1) - now()).seconds /3600 %}
{% set forecast = states('sensor.solcast_pv_forecast_forecast_tomorrow') | float(default=0) %}
{% elif (now()|as_local).hour < 6 %}
{% set duree = ( ( state_attr("sun.sun", "next_rising")| as_datetime | as_local ) + timedelta(hours=1) - now()).seconds /3600 %}
{% set forecast = states('sensor.solcast_pv_forecast_forecast_today') | float(default=0) %}
{% else %}
{% set duree = 0 %}
...
Bref, de la duplication de code dans tous les sens, pas très maintenable
J’ai pas trouvé, mais est-il possible de crée des variables dans les automatisations qui serait utilisables sur plusieurs actions de l’automatisation en cours ( pour éviter de faire ces calculs plusieurs fois et d’avoir un code plus compact et facile a mettre a jour)