Gestion de l’historique de Jeedom

Rédaction : le 03/01/2019

Un article simple, mais souvent négligé. La gestion de l’historique de vos données sous Jeedom.

Jeedom possède une base de données qui va stocker tout ce que vous avez historisé. L’effet est donc que votre base de données va grossir de jour en jour… en toute rigueur. Si vous n’ajoutez pas de nouvelles entrées, la taille va se stabiliser.

L’historisation de vos informations

A ce titre, mon installation comportant plus de 200 scénarios, 27 objets, 426 équipements et 3909 commandes (& informations) à ce jour représente … 215 Mo (ce n’est pas non plus énorme) ! Mais il faut bien le configurer car ce chiffre peut vite être ÉNORME !

Évolution de la taille du backup sur une période d’une semaine

A noter que la fonction backup permet de limiter la taille de ce fichier si nécessaire…

Limitation de la taille de la sauvegarde
Organisation des scénarios
Comment je sais ça ! Cliquez sur résumé domotique !

Très pratique ce résumé domotique ! Vous pouvez voir :

  • si l’équipement est visible ou non,
  • s’il est actif ou non,
  • accéder à ses paramètres (pour notamment gérer son historisation) mais il y a mieux vous verrez plus loin 😉

Mais pourquoi historiser ?

L’intérêt est de :

  • pouvoir accéder à un historique dans le temps,
  • comparer vos données,
  • mais aussi pouvoir effectuer des fonctions de calcul. Sans historisation, cela n’est pas possible.

Vous pouvez configurer à la main, information après information chaque historisation suivant la méthode que vous souhaitez. Cliquez sur l’engrenage (configuration commande ou information, onglet configuration) :

Configuration de la durée d’historisation

Ici c’est le cas d’une information de type binaire. Sur une information de type numérique, vous pouvez appliquer un lissage pour ne conserver que la donnée que vous jugez importante : max, min, moyenne …

Configuration de la méthode de lissage

Il existe une autre manière plus simple pour tout configurer d’un coup ! Cliquez sur Analyse / Historique …

Pour accéder à vos historiques d’informations collectées

Vous pouvez sélectionner les données que vous souhaitez visualiser pour comparer et analyser dans un premier temps …

Je compare ma consommation d’eau sanitaire et l’évolution de la température de l’eau chaude …

Pour configurer plus facilement cet historique, il vous suffit de cliquer sur le bouton Configuration à droite d’Historique. Vous pouvez filtrer les informations pour appliquer plus facilement un filtrage …

Configuration de l’historique

Utilisant beaucoup de virtuels de mise en forme, j’ai limité au maximum l’historisation côté capteurs / actionneurs et j’ai préféré stocker côté virtuels (dans la mesure du possible si virtuel de mise en forme il y a). Et voici les paramètres que j’utilise :

  • binaire de présence – nut : 7 jours, sans lissage ;
  • binaire de présence, alarme – personne : 1 mois, sans lissage ;
  • binaire d’état des capteurs (RFXCom) : 1 mois sans lissage ;
  • binaire d’état des ouvrants (Xiaomi) : 1 mois, sans lissage ;
  • binaire de ping : 7 jours, sans lissage ;
  • suivi de débit internet : 1 mois, minimum stocké ;
  • température : 6 mois sans lissage (quelques moyennes sur les valeurs extérieures avec un 1 an d’historisation) ;
  • humidité : 3 mois sans lissage (quelques moyennes sur les valeurs extérieures avec un 1 an d’historisation) ;
  • consommation (prix/valeur) :
    • journée : 1 semaine ;
    • semaine : 1 mois ;
    • mois : 3 mois
  • aucun stockage de batterie, voltage, absence de fermeture, etc

Voilà, si cela peut vous aider comme configuration et paramétrage !

Les scénarios

Pourquoi cette historisation ? Car si vous utilisez les fonctions de calcul définies dans la documentation Jeedom, il faudra que vous ayez un historique stocké !

Par exemple pour avoir la valeur d’une consommation sur une semaine précédente :

