Case à cochée "Ne pas enregistrer les nouvelles valeurs identiques" + Choix de durée de backup indépendant pour chaque Device Features

Bonjour,

Suite à un gros retour d’expérience concernant l’usage et la taille de DB, je propose cette nouvelle Feature Request et je pense qu’elle rapidement devenir urgente. Je m’explique :

  • J’ai 92 Devices et 143 Devices Features composés de :

    • 4 caméras (avec un poll compris entre 10s et 1 minutes - pour certaines il serait nécessaire d’avoir un temps réel voir toutes les 2 secondes de temps en temps, mais ce n’est pas possible : rend l’interface trop lente),
    • 2 devices / 9 devices features Z-Wave,
    • 9 devices / 18 devices features Philips Hue,
    • 19 devices / 27 devices features Tasmota,
    • 58 devices / 87 devices features MQTT,
  • Là-dessus tournent 25 scènes seulement.

  • Aujourd’hui ma table device_feature_state se compose de plus de 900.000 lignes. Et ma variable DEVICE_STATE_HISTORY_IN_DAYS est réglée sur 30 jours pour les besoins des essais. Mais je devrais normalement avoir besoin de garder en tout temps certaines donnée (aujourd’hui je le fais sur Gladys V3 du coup), comme la consommation électrique en triphasé, etc. Aujourd’hui c’est impossible.

  • La DB pèse environ 250 Mo pour 30 jours, depuis 9 mois que je fais ces essais, si j’avais sélectionner « Toujours garder l’historique » je serais aujourd’hui à presque 3Go de DB.

Tout les 30 jours depuis 6 mois, je suis obligé de repartir sur une installation complète de Gladys V4 car :

  • Aléatoirement mais très régulièrement (environ 15 fois par jour), le tableau de bord met 5 minutes à s’afficher,
  • Aléatoirement, même si le tableau de bord est affiché, l’appui sur une commande du dashboard ne bouge plus le curseur et la commande ne passe pas.
  • Aléatoirement, les scènes ne se déclenchent plus en temps et en heure, idem pour les scènes déclenchées par détecteurs de mouvement, mais se déclenchent 5 minutes voir parfois 30 minutes après l’heure.
  • Après un redémarrage du pi, rien est résolu,
  • Après un stop/start container docker rien n’est résolu,
  • Si je supprime directement en Base de Donnée tous les états des features, gladys reprend bien comme il faut, mais les backups Gladys Plus ne fonctionnent plus.

Prochainement je devrais pouvoir ajouter (une fois le service paru) :

  • 25 devices / 122 devices features au nouveau service Netatmo.

Aujourd’hui ce problème ne concerne visiblement que moi, peut-être parce que j’ai beaucoup de matériel, mais je pense que très rapidement beaucoup de monde risque de se retrouver avec ce genre de problème.

@pierre-gilles nous en avions déjà discuté, mais il me semble qu’une bonne solution serait d’ajouter :

  • La possibilité de pouvoir modifier le « keep_history » pour chaque feature de chaque service (pour exemple personnellement, je n’ai pas le besoin de conserver les valeurs de mes détecteurs de mouvement de chaque pièce - sauf peut-être si je pars en vacance, pas besoin de garder les valeurs de batterie, etc.) bien souvent la « last_value » est suffisante accompagnée de la « last_value_changed ».
  • Une case à cocher sous chaque feature pour dire « je souhaite conserver les nouvelles valeurs si et seulement si elle est différentes de la précédente » (pour exemple : pour le service Philips Hue et prochainement pour Netatmo, nous effectuons des « poll » pour avoir les données. Celle-ci sont donc réinscrites en permanence « toutes les minutes » par exemple dans une nouvelle ligne. Or dans 99,99% des cas on a pas besoin d’une nouvelle ligne dans la table « state », seul suffit le changement de la colonne « last_value_changed » qu’il faudrait au besoin pouvoir comparer avec la colonne « created_at » de la table « device_feature_state » qui comporte d’ailleurs 2 colonnes qui sont aujourd’hui toujours identiques alors qu’elles pourraient trouver ici 1 intérêt.
  • Enfin un dernier point qui aiderait grandement à libérer de l’espace : la sélection indépendante pour chaque feature de la quantité d’historique à garder. En effet le backup d’1 semaine ou 2 peut me suffire pour toute les features de type binaries. Peut-être que le backup des températures / hygrométries peut me suffire sur 1 mois. Mais pour toutes les consommations électrique et d’eau j’aurais besoin ensuite de pouvoir établir les graphiques sur l’année ou sur 10 ans par exemple pour une installations solaire.