Valeur max de la journée au lieu de 24h

Bonjour,

Ma question concerne la température maximum de la journée (après minuit) mais peut concerner n’importe quelle autre valeur.

J’ai un capteur de température sensor.sonde_cour_temperature que j’utilise pour obtenir la valeur maximum sur les 24h dernière heure glissante.
Problème, jusqu’à midi, j’ai la température maximum de la veille mais pas celle de la journée actuelle

Pour obtenir la valeur maximum sur 24h j’ai ajouté dans la configuration

    # Statistiques de température
  - platform: statistics
    name: "Température Extérieur Max sur 24h"
    entity_id: sensor.sonde_cour_temperature
    unique_id: temperature_max_exterieur_24h
    state_characteristic: value_max
    max_age:
      hours: 24

J’ai commencé à créer un template qui stocke la valeur maximum à minuit mais fausse piste, c’est pour stocker la maximum de la veille
Y a t’il une méthode pour que mettre à zéro à minuit temperature_max_exterieur_24h ? Ou peut-être qu’une condition qui filtre sur la date du jour pourrait limiter le volume de donnée à mettre dans temperature_max_exterieur_24h

En attendant je continu mes recherches.

Salut,

Tes deux énononcées me semble contradictoires :

Je ne sais pas si c’est exactement ce que tu veux mais avec 24h glissante, ça me parait pas la solution pour avoir le maxi de la journée !!

Ceci dit, à mon avis c’est pas les stats qu’il faut utiliser mais une entité avec un state_class de type measurement => Sensor Entity | Home Assistant Developer Docs
L’intérêt c’est de pouvoir définir une période de remise à zéro avec last_reset (minuit pour la journée ou tot le matin proche de l’aube pour partir du plus froid) dans l’utility meter

1 « J'aime »

Je viens de tilter

Est-ce qu’un utility meter avec un cycle quotidien pourrait répondre à mon besoin ?

1 « J'aime »

Ah je crois avoir vu ça il y a quelques semaines avant d’avoir ce besoin

En effet ça à l’air de mieux répondre ce que recherche.
Je teste ça dès que je peut

Question sur le stockage long terme des données.

Je ne les utilisent pas encore. Si j’utilise stat_class j’ai l’impression que ça les utilisent.

Est-ce bien le cas ? Je préfère avancer par étapes et le stockage long terme sera pour plus tard.
Autant éviter de pourrir ma BdD avec des tests oublié pendant des années

A toi de voir. Mais essayer de réinventer ce qui est déjà existant ne me semble pas forcément la meilleure option

En effet, réinventer ce qui est existe n’est pas l’idéal. Je réorientés mes recherches en ce sens (merci pour le rappel).
J’ai trois pistes intéressante. Je suis en train de tester la première

1 - Avec un template pour créer un sensor avec trigger : Daily min max temperature with time stamp
2 - Un custom composant où l’on peut modifier l’heure de reset : Daily Min Max
3 - Un autre custom avec reset à heure fixe (minuit) mais pouvant remonter les mini, maxi, somme, moyenne : HADailySensor

Je pense poster mes tests pour les suivants qui rechercheraient le même usage

Premier exemple en suivant Daily min max temperature with time stamp
Pour résumer, si la température actuelle est supérieure à la valeur maximum précédemment sauvegardée, on remplace la valeur maxi par l’actuelle. Idem dans l’autre sens pour le mini.

J’ai une sonde de température extérieure sur sensor.sonde_cour_temperature
Le template va créer deux entités :

  • Température maximum journalière
  • Température minimum journalière
    Il est possible de modifier l’heure de reset pour tester le template quelques minutes après la sauvegarde du fichier

A ajouter à configuration.yaml ou un fichier inclus dans la configuration

# Température min/max de la journée en cours
# Reset à minuit
# https://community.home-assistant.io/t/daily-min-max-temperature-with-time-stamp/303581/26
template:
  - trigger:
    - platform: time
      at: "00:00:00"
    - platform: template
      value_template: "{{ states('sensor.sonde_cour_temperature') > states('sensor.stats_cour_temperature_max_jour') }}"
    sensor:
      - name: Température maximum journalière
        unique_id: stats_cour_temperature_max_jour
        unit_of_measurement: "°C"
        device_class: temperature
        icon: mdi:thermometer-chevron-up
        state: "{{ states('sensor.sonde_cour_temperature')}}"
        attributes:
          datetime: "{{ now() }}"
  - trigger:
    - platform: time
      at: "00:00:00"
    - platform: template
      value_template: "{{ states('sensor.sonde_cour_temperature') < states('sensor.temperature_minimum_journaliere') }}"
    sensor:
      - name: Température minimum journalière
        unique_id: stats_cour_temperature_min_jour
        unit_of_measurement: "°C"
        device_class: temperature
        icon: mdi:thermometer-chevron-down
        state: "{{ states('sensor.sonde_cour_temperature')}}"
        attributes:
          datetime: "{{ now() }}"

En théorie, un redémarrage rapide de HA suffit (je ne maîtrise pas encore cette notion). Si les entités ne remontent pas, envisagez un redémarrage complet de HA.

Voici le retour des entités… reste à voir ce que ça retournera après minuit.

Hum :thinking:
Je dois rater un truc dans la compréhension de la mécanique…
Mettre la température mesurée à 0h00 dans une entité qui s’appelle stat min ou max ça donne pas le min maxi de la journée ou des 24h… Mais juste la valeur à minuit

Les composants custom, ça, ça marche mais ça reste des trucs écrits et maintenus par d’autres donc le jour où c’est plus maintenu, tu es marron.
Pour ce genres de trucs je privilégie les mécanismes de base

+1 pour les custom… C’est pour cela que je les testerai si les template ne fonctionnent pas comme je le souhaite

L’idée de reprendre la valeur à minuit permet de remonter le min/max à partir de cette date/horaire
Le max va évoluer toute la matinée et représentera donc le maximum connu depuis minuit
Le min peut encore diminuer pendant la nuit ou la soirée. Si ce n’est pas le cas, le minimum de la journée était bien à minuit
C’est assez souvent le comportement que le trouve sur les stations météo autonome ou Netatmo que j’utilise à la maison

En bonus on peut remonter l’horaire du min/max car stocké en attribut (pas encore testé)

Sans ça à 6h du matin j’avais le maximum sur 24h, soit la veille vers 14h (retourne 32° max à 6h du matin c’est perturbant). En mon sens inutile pour avoir une information basique. Le 24h glissant est plus intéressant pour d’autres usage (statistique, scientifique ou que sais-je)

Donc pour toi, le min max, c’est comparer les valeurs prises à minuit et conserver la plus grande et la plus petite ?

Quel max ? Puisque tu ne prends qu’une valeur à minuit (et rien pendant les 24H qui suivent), tu peux très bien avoir une température plus importante à 14H, ce que j’appelle un max et ne rien en savoir.

Je ne sais pas mais j’ai pas l’impression que ça apporte une valeur plus cohérente ici…
Pour moi, tu as la valeur min max de la température à minuit (et donc pas des 24H) sur toute la durée des mesures (pas non plus sur 24H glissantes).

Salut @Pulpy-Luke et merci de prendre le temps pour lever les doutes

Il y a deux trigger dans le template. Le premier pour minuit. Le second quand la température augmente (dans le cas du température max).
Ce n’est pas parfait mais je ne vois pas comment avoir la température maximum de la journée à 6h du matin qui ne soit pas 32°… Sur 24h c’est valable mais pas sur la journée calendaire

Exemple que retourne l’application Netatmo. Le maximum est celui trouvé depuis minuit. Hier on était à 28° et je préfère ce que me retourne l’application Netatmo (16.5°). Même pour ma chérie qui est dépassée par l’informatique et fait un usage basique de la meteo, elle râle quand elle voit un max élevé le matin (il fait frais le matin).

Techniquement, le deuxième trigger ne s’exécute jamais. Sur la console de développement j’ai bien True qui remonte.
Idem avec un automatisme créé pour tester. Le trigger basé sur un template ou un autre trigger basé sur la comparaison de valeur entre entité ne fonctionne pas.
Je continue mes investigations

Exemple d’un automate où les trigger ne s’enclenche pas. Seul le changement d’état avec une conditions derrière fonctionne parfaitement

Édit : j’ai ajouté une tempo sur les trigger pour poster ici… Ça semble fonctionner. Je continue mon analyse