maxBetween(#[Consommation][Electricité][Conso Semaine TOTAL]#,last sunday noon,last sunday 23:59)

Du mois surprécédent :

maxBetween(#[Consommation][Eau][Prix Mois TOTAL]#,last day of 2 months ago noon,last day of 2 months ago 23:59)

Pour avoir la durée du dernier 1 (vrai) d’une présence :

(lastChangeStateDuration(#[Personnes][Maison][Presence]#,1) < 60)

Plus d’informations ici !

Un article court, mais important pour la pérennité de votre installation et son stockage … il m’avait été demandé par un lecteur, le voici donc ! L’intérêt est aussi l’utilisation possible pour traiter les données au mieux dans les notifications (consommation, présence etc) et comprendre ce qui s’est passé !

La conclusion de cet article

Si vous avez aimé cet article, faites-le savoir, partagez-le ! Et n’hésitez pas à me supporter avec un don financier car cela prend du temps de rédiger un article comme celui-ci…

Merci à vous !

One thought on “Gestion de l’historique de Jeedom

  1. Rho encore un super article ! Ca devient pénible 😉

    Sais tu ce qu’il se passe si la taille de ta sauvegarde dépasse les 500Mo que tu as mis ?

  2. Bonjour,

    Super site très didactique.
    J’ai utilisé cette méthode pour modifier mes paramètres d’historisation.
    Ce matin, la fenêtre de configuration globale, accessible depuis l’onglet historique, est vide alors que j’accède bien aux données individuellement.
    Est-ce que quelqu’un a déjà rencontré ce problème ?
    Bonne journée

  3. Bonjour,
    Peut on transférer l’historique d’un équipement vers un autre (semblables bien entendu).
    Je pense notamment lorsqu’on décide de créer un nouveau virtuel de température et de lui affecter l’historique de l’équipement virtualisé.

  4. Bonjour,

    Est il possible de changer la précision d’un historique j’ai un pluviomètre qui retourne 4 chiffre après la virgule mais la courbe d’historique n’en ramème que des nombres à 2 chiffres après la virgule

    1. Il me semble que cela est possible dans les options de l’information que vous stockez. Il y a la fonction arrondi. A défaut, passez à un virtuel associé et la fonction round(x, y). X le nom de l’information, y le nombre de chiffres après la virgule.

  5. Bonjour, une question sur le transfer / modification des données dans l’historique.

    J’ai un virtuel qui a récupéré plus d’un an de conso EDF. PAr contre a l’époque je n’avait pas mis de calcul de cout.
    Sais-tu s’il y a un moyen de transférer l’historique conso, en lui affectant un le multiplicateur cout ?
    Ou plus généralement, copier l’historique d’une commande vers l’autre en y affectant une modification type multiplication sur l’ensemble des données en question / et donc de reconstruirre un historique avec les données existantes mais incomplètes.

    1. Bonjour,
      Effectivement on peut copier l’historique mais pas de possibilité de multiplication.
      Pour ma part, je ferai comme suit :
      – je crée un nouveau virtuel,
      – je copie les données d’origine par copier l’historique,
      – je prends l’ID,
      – je vais dans Adminer (voir dans le blog, j’explique comme l’installer),
      – je cherche la table où sont stockées mes virtuels,
      – son ID, puis je fais une multiplication de toutes les valeurs et multiplication par le coût.

      Par contre, ce sera quand même assez faux car le prix de l’EDF n’est pas juste une multiplication. Différentes taxes sont calculées en fonction de taux fixe et variable et sur le TTC/HT.

      1. ok vu avec :

        UPDATE `history` SET value=value*[prix moyen du Gaz kwh]
        WHERE `cmd_id` = ‘[ID de la dommande historisée]’

        et

        UPDATE `historyArch` SET value=value*[prix moyen du Gaz kwh]
        WHERE `cmd_id` = ‘[ID de la dommande historisée]’

        C’est nickel Merci. 🙂

        On pourrais limite lancer la commande depuis l’interface admin de jeedom.

  6. Bonjour,
    Bravo, super site.
    Je me pose quelques questions au sujet de l’historisation. Est-ce que toutes les valeurs sont historisées ?
    J’ai un scénario déclenché par trigger sur [Sannois Occupé].
    La valeur passant de 0 à 1, le scénario est déclenché; dans le scénario j’ai le test suivant :
    IF #[Sannois][Présence à Sannois][Sannois Occupé]# == 1 AND lastChangeStateDuration(#[Sannois][Présence à Sannois][Sannois Occupé]#,1) < 200
    Je constate dans le log que la valeur retournée pour lastChangeStateDuration à une valeur de 17000 (que je ne m'explique pas). Je m'attendais à avoir une valeur de quelques secondes (Sannois Occupé venant de passé de 0 à 1).
    En revanche le même test lancé 2/3 minutes plus tard que donne une valeur de 170 qui correspond bien.
    Une idée ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *