View on GitHub

Plugin HistoLisse

Documentation officielle du plugin Jeedom HistoLisse

đź”™ Retour au sommaire

âť“ FAQ

Jeedom

Comment fonctionne l’historique de Jeedom ?

→ Vos appareils renvoie des états et des informations que vous pouvez historiser = garder une trace dans la base de données pour ensuite consulter les graphiques ou retrouver des informations à comparer avec des plus récentes.

Par exemple : une prise connectée indique le voltage actuel toutes les 20 secondes (220.15V, 224.2V, 222.35V etc).

💡 L’archivage transfère toutes les données de la table history (les dernières 24h) comme il a lieu à 5h du matin et que par défaut le délai avant archivage est de 2h, ça inclue aussi les dernières données du jour entre minuit et 3h00 (il archive donc de 3h00 à 2h59 le lendemain et non pas de 0h00 à 23h59).


Quelle est la configuration idéale de Jeedom pour utiliser ce plugin ?

Le plus pratique pour configurer ensuite vos lissages est de régler le cron d’archivage à 02h00 mais avec un délai avant archivage de 2h et d’avoir la sauvegarde qui se lance à 05h25.
Éviter les configurations bizarres comme par exemple un délai d’archivage de 24h…


Quelle devrait être la taille de ma base de données ?

Difficile de répondre à ça puisque ça dépend du nombre d’appareils que vous avez et du nombre de commandes historisées ainsi que de l’ancienneté de votre Jeedom.
Disons qu’en général, pour 70 équipements et 200 commandes historisées, une base Jeedom fera entre 30 et 50 Mo avec la table history autour de 5 à 10 Mo et la table historyArch entre 20 et 40 Mo.
En tout état de cause si votre base de données dépasse les 200 Mo vous avez un sérieux problème de nettoyage à faire !


Quel est l’intérêt d’utiliser HistoLisse dans Jeedom ?

Avec plus de 800 heures de développement il faut espérer que ce plugin ait un véritable intérêt !
La problématique, comme expliqué plus haut, est que Jeedom ne propose que :

Pour beaucoup de commandes 1 enregistrement par heure est suffisant, c’est même trop à long terme. Mais ça peut être frustrant quand il s’agit de commande qu’on veut comparer d’un mois ou d’une année sur l’autre. Essentiellement toutes les commandes de consommation de courant ou de production solaire dont on veut garder un historique précis mais léger, toutes les 15 Min ou 30 Min pendant plusieurs mois. HistoLisse permet cela.
A l’inverse, 1 par heure peut-être trop à long terme, HistoLisse permet aussi, par exemple, de ne garder qu’un enregistrement toutes les 6 heures sur du long terme (+ de 3 mois) soit 4 par jour au lieu de 24.

L’autre intérêt est pour les commandes du genre Zigbee (sur courant) ou Téléinfo qui ont tendance à envoyer des données toutes les 1 à 10 secondes ce qui surcharge très vite les tables et ralentit d’autant l’affichage des graphiques.

HistoLisse permet de garder ces enregistrements live à la seconde et de traiter ensuite, à chaque heure, ces commandes avec un intervalle à la minute. On réduit énormément la taille de la table history et donc le temps de chargement des graphiques tout en conservant une précision et la possibilité ensuite de l’archiver par plage de 15 ou 30min.

Parfois sur ces commandes on a besoin de cette haute fréquence d’enregistrements pour faire des calculs immédiats comme par exemple du délestage, des moyennes sur 1 ou 10min ou des choses comme ça.
HistoLisse permet cela aussi via l’âge des données : On peut ne pas traiter les données de la dernière minute de chaque heure (options jusqu’à 2 dernières heures) d’une commande et donc à la fois réduire le nombre d’enregistrements de la journée tout en gardant une information très précise en live.


Les lissages

Comment marchent les périodes de lissage ?

Les lissages fonctionnent avec leur période de traitement correspondante : plage d’une heure, un jour, une semaine, un mois, une année à la fois.
On ne peut donc pas traiter par exemple 3 semaines d’un coup ou alors il faudrait ensuite attendre 3 semaines avant de retraiter la commande, ce serait trop complexe à gérer avec des traitements en doublon.


Quel intervalle utiliser pour rester cohérent ?

Il faut faire attention avec les intervalles pour garder une cohérence dans la lisibilité des données.


A quelle heure programmer mes lissages ?

Tout dépend de votre configuration Jeedom mais si elle correspond à la configuration idéale donnée plus haut alors :

Règle générale : choisissez des heures différentes pour chaque lissage et qui ne soit pas celles de l’archivage ni de la sauvegarde Jeedom.
Pour le lissage Jour, si vous utilisez l’âge des données : il n’en tiendra pas compte, donc il faut le programmer au moins 1h après l’heure de la dernière donnée qui sera traitée par l’archivage (si configuration idéale => lissage Jour programmé à 1h).


Pourquoi les lissages ont lieu Ă  hh:01 et pas Ă  hh:00 ?

A l’heure pile 00 Jeedom effectue tout un tas de tâches et de crons. Votre matériel est alors très sollicité en mémoire et processeur.
Même si les lissages ne durent que quelques secondes, il est plus efficace de les décaler d’une minute pour ne pas surcharger votre matériel.
NB : Même s’il s’exécute à hh:01, le lissage Heure traite bien les données de l’heure précédente entre hh:00 et hh:59 inclus.


Je ne vois pas certains lissages pour une commande

Les lissages ne sont visibles et activables que si le délai de purge de cette commande est supérieur à la période du lissage.
Par exemple si le délai avant purge = 7 jours → les lissages Semaine et suivants ne seront pas visibles.


Combien de temps dure un lissage ?

Un certain temps… tout dépend de votre matériel, de l’occupation de Jeedom à ce moment là etc…
Sur un “vieux” RPI 3b+ avec 2Go de mémoire, il faut un peu moins de 3 secondes pour traiter 10 000 enregistrements répartis sur une vingtaine de commandes. Un RPI 4 avec 8Go peut traiter 100 000 enregistrements à la seconde. En général, le lissage de chaque heure va durer entre 1 et 2 dixièmes de secondes par commande à traiter suivant son volume de données (0 à 1000). Un lissage Mois qui traite 100 000 lignes dure moins de 20 secondes.


Le lissage par Année a-t-il un intérêt réel ?

Généralement non. Vous aurez sans doute déjà un lissage par mois qui fera l’essentiel du travail de réduction des informations. De plus beaucoup de commandes ont une purge inférieure ou égale à 1 an et donc aucune raison de lisser par année. Par contre il peut vous permettre de traiter les quelques commandes avec une purge supérieure à 1 an ou sans purge.

Quand l’utiliser ?
Pour les commandes sans purge ou avec une purge > 1 an.
Lors de la première installation du plugin, pour lisser les données archivées depuis longtemps.
En effet, même s’il est prévu pour se lancer une fois par an, vous pouvez tout à fait le lancer plusieurs fois en changeant son heure/jour/mois d’exécution dans Réglage des lissages pour traiter par plages d’1 an à la fois vos anciennes données.

Exemple :
Vous avez une commande 85 Téléinfo-indexHP lissée en mode maximum par Jeedom mais sans purge avec 4 ans de données dans la table historyArch (admettons qu’on a 4 années complètes de données dont 6 mois sur l’année en cours = 1 valeur/heure → ~35 000 points ).
Objectif : Réduire le nombre de points tout en conservant l’essentiel de l’information.

    • Via la Gestion des commandes vous ajoutez la commande 85 Ă  HistoLisse.
    • Dans le rĂ©glage des lissages vous enregistrez pour AnnĂ©e : 05h00, jour 1, mois 1 donc exĂ©cution le 1er janvier de chaque annĂ©e Ă  5h.
    • Dans le rĂ©glage de la commande 85 vous activez (de prĂ©fĂ©rence uniquement) le lissage AnnĂ©e en mode maximum (pour garder l’index le plus Ă©levĂ© par intervalle) avec un arrondi Ă  0 (les index n’ont pas de dĂ©cimale) et un intervalle Ă  360min (pour ne garder qu’une valeur toutes les 6 heures, c’est suffisant pour un index après 1 an) et vous indiquez pour le Jour Fin -1461 (1461 jours en arrière = 4 ans : valeur maximale autorisĂ©e) le jour dĂ©but va se règler sur -1826 (5 ans) et vous sauvegardez.
    • Vous cliquez sur le bouton “Lancer ces lissages immĂ©diatement”. Ce premier lissage par annĂ©e est fait pour la commande 85 vous pouvez vĂ©rifier dans Jeedom (graphique ou historique) que vous n’avez plus qu’une valeur toutes les 6 heures pour les enregistrements entre 5 et 4 ans avant aujourd’hui.
    • Dans le rĂ©glage de la commande 85 vous changez le lissage AnnĂ©e en indiquant pour le Jour Fin -1095 (3 ans).
    • Vous cliquez sur le bouton “Lancer ces lissages immĂ©diatement”. Ce second lissage par annĂ©e est fait pour la commande 85 pour les enregistrements entre 4 et 3 ans avant aujourd’hui.
    • Dans le rĂ©glage de la commande 85 vous changez le lissage AnnĂ©e en indiquant pour le Jour Fin -729 (2 ans).
    • Vous cliquez sur le bouton “Lancer ces lissages immĂ©diatement”. Ce 3ème lissage par annĂ©e est fait pour la commande 85 pour les enregistrements entre 3 et 2 ans avant aujourd’hui.
    • Dans le rĂ©glage de la commande 85 vous changez le lissage AnnĂ©e en indiquant pour le Jour Fin -363 (1 ans).
    • Vous cliquez sur le bouton “Lancer ces lissages immĂ©diatement”. Ce 4ème lissage par annĂ©e est fait pour la commande 85 pour les enregistrements entre 2 et 1 an avant aujourd’hui.
    • VĂ©rifiez le numĂ©ro du jour d’aujourd’hui, par exemple si nous sommes le 1er juillet 2025 c’est le 182ème jour de l’annĂ©e.
    • Dans le rĂ©glage de la commande 85 vous changez le lissage AnnĂ©e en indiquant pour le Jour Fin -182 (pour finir au 31/12/24). (NB: Les enregistrements entre 1 janvier 2024 et le 1 juillet 2024 seront vĂ©rifiĂ©s en doublon de l’étape 4 mais ce n’est pas un problème.)
    • Vous cliquez sur le bouton “Lancer ces lissages immĂ©diatement”. Ce 5ème lissage par annĂ©e est fait pour la commande 85 pour les enregistrements jusqu’au 31 dĂ©cembre dernier.
    • VoilĂ  ! Vous avez nettoyĂ© votre commande 85 sur la pĂ©riode du 1er juillet 2020 au 31 dĂ©cembre 2024. Les ~35 000 enregistrements sur 4 ans (dont 6 mois sur l’annĂ©e en cours) sont devenus 9424 (73% de rĂ©duction) rĂ©partis en : 5104 (1 toutes les 6h) sur 3,5 ans et 4320 (1 par heure) pour les 6 mois de l’annĂ©e en cours non traitĂ©e. Ces lissages ont divisĂ© par 4 le nombre d’enregistrements sans perte des informations utiles.
    • Dans le rĂ©glage de la commande 85 vous changez le lissage AnnĂ©e en indiquant pour le Jour Fin -1 et les dates vous indiquent dĂ©sormais un traitement (qui aura lieu le 1er janvier 2026) du 31 dĂ©cembre 2024 0h00 au 31 dĂ©cembre 2025 23h59.

Par lot ! Si vous voulez traiter plusieurs commandes à la fois, alors commencez par régler le lissage année pour chaque commande puis aller dans Réglage des lissages et cliquez sur le bouton “Lancer immédiatement” en face de Année. Le lissage par année se lancera pour toutes les commandes réglées.


C’est quoi le mode Mix ?

Ce mode est utile pour les “binary” (qui ne sont jamais lissés dans Jeedom mais peuvent l’être dans HistoLisse). Il peut avoir un intérêt aussi pour des données numériques (Voltage, température etc…).