alias: Test température minimum
description: ""
trigger:
  - platform: time
    at: "00:00:00"
  - platform: state
    entity_id:
      - sensor.sonde_cour_temperature
    not_to:
      - unavailable
      - unknown
  - platform: numeric_state
    entity_id: sensor.sonde_cour_temperature
    for:
      hours: 0
      minutes: 1
      seconds: 0
    below: sensor.temperature_minimum_journaliere
  - platform: template
    value_template: >-
      {{ states('sensor.sonde_cour_temperature') <
      states('sensor.stats_cour_temperature_min_jour') }}
    for:
      hours: 0
      minutes: 2
      seconds: 0
condition:
  - condition: numeric_state
    entity_id: sensor.sonde_cour_temperature
    below: sensor.temperature_minimum_journaliere
action:
  - service: notify.mobile_app_huawei
    data:
      message: Déclenchement température minimum
mode: single

Maintenant oui, mais dans le code d’hier c’était pas du tout le cas

Plutot que de faire ta mesure à minuit vises la fin de nuit (donc vers 6h) et tu auras à pas grand chose près le mini de la journée… Donc en définissant le maxi à la valeur mini (ons suppose que quand le soleil se leve, ça ne peut faire que chauffer), tu es presque toujours bon.

Je ne sais pas comment marche netatmo, mais c’est surement pas un truc qui s’initialise à minuit tous les jours

Quand je disais de ne pas refaire des trucs qui existent : tu es en plein dedans.
Est-ce vraiment utile de faire des automatisations (exécution potentielle toutes les minutes) pour obtenir des stats alors que c’est une fonction de base ?

1 « J'aime »

Probablement, comme je ne sait pas créer ces stats, au fil des recherches je retombe toujours sur les même travers. Aurai tu un exemple avec stats pouvant répondre au besoin ? J’ai l’impression de tourner en rond et les seule solutions qui existent en ligne réinvente la roue.

Essaye ça :

type: vertical-stack
cards:
  - type: statistic
    entity: sensor.sonde_jardin_temperature
    period:
      calendar:
        period: day
    stat_type: min
    name: Min
  - type: statistic
    entity: sensor.sonde_jardin_temperature
    period:
      calendar:
        period: day
    stat_type: max
    name: Max
  - type: history-graph
    entities:
      - entity: sensor.sonde_jardin_temperature

1 « J'aime »

Hooo je suis sur cul
Quand j’ai vu cette carte, j’ai pensé graphique sans lire la définition

Je vais voir si j’arrive à récupérer ces valeurs pour les placer dans une carte de ce type : Dashboard - 🌻 Minimalist - #273 par Florian_Ferry

Actuellement les Min et Max sont sur 24h.
Elles sont affichées grâce à custom:multiple-entity-row (voir code après la capture écran)
Je vais voir si il existe l’équivalent pour les cards
A moins que tu ai déjà un lien dans ta trousse à outils ?

Mon tableau température en cours de conception

Code de la carte « Extérieur »

type: entities
state_color: false
theme: transparent
entities:
  - entity: sensor.sonde_cour_temperature
    name: Température
    type: custom:multiple-entity-row
    style: |
      .entity:not(.state)>div {
        color: var(--secondary-text-color);
      }
    state_header: Actuelle
    entities:
      - entity: sensor.temperature_exterieur_min_sur_24h
        name: Min
      - entity: sensor.temperature_exterieur_max_sur_24h
        name: Max
  - entity: sensor.sonde_cour_humidite
    name: Humidité
  - entity: sensor.sonde_sejour_pression_tendance
    name: Tendance
  - type: custom:swipe-card
    reset_after: 5
    parameters:
      roundLengths: true
      effect: coverflow
      speed: 650
      spaceBetween: 20
      threshold: 7
      coverflowEffect:
        rotate: 80
        depth: 300
        start_card: 1
    cards:
      - type: custom:hui-element
        card_type: horizontal-stack
        cards:
          - type: custom:mini-graph-card
            align_icon: state
            line_width: 3
            color_thresholds:
              - color: '#ef1d0f'
                value: 25
              - color: '#ef5a0f'
                value: 24
              - color: '#f0da11'
                value: 22
              - color: '#11f13a'
                value: 19
              - color: '#1da4f2'
                value: 15
            entities:
              - entity: sensor.sonde_cour_temperature
                index: 0
            hour24: true
            more_info: false
            points_per_hour: 1
            show:
              labels: false
              name: false
          - type: custom:mini-graph-card
            align_icon: state
            entities:
              - entity: sensor.sonde_cour_humidite
                index: 0
            hour24: true
            line_color: '#1da4f2'
            more_info: false
            name: Salon
            line_width: 3
            points_per_hour: 1
            show:
              labels: false
              name: false
      - type: custom:hui-element
        card_type: horizontal-stack
        cards:
          - type: custom:mini-graph-card
            align_icon: state
            entities:
              - entity: sensor.sonde_sejour_pression
                index: 0
            hour24: true
            line_color: '#A700FF'
            more_info: false
            name: Salon
            line_width: 3
            points_per_hour: 1
            show:
              graph: bar
              labels: false
              name: false
          - type: custom:mini-graph-card
            align_icon: state
            entities:
              - entity: sensor.sonde_sejour_pression
                index: 0
            hour24: true
            line_color: '#A700FF'
            more_info: false
            name: Salon
            line_width: 3
            points_per_hour: 1
            show:
              graph: bar
              labels: false
              name: false
