Plugin HistoLisse

Voici les informations sur mon nouveau plugin :

  • Nom et id > HistoLisse (histolisse)
    histolisse_icon

  • Permet de gérer finement le lissage des données (history) et leur archivage (historyArch). Par exemple ne garder qu’une valeur par minute entre le jour J et J-14, puis par 15 minutes à compter de la semaine s-2 puis toutes les 3h au delà de 3 mois. Et donc de réduire la taille de la base de données et les sauvegardes.

  • PHP / JS / Json

  • Ni démon ni dépendances ni panel.

  • Cron dédié par heure

  • Payant

  • Moteur en test depuis 3 mois > finalisation de l’interface.

1 « J'aime »

Bonjour,

Je ne trouve pas ça une bonne idée qu’un plugin touche aux données gérées par le core; l’archivage c’est le role et une fonctionnalité du core.

Dommage de ne pas avoir proposé un changement sur le core plutôt qu’un plugin du coup.

4 « J'aime »

Je m’attendais à ce genre de réponse, le débat autour de l’historique dure depuis la création de Jeedom. Entre la fonctionnalité core qui fait le job dans 90% des cas, de façon simple, et une gestion avancée qui permet une approche plus fine et souple.

Beaucoup de plugins « touchent aux données » d’une manière ou d’une autre et/ou font quelque chose qui est pourtant dans les « fonctionnalités du core » en apportant un +, et/ou peuvent planter Jeedom, à minima le ralentir. Donc cet argument me semble disproportionné. Mon plugin, comme tant d’autres, enregistre des données dans l’historique : pas de quoi s’affoler.
Je n’ai rien contre une inclusion à terme dans le core d’une telle avancée, je l’ai proposé il y a plusieurs années, en vain. Mais ça prend beaucoup de place et de temps et ce n’était pas dans les priorités, et là il y a urgence.

On voit bien, notamment depuis l’arrivée du MQTT, qu’un paquet de problèmes se posent avec la taille des tables d’historiques et les difficultés d’affichage des graphiques ensuite qui dégradent énormément l’UX.
A la question « j’ai des données toutes les secondes qui font agoniser ma table et ramer mon Jeedom » la seule réponse « on ne va en retenir qu’une par minute en temps réel et 1 par heure en archive » n’est pas pertinente et useless (suivi du solaire, calculs temps réel etc).
Et on assiste soit à des tables gigantesques qui rendent Jeedom pénible à utiliser, soit à des bidouillages via le plugin script qui mettent bien plus en péril l’UX et le core qu’un plugin fait pour ça et avec les garde-fous adaptés.

Ca fait plus de 300h que je bosse sur mon plugin, avec de multiples versions, J’ai finalement fait le choix de brider mon script de départ pour encadrer plus fortement les possibilités et pour que ça reste sécurisé. On est dans quelque chose qui ne fait que quelques requêtes sql basiques et dont le seul « risque », sur une mauvaise utilisation, est de « perdre » des données historisées (y’a toujours le backup cela dit).

Ce sera à voir avec les tests, mais, pour moi, ce plugin est inoffensif et offre une UX grandement améliorée tout en améliorant les performances de Jeedom de facto.
Dans mon cas c’est une taille pour historyArch divisée par 3 (par 2 pour history) sans rien perdre de l’utilité informative de mon historique, c’est un temps pour le backup Jeedom réduit de 60% et un affichage des graphs temps réel enfin fluide.

Pour donner un exemple, on peut prendre le PAPP dans la téléinfo que beaucoup ont. C’est 10 à 20 enregistrement dans history par minute, on va prendre l’hypothèse basse à 10.
Dans mon cas, hors de question de le lisser à 1mn parce que je fais des calculs avec et que je gère du délestage, j’ai besoin de réactivité en temps réel : par contre au delà de 10mn je n’en ai plus besoin. Dans historyArch, je garde les données pour pouvoir comparer mon mois avec le mois de l’année précédente, notamment analyser par rapport au solaire et checker les ombrages etc… et aussi le comparer à ma conso Enedis qui est en 1 pour 15mn.

Avec Jeedom seul :

  • Aucun lissage possible => 14 400 enregistrements dans history (qui partent dans le backup), tu ouvres un graph à 14h il a => 8400 points à afficher.
  • et comme je ne veux pas de lissage par heure (mais par 15mn), et que pour la purge c’est 1 an (aucun comparatif possible, il me faudrait 1an+qq jours) ou 2 ans, on multiplie par 365*2 dans historyArch on est à => 10 millions de données…!

Avec mon plugin :

  • chaque heure lissage des données si elles ont plus de 1h, sur 1mn (pour garder une info précise sur la journée) => 2 800 enregistrements dans history (x/5), tu ouvres un graph à 14h il a => 1380 points à afficher (x/6).
  • lissage sur 15mn chaque nuit (avant backup) = 96 enregistrements/jour dans le backup (x/150)
  • puis après 12mois+1 = lissage à 1 par jour (je n’ai pas voulu ajouter une purge au plugin) soit au total sur 2 ans, dans historyArch => 35k enregistrements (x/285).

Et bien sûr même chose pour le solaire et à moindre mesure pour d’autres trucs. Donc après on peut dire que ce n’est « pas une bonne idée » mais quand on voit la situation, des millions de données contre quelques milliers, il me semble que l’intérêt est net. :wink:

10 « J'aime »

Oui et non, c’est parfois la sortie d’un plugin qui a donné l’envi à Jeedom de développer des fonctionnalités du core :slight_smile:
Je trouve bien l’idée de faire avancer notre outil préféré :slight_smile:

9 « J'aime »

Bonjour

Discuté avec l’équipe hier ; l’idée du plugin est interessante, et effectivement, nous avons pris en compte la remarque de @Mips

Pour autant, le plugin pourrait servir dans certains cas que le core ne gère pas, et faire des modifs coté core pour un cas d’usage tres précis, viendrait surcharger ce dernier pour une utilisation spécifique. Donc cela donnerait plus de coherence à déporter cela sur un plugin

Pour autant, serait il possible d’ajouter dans le plugin, une mention de type :

« Si vous constatez des incohérences dans les calculs ou affichage d’un plugin, désactivez celui-ci pour confirmer qu’il n’en est pas la cause »

On pourrait ainsi le valider, avec ce message informatif présent.

Merci d’avance

4 « J'aime »

Bonjour,
Je ne vois aucun problème à ajouter ce genre de mention et de toute façon je compte bien être très prévenant dans la doc sur les « risques et bonne pratiques ».
Même si en réalité tel qu’il est fait désormais, très encadré, les risques sont proches de 0 et se limitent à « perdre » une partie de l’historique d’une commande si on a mal configuré un truc. Pour comparer, c’est comme dans Jeedom, si on décoche la case historiser d’une commande par erreur + sauvegarder = efface tout l’historique immédiatement sans délai et même si on recoche tout de suite pour corriger : c’est mort (reste le backup).
J’utilise autant que possible tout ce qui est dispo dans l’API Jeedom (évidemment, on ne peut jamais se prémunir d’un utilisateur qui va bidouiller le code mais c’est le cas avec tous les plugins et le core).

Après il faut relativiser sur le sujet de « données gérées par le core », ce plugin fait des insert et delete dans les tables history, comme un paquet d’autres plugins, rien d’autre. Il ne modifie aucun fichier ni aucune fonction ni aucun affichage ou traitement du core (ne touche pas à l’archivage par exemple). Sans daemon, ni dépendance, ni lien extérieur, son pouvoir de « nuisance » est, à mon avis, très inférieur à la moyenne des plugins.

Bref, j’en suis à plus de 500h de dev et test, parfois on n’a plus les yeux en face des trous mais je crois que ça va. Après j’ai un peu de mal à trouver des dev pour le tester et avoir un retour mais de mon côté ça fait plus de 4 mois qu’il tourne sans problème.

2 « J'aime »

Bien, en l’absence de testeurs, je vais montrer quelques caps.


Page principale


Gestion ajout/suppression

cron
Réglage crons


Gestion des commandes intégrées


Réglage des lissages

A cela s’ajoute la page « diagnostic »


infos générales


infos détaillées


logs des lissages (sauf horaire)


Backup des modifs

supp
Possibilités de supprimer des données orphelines

Des avis ? :wink:

2 « J'aime »

Juste une suggestion: si tu souhaites une réponse, un avis, ouvres un post au moins dans la section Salon des Bêta-Testeurs ou dans la partie publique car ici de toute façon personne ne peut répondre sauf les devs :wink:

2 « J'aime »

Hello,

1er petit retour rapide avant d’aller au taf :

  • Warning & notice
0000|[23-Jun-2025 06:59:34 Europe/Brussels] PHP Warning:  Illegal string offset 'historizedCmds' in /var/www/html/plugins/histolisse/desktop/php/histolisse.php on line 104
0001|[23-Jun-2025 06:59:34 Europe/Brussels] PHP Notice:  Uninitialized string offset: 0 in /var/www/html/plugins/histolisse/desktop/php/histolisse.php on line 104
0002|[23-Jun-2025 06:59:34 Europe/Brussels] PHP Notice:  Uninitialized string offset: 0 in /var/www/html/plugins/histolisse/desktop/php/histolisse.php on line 104
0003|[23-Jun-2025 06:59:34 Europe/Brussels] PHP Warning:  Illegal string offset 'display_name' in /var/www/html/plugins/histolisse/desktop/php/histolisse.php on line 104
0004|[23-Jun-2025 06:59:34 Europe/Brussels] PHP Notice:  Uninitialized string offset: 0 in /var/www/html/plugins/histolisse/desktop/php/histolisse.php on line 104
  • Le bouton Community, ouvre 2 fenêtres simultanées.

  • Etonnant ce choix Jquery pour un nouveau plugin, sachant que dans le futur jQuery ne sera plus chargé par le Core.

Merci. Les warning sont dans la partie « debug » du code que j’ai laissé pour les beta-tests et qui n’est pas « travaillé ». Tu le vois parce que tu n’as pas encore ajouté de commande, ça n’existera pas en stable. Bizarre pour le community, je n’arrive pas à reproduire.
C’est un choix de compatibilité après on verra à l’avenir.

En faite dans tes modales php tu recharge le Js, donc tu te retrouve avec autant d’événement qu’il y a eu de modales d’ouvertes. il faudrait que tu vérifie si ton namespace (histolisse) n’existe pas avant de le recharger, ou supprimer l’import du js dans les modales.

Pour reproduire :

  • ouvre la modale diagnostic.
  • referme celle-ci.
  • clique sur le bouton createCommunityPost

C’est obligé sinon ça ne marche plus !
Tu as récupérer la dernière version ? Il y a une gestion on/off des évènements donc normalement plus de doublon.
Pour ma part je n’ai pas de double ouverture :

Hello,
Ca fait une dizaine de jours que j’ai cliqué sur stable pour le check équipe et pas de news. :face_holding_back_tears:
Bon du coup j’ai complété la doc :

Je pense que tout est prêt… :wink:

Plugin validé

3 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.