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
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
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
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
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
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 ?
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.
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 ?
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
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() }}"