title: Extérieur

Mini graph permet de faire aussi de trucs avec les stats

type: custom:mini-graph-card
entities:
  - entity: sensor.sonde_jardin_temperature
    name: Jardin
    hours_to_show: 6
    points_per_hour: 60
show:
  fill: fade
  legend: true
  extrema: true
hour24: true

image

Merci @Pulpy-Luke pour tout l’aide apportée

Pour clôturer le sujet, j’ai besoin d’entités pour être réutilisé avec custom:multiple-entity-row
Je retient ta recommandation concernant les cartes statistic comme tu l’indique sur le message 15. C’est très bon et je l’utiliserai pour d’autres usages.

J’ai créé autant d’entité que j’ai besoin de valeur min/max et je vais les déplacer dans un fichier en dehors de configuration.yaml
Les problèmes de trigger que j’ai remonté plus haut venait d’une erreur de syntaxe. J’ai édité les précédentes réponses si ça ne dénature par les échanges fais sur ce sujet.

Voici le rendu final avec des exemples de code en fin de réponse.
Des couleurs seront ajoutée ultérieurement en fonction des valeurs

Encore merci pour ton aide

Le code de la carte "Extérieur"
state_color: false
theme: transparent
entities:
  - entity: sensor.sonde_cour_temperature
    name: Température
    type: custom:multiple-entity-row
    style: |
      .entity:not(.state)>div {
        color: var(--secondary-text-color);
      }
    state_header: Actuelle
    entities:
      - entity: sensor.sonde_cour_temperature_minimum_journaliere
        name: Min
      - entity: sensor.sonde_cour_temperature_maximum_journaliere
        name: Max
  - entity: sensor.sonde_cour_humidite
    name: Humidité
  - entity: sensor.sonde_sejour_pression_tendance
    name: Tendance
  - type: custom:swipe-card
    reset_after: 5
    parameters:
      roundLengths: true
      effect: coverflow
      speed: 650
      spaceBetween: 20
      threshold: 7
      coverflowEffect:
        rotate: 80
        depth: 300
        start_card: 1
    cards:
      - type: custom:hui-element
        card_type: horizontal-stack
        cards:
          - type: custom:mini-graph-card
            align_icon: state
            line_width: 3
            color_thresholds:
              - color: '#ef1d0f'
                value: 25
              - color: '#ef5a0f'
                value: 24
              - color: '#f0da11'
                value: 22
              - color: '#11f13a'
                value: 19
              - color: '#1da4f2'
                value: 15
            entities:
              - entity: sensor.sonde_cour_temperature
                index: 0
            hour24: true
            more_info: false
            points_per_hour: 1
            show:
              labels: false
              name: false
          - type: custom:mini-graph-card
            align_icon: state
            entities:
              - entity: sensor.sonde_cour_humidite
                index: 0
            hour24: true
            line_color: '#1da4f2'
            more_info: false
            name: Salon
            line_width: 3
            points_per_hour: 1
            show:
              labels: false
              name: false
      - type: custom:hui-element
        card_type: horizontal-stack
        cards:
          - type: custom:mini-graph-card
            align_icon: state
            entities:
              - entity: sensor.sonde_sejour_pression
                index: 0
            hour24: true
            line_color: '#A700FF'
            more_info: false
            name: Salon
            line_width: 3
            points_per_hour: 1
            show:
              graph: bar
              labels: false
              name: false
          - type: custom:mini-graph-card
            align_icon: state
            entities:
              - entity: sensor.sonde_sejour_pression
                index: 0
            hour24: true
            line_color: '#A700FF'
            more_info: false
            name: Salon
            line_width: 3
            points_per_hour: 1
            show:
              graph: bar
              labels: false
              name: false
