Je souhaiterais historiser des courbes de température de façon plus juste et représentative de ce que j’ai actuellement.
Sur des courbes de température, je cherche une précision à la valeur exacte sur les valeurs Hautes ou sommets de courbe ainsi que sur les valeurs Basses ou creux de courbe.
Actuellement et sous Jeedom uniquement :
Si mon interprétation des quelques tests que j’ai fait est bonne :
Faire une historisation avec un mode de lissage « Maximum » fausse les valeurs Basses ou creux de courbe…
et faire une historisation avec un mode de lissage « Minimum » fausse les valeurs Hautes ou sommet de courbe…
Je reste donc en Mode de lissage « Moyenne » mais cela ne me satisfait pas vraiment car il y a un écrètage des sommets et creux de courbe et l’historisation ne rends pas compte exactement des valeurs Max et Min.
Le Mode de lissage « Aucun » rends bien compte des valeurs Max et Min et respecte la courbe mais la base de donnée devient beaucoup trop conséquente…
Votre Plugin HistoLisse est semble-t’il très puissant pour certaines opérations liées à l’énergie mais est-il plus généraliste pour « comprendre » que je ne souhaite PAS lisser sur les 4 ou 5 Valeurs Max Haute ET les 4 ou 5 Valeurs Min Basse et faire un lissage de type « Moyenne » en regroupant les points par tranche d’une heure entre ces valeurs Haute et Basse ?
Bonne Journée
Des courbes Historisées en Mode de Lissage moyenne mais qui ne rende pas la valeur exacte Haute et Basse :
Hello,
Jeedom, quand il archive au bout de 24h, lisse par heure donc ne retient forcément qu’une seule valeur par tranche de 1h, si sur 1 heure tu as toutes les 15mn : 15, 20, 28 et 12°
le mode maximum conserve la valeur la plus haute=28, minimum la plus basse=12, le mode moyenne indiquera : 18.
C’est assez imprécis donc.
Mon plugin te permet de garder plusieurs valeurs par heure, par exemple 1 valeur par 1/4 d’heure. Alors oui ça multiplie par 4 le nombre d’enregistrements mais ça reste très correct surtout pour des commandes qui peuvent avoir 60 enr. par heure.
Ce qu’il permet aussi c’est de réduire ensuite ces enregistrements, par exemple à chaque heure il réduit à 1 valeur par minute, puis en fin de journée à 1 valeur par 5mn, puis en fin de semaine à 1 par 15mn puis au bout de 6 mois à 1 par heure.
Ainsi tu gardes la possibilité d’analyse fine pendant une semaine et après 6 mois c’est plus vague (1 par heure) mais c’est quand même archivé sans prendre trop de place.
Tout dépend de la durée dont tu as besoin pour l’analyse des données.
Tu peux aussi choisir pour heure et jour de ne pas faire une moyenne mais de prendre la valeur exacte puis ensuite pour les autres périodes de faire la moyenne.
Oui, j’avais déjà regardé la documentation et vu que cela fonctionnait surtout par tranches de temps…
Puisque pendant ces tranches de temps il y a « manipulation » ou « extraction de valeurs » de la base de données pour en réduire le nombre de point j’osais (j’ose) espérer qu’il était (est) possible d’identifier un changement de tendance (Le Maximum ou le Minimum de la courbe) et garder quelques points en valeur Haute ou Basse tout en réduisant le nombre de point entre ces changements de tendance…
En gros j’aimerais garder tous les points Rouge dans les carrés Vert (Valeurs originales non lissées), les points Bleus étant les points restant après lissage (vision schématique). (Il y a 24h00 entre 2 Lignes verticales Fushia).
Il est toutefois certain qu’avec HistoLisse je perdrais un petit peu moins d’informations que la version actuelle par défaut de Jeedom (en mode Lissage) mais le résultat ne sera probablement pas vraiment la représentation de ce que je recherche à avoir et historiser sur le long terme…
Car si tu ne garde vraiment que les extrèmes (les points rouges) toute tentative de faire une moyenne ensuite (pas stockée dans l’historique mais calculée à postériori) risque de ne pas être représentatif …
Enfin bon au vu du besoin si spécifique, est ce que ça ne pourrait pas s’imaginer stocker la data dans 2 virtuels dont un écrète au min, l’autre au max et aggreger les deux au besoin ?
Les zones à point Rouge sont les zones que je souhaite garder intactes, les points Bleu étant les points restant lissés pour garder au mieux la forme de la courbe (sur le long terme). J’ai donc bien aussi besoin des points Bleu mais avec une moindre précision. Je ne souhaite donc pas garder « QUE » les points Rouge.
Le « besoin » c’est juste pour surveiller une monté brusque en température et savoir quel niveau a été atteint à l’arrêt du processus (courbe à garder sur le long terme).
Je me disais juste, naïvement, que si on pouvait détecter les changements de tendance et ne garder que quelques points exacts autour d’un « sommet » et « creux » de courbe, les autres points pouvant être lissés, cela garderait vraiment l’intégrité globale de la courbe tout en réduisant drastiquement le nombre de valeurs à historiser.
Pour l’instant je m’entraine avec tous les thermomètres et relevés de température que je peux (et c’est comme cela que j’ai vu que les options de réduction de point (lissage) proposées par défaut sous Jeedom pour l’historisation altéraient quand même bien certaines valeurs).
Tout garder (« Aucun » lissage) n’est pas non plus une solution viable sur le long terme mais permet à postériori un Traitement sous Excel (avec le plugin « Data Export »).
HistoLisse améliorera certainement les choses ne serait-ce que sur le lissage d’une période plus courte (10 min au lieu d’une heure par exemple).
J’ai ouvert ce poste car je me suis dis que je n’étais peut-être pas le seul à rechercher une telle optimisation, optimisation qui me semblait au premier abord « simple » (mais qui ne doit pas l’être).
HistoLisse est, à ce que je perçois, bien pensé (et je vais certainement l’acheter) mais il faut toujours qu’il y ait un « Guss » (Moi en l’occurrence ici ! ) qui demande un truc hors des clous !
Oui je ne vois pas trop comment coder le truc pour garder min ET max et la courbe même vaguement, ça ne va pas marcher.
Pour moi la solution passe par une période plus courte, Jeedom lisse à 1 valeur par heure ce qui est insuffisant pour voir les mouvements c’est sûr, HistoLisse te permet de le faire à 1 valeur par 1/4 dheure (ou autre 5mn, 10mn…). 4 valeurs par heure c’est 35000 sur l’année environ 2Mo de données, ça va pour quelques commandes.
Après as-tu besoin au delà de 6 mois par exemple de garder cette précision ? peut être qu’une par demie heure ou heure suffit après 6 mois et donc réduction de la taille en base.
Et si tu regardes ça surtout sur le 1er mois alors tu peux même garder 1 valeur par minute ou par 5mn sur 1 mois sans pénaliser ta base.
Après faut-il configurer en gardant la moyenne ou la valeur brute ? Je crois que la moyenne est quand même plus représentative dans la majorité des cas surtout si elle est calculée sur un intervalle réduit comme 5 ou 15mn. Au vu de ton graph les variations ne sont pas violentes et prennent quand même un certain temps, plus d’une heure.
Les courbes montrées ici sont juste schématiques pour illustrer mon propos et ne reflètent pas la réalité.
Ce Post était juste pour demander si le Plugin HistoLisse (que je n’ai pas encore) permettait de « Garder les valeurs Hautes ET Basses + la forme initiale de la courbe tout en réduisant drastiquement le Nombre de Point ? »
Pour moi cela aurait été un plus indéniable mais entre une Historisation Jeedom avec Lissage et une Historisation Histolisse (+Option Lissage), « y a déjà pas photo » !
On ne peut pas tout avoir et il faut donc choisir le bon compromis en fonction de ses désidératas.
Juste comme ça, j’ai demandé à ChatGPT s’il pouvait faire quelque chose :
J’ai une courbe de température contenant 525600 points sur 730 jours.
Comment réduire fortement le nombre de point et GARDER (ne pas supprimer) les quelques points de température situés sur les sommets ou creux de courbe (valeurs Hautes ou Basses) lors des changements de tendance (sommet de courbe ou creux de courbe = changement de tendance) tout en GARDANT la forme initiale et au plus juste de la courbe ?
La réduction de point devant se faire entre les changements de tendance (sommet ou creux). Est-ce possible ?
Comment faire ?
Apparemment cela ne lui pose pas trop de problème et propose même de m’écrire un script en Python pour faire cela…
Que l’on ne se méprenne pas, je ne demande rien et ne dénigre pas du tout le travail remarquable réalisé.
J’ai sauté le pas et vais pouvoir regarder au plus près les paramètres du Plugin HistoLisse
Rien n’est jamais un problème pour lui !
Après comme l’a dit Aurel, il y a le cas général et le « besoin si spécifique ».
Tu trouveras toujours un moyen de faire pour ce besoin précis mais il ne sera pas forcément applicable à toutes les commandes ni pertinent pour tous les utilisateurs, un plugin comme le mien est forcé d’être le plus « général » possible pour être utile au plus grand nombre tout en restant adaptable au maximum de besoins différents.
Je réfléchis encore à ta demande parce qu’il y a peut-être un intérêt pour un lissage min+max : garder 2 valeurs brutes par intervalle, je fais quelques tests pour voir ce que ça donne et si ça apporte un + par rapport au fait de diviser l’intervalle par 2.
Alors en prenant comme base une journée de 24h pour 192 points.
On veut lisser et diviser par 4 le nombre de points (=2 par heure) en gardant autant que possible les valeurs min et max et sans trop perdre de l’apparence générale de la courbe.
Le classique avec la moyenne, déjà on voit que forcément les max ne sont pas les mêmes puisqu’on fait la moyenne, on ne dépasse pas 85 contre 100 sans lissage, idem pour le min avec 9 contre 2 sans lissage.
On voit aussi que la courbe a des différences nettes, c’est flagrant entre 1h et 3h, entre 20h et 22h. On reconnait moyennement forcément
En prenant la valeur brute la plus proche de l’intervalle (utilisée plutôt pour les binaires), on tombe forcément au hasard. On aura certes les bons chiffres mais à condition qu’ils soient placés à l’intervalle. On perd donc le max de 2h30 ou 6h10 et le min de 4h50 par ex.
Mais je trouve que la courbe générale est plus proche de celle sans lissage qu’avec la moyenne.
Le lissage mix (1 valeur min+1 valeur max par heure), forcément on a une exactitude des min et max, la différence est donc dans la courbe.
La courbe a des plats, l’exemple de 3h à 5h est parlant. Le max est à 3h15, le min à 3h30 et pour la tranche de 4h c’est min à 4h15 et max à 4h50, donc avec 2 min qui se suivent de 3h30 à 4h15 on est à plat.
Même chose pour l’espace entre le max de 6h20 suivi d’un autre max à 7h10 qui masque le presque min de 6h40 (puisqu’il y a déjà un min à 6h10).
Je dirais quand même qu’on reconnait la courbe dans l’ensemble même si on perd des aller-retour min/max, l’avantage ici étant d’avoir les bonnes valeurs absolues.
A voir, est-ce intéressant à ajouter dans le code ?
Houlà ! Ca cogite dur ! Non, Non, on reste comme le Plugin Histolisse à été prévu à l’origine.
La forme de la courbe à une très grande importance et les points doivent suivre au plus près celle-ci. Je ne souhaite pas QUE les Points situés aux changements de tendance (« sommets » ou « creux ») il me faut aussi quelques point entre ces tendances afin d’avoir la forme de la courbe au plus juste.
La réduction de point ne devant se faire que sur les segments situés entre les points Hauts et Bas (à chaque inversion de tendance).
Mais on oublie tout cela pour le moment, (surtout si je suis le seul à être intéressé).
Pour le(s) cas critique je vais Historiser en lissage « Aucun » ET aussi Historiser avec HistoLisse.
(+ cela part aussi sur le cloud Testo), donc ceinture, bretelles et tutti quanti ! Pour les relevés « courant », Histolisse fera Très Bien le job
lol pas mon genre ! Tu m’as mis la puce à l’oreille et finalement ça m’intéresse ce min+max, d’autant plus que ça n’existe pas dans Jeedom !
Par exemple pour les voltages, la moyenne n’a aucun intérêt, l’important c’est un sous ou sur-voltage donc min et max ; pour les binaires idem, ne prendre que le min ou le max est un intérêt faible, max=on va avoir tous les « allumés » mais jamais les « éteints » donc min+max ok.
J’ai donc passé un peu de temps à tester pour trouver la meilleure solution dans un rapport efficacité/vitesse et il y aura dans la prochaine màj du plugin cette fonction « mix » (et d’autres choses, conseil malin : n’attendez pas la màj pour acheter le plugin…).
Surtout ne pas le prendre mal mais, personnellement, ne garder QUE les « Min » ou « Max » (uniquement) ne m’intéresse pas outre mesure. (La forme de la courbe à pour moi son importance, cela parle beaucoup et on peut y voir des anomalies de fonctionnement qui ne seraient pas forcément visibles avec que des « Min » et « Max »).
Je le redis, je n’ai pas de problème avec le Plugin HistoLisse actuel, il faut juste savoir ce qu’il fait et ce qu’il est capable de faire.
A mon sens et actuellement, il ravira surtout ceux qui historisent ce qui touche à l’énergie.
Nop, déjà fait ! : 4 Licences pour 4 Jeedom différents (même si le Plugin n’est pas encore en service sur tous).
**PS (peut-être Hors-Sujet)**
Un truc qui je trouverais vraiment bien serait de rajouter dans l’onglet « Diagnostique » un onglet « Outils » de base de données : Pouvoir supprimer facilement une portion d’historique de Date/Heure/Minute/Seconde à Date/Heure/Minute/Seconde pour, par exemple, capteur défaillant, données abérrantes ou corrompues… etc…
Et tout cela SANS que cette zone manquante soit prise en compte pour le lissage d’HistoLisse.
(Zone Date/Heure/Minute/Seconde à Date/Heure/Minute/Seconde qu’Histolisse devra ignorer totalement (ne fait rien sur cette zone)).
De même : Pouvoir effacer tout l’historique antérieur à telle Date/Heure/Minute/Seconde
Ce PS est hors sujet ici et ce désidérata est même peut-être déjà implanté quelque part (si c’est le cas veuillez m’en excuser).
T’inquiètes ! J’ai bien compris que ça ne te suffisait pas mais développer ce truc très spécifique que pour toi (ou quasi) n’aurait pas eu de sens.
Par contre le min+max intéressera beaucoup de gens pour les voltages surtout mais aussi des niveaux de luminosité voire dans certains cas des puissances etc… Donc c’est une option de plus qui fait sens.