Variable dans automatisations

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)

Salut,

Tu peux te faire un blueprint par exemple.
Correction du blueprint => corrige toutes les automatisations d’un coup

Bonjour
Pour certaines actions récurrentes j’ai créé des scripts que j’appelle dans les automatisations notamment pour les notifications

Bonjour,
tu peux mettre ton calcul dans un input que tu réutilises a loisir dans tes automatisations