Il permet de garder 2 valeurs par intervalle : la Minimum et la maXimum, d’où le nom MIX.
Il prend toujours les 1er min et max (ou max et min) de l’intervalle.
Il indique aussi l’heure exacte de la valeur retenue, par ex : 10h01 et non celle de l’intervalle(10h00) contrairement aux autres modes.
Retenez aussi qu’il double le nombre de données donc si intervalle = 1min c’est 2880 valeurs par jour au lieu de 1440. Il est donc conseillé de rallonger (doubler) son intervalle.

Imaginons un détecteur d’ouverture par exemple, c’est un binaire ouvert=1/fermé=0. L’intervalle est réglé à 10min (donc 10h00-10h09 et 10h10-10h19)

Pour les numériques dont on ne veut que les pointes hautes et basses par période, ça présente un intérêt.
Par exemple la température dans un frigo, on peut faire une moyenne mais ça ne dit rien d’un éventuel problème, si durant l’intervalle on a 3 valeurs à 2° puis 1 valeur à 12° la moyenne sera de 4,5° masquant la surchauffe alors qu’avec un mix on aura 2° et 12°.
Idem avec un voltage ou une surtension soudaine (ou suivie d’une soustension) sera masquée par la moyenne. Ex lissage sur 1h de 60 valeurs (1/min) avec 59x 220v et une fois 800v la moyenne retenue sera : 230v…

Pour comprendre quelles valeurs sont retenues et dans quel ordre, voici un tableau exemple pour un intervalle par heure (60min) et 4 données à lisser par intervalle.
cmdb

L’incidence sur la courbe des graphiques est plutôt positive pour des valeurs changeantes, on reconnait plutôt mieux la variance qu’avec une moyenne.
Exemple d’une courbe brute avant lissage : cmdb
et après, la même courbe lissée en Mix : cmdb


Divers

J’ai eu une panne de mon Jeedom pendant 2h ce jour, puis-je rattrapper les lissages non faits ?

  1. Il n’est en général pas possible de rattraper simplement ce qui n’a pas été fait. C’est pourquoi il est très important de configurer des lissages en cascade en ajoutant par exemple un lissage par jour en plus du lissage par heure et éventuellement un lissage par semaine même si c’est avec les mêmes paramètres (mode, arrondi, intervalle) afin d’être sûr que l’information soit au moins traitée une fois en cas de panne.

  2. Cependant le script inclut désormais un auto-contrôle des derniers lissages pour tous les lissages, y compris par heure. Si le dernier (ou les derniers) prévu n’a pas eu lieu il est exécuté avec le nouveau.

    • Exemple : Ă  14h00 votre Jeedom a rebootĂ© pendant 5min empĂŞchant le lissage Heure d’être effectuĂ© Ă  14h01.
    • A 15h01 le lissage Heure se lance et constate qu’il manque celui de 14h01 alors il va changer sa plage de traitement qui va normalement de 14 Ă  15h pour aller de 13 Ă  15h afin de traiter les donnĂ©es oubliĂ©es. Fonctionnement identique pour les autres pĂ©riode (semaine etc).
    • Afin de ne pas trop allonger les traitements, les rattrapages sont limitĂ©s suivant le lissage :
      • Heure : 12 dernières heures
      • Jour : 4 derniers jours
      • Semaine/Mois/AnnnĂ©e : 2 derniers

Evidemment si la panne a duré plus de 12 heures on en revient au point 1.


Est-ce que je risque de perdre des données ?

Il n’y a aucune raison de perdre des données de votre historique en dehors d’une mauvaise configuration de votre part dans le réglage de commande, par exemple vous avez saisi par erreur un intervalle de 600 au lieu de 60 minutes et donc vous n’avez plus qu’un point toutes les 10h au lieu d’un par heure.
Si vous vous en rendez compte rapidement et que ça concerne des données qui ont plus de 24h, il reste la sauvegarde quotidienne de Jeedom pour restaurer votre base de données (ou en ne restaurant que les valeurs manquantes mais c’est assez technique).

Où sont stockées les données ?

→ Dans le dossier data du plugin, via des fichiers json qu’il est fortement conseillé de ne pas modifier !
En cas de “problème”, ils sont aussi dans la sauvegarde quotidienne de Jeedom, dans le répertoire data du plugin.

đź”™ Retour au sommaire