Automatisation pour déterminer les minutes de soleil en plus?

Bonsoir, je cherche à construire une automatisation pour déterminer les minutes de soleil en plus (ou en moins) par rapport à la veille. Quelqu’un aurait-il ça sous le coude ?
J’ai essayé avec chatgpt mais impossible d’écrire l’automatisation sans qu’il y ait une erreur, la dernière ligne ne veut rien savoir. Celle-ci:
value: ‹ {{ states(‹ sensor.sun_duration ›) }} ›
Voilà ce qui m’est proposé

Pour créer une automatisation dans Home Assistant qui calcule le nombre de minutes de soleil supplémentaires ou en moins pour Vagney (88), vous pouvez utiliser les capteurs d'ensoleillement intégrés. Home Assistant dispose généralement d'un capteur `sun.sun` qui fournit des informations sur l'heure de lever et de coucher du soleil.

Voici un exemple de configuration d'automatisation pour calculer la différence en minutes de soleil par rapport au jour précédent :

### Étape 1 : Créer un sensor pour la durée d'ensoleillement

D'abord, vous devez créer un sensor pour calculer la durée d'ensoleillement. Ajoutez ceci à votre fichier `configuration.yaml` :

```yaml
sensor:
  - platform: template
    sensors:
      sun_duration:
        friendly_name: "Durée d'ensoleillement"
        value_template: >
          {% set sunrise = state_attr('sun.sun', 'next_rising') %}
          {% set sunset = state_attr('sun.sun', 'next_setting') %}
          {% if sunrise and sunset %}
            {% set duration = (as_timestamp(sunset) - as_timestamp(sunrise)) / 60 %}
            {{ duration | round(0) }}
          {% else %}
            0
          {% endif %}

Étape 2 : Créer l’automatisation

Ensuite, ajoutez l’automatisation pour calculer la différence avec le jour précédent :

automation:
  - alias: 'Comparer la durée d\'ensoleillement'
    trigger:
      - platform: time
        at: '00:00:00'  # Déclenche chaque jour à minuit
    action:
      - service: input_number.set_value
        target:
          entity_id: input_number.sun_duration_difference
        data:
          value: >
            {% set today_duration = states('sensor.sun_duration') | int %}
            {% set yesterday_duration = states('input_number.yesterday_sun_duration') | int %}
            {{ today_duration - yesterday_duration }}
      - service: input_number.set_value
        target:
          entity_id: input_number.yesterday_sun_duration
        data:
          value: '{{ states('sensor.sun_duration') }}'

Étape 3 : Créer les entités nécessaires

Vous devez également définir un input_number pour stocker la durée d’ensoleillement d’hier :

input_number:
  yesterday_sun_duration:
    name: Durée d'ensoleillement d'hier
    initial: 0
    min: 0
    max: 1440  # Minutes en une journée
    step: 1

  sun_duration_difference:
    name: Différence de durée d'ensoleillement
    initial: 0
    min: -1440  # Minutes en une journée
    max: 1440
    step: 1

Résumé

  1. Le sensor.sun_duration calcule la durée d’ensoleillement pour le jour courant.
  2. L’automatisation se déclenche chaque jour à minuit, compare la durée d’ensoleillement d’aujourd’hui avec celle d’hier, et stocke la différence.
  3. Les input_number permettent de conserver la durée d’hier et de stocker la différence.

Note

  • Assurez-vous d’avoir redémarré Home Assistant après avoir ajouté ces configurations pour qu’elles prennent effet.
  • Vous pouvez consulter les valeurs des input_number.sun_duration_difference et input_number.yesterday_sun_duration dans l’interface de Home Assistant pour voir les résultats.

N’hésitez pas à adapter ces configurations selon vos besoins spécifiques !

1 « J'aime »

Tu veux les minutes en plus le soir ou sur toute la journée ?

J’aimerais connaître le nombre de minutes de soleil en plus ou en moins sur la journée complète en fait

Il doit y avoir plus simple et robuste mais je stockerais la durée du jour dans un helper en utilisant next_setting (prochain couhé) et next_rising (prochain levé) genre à 1h du matin. Ça donne la valeur du jour.
À l’heure où j’écris ce sont les données pour demain car le soleil s’est déjà levé et couché:

- Levé du soleil demain: {{ as_timestamp(states.sun.sun.attributes.next_rising) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}
- Couché du soleil demain: {{ as_timestamp(states.sun.sun.attributes.next_setting) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}
- Temps de soleil demain à mettre dans un helper: {{ (as_timestamp(states.sun.sun.attributes.next_setting) - as_timestamp(states.sun.sun.attributes.next_rising)) | timestamp_custom('%H:%M:%S') }}

Puis la comparer avec la valeur actuelle le jour suivant à 1h du matin.

Sinon regarde un peu les possibilités avec sun2:

Merci de m’avoir répondu. sun2 ne me donne pas ce que je cherche. Pour ce qui est des modèles, je suis vraiment trop nul pour savoir comparer les valeurs sur 2 jours consécutifs et en faire la différence. Un petit coup de pouce serait le bienvenu.

Hello,

Avec Sun2 proposé par @Cloom tu aurais facilement tout ce dont tu as besoin sans passer par une automatisation ou des helpers, en activant l’entité Daylight qui est inactive par défaut

{% set daylight_yesterday = state_attr('sensor.maison_sun_daylight', 'yesterday') %}
{% set daylight_today = state_attr('sensor.maison_sun_daylight', 'today') %}
{% set daylight_tomorrow = state_attr('sensor.maison_sun_daylight', 'tomorrow') %}
{% set diff_sec_today = ((daylight_today - daylight_yesterday)|float(0) * 60 * 60)|int %}
{% set diff_sec_tomorrow = ((daylight_tomorrow - daylight_today)|float(0) * 60 * 60)|int %}

Aujourd'hui il y a {{ timedelta(seconds=diff_sec_today) }} de soleil en plus qu'hier
Demain il y aura {{ timedelta(seconds=diff_sec_tomorrow) }} de soleil en plus qu'aujourd'hui

A+

2 « J'aime »

Merci c’est tout à fait ce que je voulais faire. Bravo

1 « J'aime »