title: Extérieur
Le code des Min/Max Extérieur
template:
# Température min/max de la journée en cours
# Reset à minuit
# https://community.home-assistant.io/t/daily-min-max-temperature-with-time-stamp/303581/26
# Cour extérieure
  - trigger:
    - platform: time
      at: "00:00:00"
    - platform: template
      value_template: "{{ states('sensor.sonde_cour_temperature') > states('sensor.sonde_cour_temperature_maximum_journaliere') }}"
    sensor:
      - name: Sonde cour Température maximum journalière
        unique_id: stats_cour_temperature_max_jour
        unit_of_measurement: "°C"
        device_class: temperature
        icon: mdi:thermometer-chevron-up
        state: "{{ states('sensor.sonde_cour_temperature')}}"
        attributes:
          datetime: "{{ now() }}"
  - trigger:
    - platform: time
      at: "00:00:00"
    - platform: template
      value_template: "{{ states('sensor.sonde_cour_temperature') < states('sensor.sonde_cour_temperature_minimum_journaliere') }}"
    sensor:
      - name: Sonde cour Température minimum journalière
        unique_id: stats_cour_temperature_min_jour
        unit_of_measurement: "°C"
        device_class: temperature
        icon: mdi:thermometer-chevron-down
        state: "{{ states('sensor.sonde_cour_temperature')}}"
        attributes:
          datetime: "{{ now() }}"

Bonjour,

Je découvre HA.

Depuis quelques jour, j’ai utilisé votre code pour avoir les min et max par jour et pas par 24h.
Ca a marché tant qu’il faisait froid ! (la température restait sous les 10°C)

Mais depuis 2 jours, au moment ou la température passe de 9,9°C à 10,1°C ça plante complètement.
Comme si le trigger ne considérait pas que 10,1 °C est supérieur à 9.9 pour le max, et comme si pour le min 10,1 °C était inférieur à 4°C !
Bref j’ai l’impression que le chiffre des dizaines n’est pas pris en compte. ???
Je suis complètement perdu.

je mets en PJ la photo de l’écran ou l’on voit le phénomène.
Nota, le second jour, j’ai forcé le réinit à 9h car à minuit la température était supérieure à 10°C, D’ailleurs on voit aussi que le passage de >10 à <10 , juste après minuit ne se passe pas bien non plus.

Est ce que ce problème vous est apparu ?

template:
# Température min/max de la journée en cours
# Reset à minuit
# https://community.home-assistant.io/t/daily-min-max-temperature-with-time-stamp/303581/26
# Cour extérieure
  - trigger:
    - platform: time
      at: "04:00:00"
    - platform: template
      value_template: "{{ states('sensor.temperature_dehors_temperature') > states('sensor.sonde_exterieur_temp_max_jour') }}"
    sensor:
      - name: sonde_exterieur_temp_max_jour
        unique_id: stats_ext_temp_max_jour
        unit_of_measurement: "°C"
        device_class: temperature
        icon: mdi:thermometer-chevron-up
        state: "{{ states('sensor.temperature_dehors_temperature')}}"
        attributes:
          datetime: "{{ now() }}"

  - trigger:
    - platform: time
      at: "04:00:00"
    - platform: template
      value_template: "{{ states('sensor.temperature_dehors_temperature') < states('sensor.sonde_exterieur_temp_min_jour') }}"
    sensor:
      - name: sonde_exterieur_temp_min_jour
        unique_id: stats_ext_temp_min_jour
        unit_of_measurement: "°C"
        device_class: temperature
        icon: mdi:thermometer-chevron-down
        state: "{{ states('sensor.temperature_dehors_temperature')}}"
        attributes:
          datetime: "{{ now() }}"

Salut,

J’ai l’impression que ton code traite les valeurs comme des chaines de caractère ce qui expliquerait le phénomène.

Je me renseigne…