Ajouter des types de fonctionnalités pour la maintenance des aspirateurs

Dans le cadre d’une intégration Roborock externe, plusieurs informations de maintenance sont disponibles mais n’ont actuellement pas de type Gladys dédié.

Exemples :

  • durée de vie restante de la brosse principale
  • durée de vie restante de la brosse latérale
  • nettoyage des capteurs
  • durée de vie de la crépine du dock
  • durée de vie de la brosse de nettoyage du dock
  • durée de vie du système de collecte des poussières

Aujourd’hui ces fonctionnalités doivent être déclarées en unknown, ce qui affiche simplement « Inconnu » dans Gladys.

Serait-il possible d’ajouter des types dédiés dans la catégorie vacuum-cleaner, par exemple :

MAIN_BRUSH_LIFE_REMAINING
SIDE_BRUSH_LIFE_REMAINING
SENSOR_CLEANING_LIFE_REMAINING
DOCK_STRAINER_LIFE_REMAINING
DOCK_CLEANING_BRUSH_LIFE_REMAINING
DUST_COLLECTION_LIFE_REMAINING

Ces valeurs seraient exprimées en pourcentage.

Cela pourrait servir à Roborock mais également à d’autres intégrations d’aspirateurs robots.

Salut @spenceur,

Merci pour ta demande, le besoin est tout à fait légitime : ces données de maintenance ne devraient pas finir en « Inconnu » dans l’interface !

En regardant les 6 types proposés, on a fait un constat : ce sont tous exactement la même chose sémantiquement : « durée de vie restante d’un composant, en % ». Seul le nom de la pièce change (brosse principale, brosse latérale, sac à poussière…). Or dans Gladys, le nom est déjà porté par le champ name de la fonctionnalité, et un appareil peut avoir plusieurs fonctionnalités de même catégorie/type (comme une multiprise avec plusieurs switch/binary).

Plutôt que d’ajouter 6 types spécifiques aspirateur, on a donc préféré une approche générique dans cette PR : feat(device): add generic maintenance feature category

Concrètement, ça ajoute une catégorie transverse maintenance avec un seul type life-remaining (capteur 0-100 %, lecture seule). Ton intégration Roborock crée alors une fonctionnalité par composant :

  • catégorie maintenance, type life-remaining, nom « Brosse principale »
  • catégorie maintenance, type life-remaining, nom « Brosse latérale »
  • etc.

Ce que ça apporte par rapport aux types spécifiques :

  • Ça couvre tes 6 cas, mais aussi tous ceux qu’on n’a pas listés (patins de lavage, détergent…) et les autres appareils à consommables (purificateurs d’air, adoucisseurs…), sans avoir à refaire une PR dans Gladys à chaque nouveau composant ou nouvelle marque.
  • Rien n’est perdu côté usage : affichage en %, graphiques, et scènes (« m’alerter quand la brosse passe sous 10 % ») fonctionnent pareil, car les scènes ciblent une fonctionnalité précise, pas un type.
  • On évite de faire grossir indéfiniment le catalogue de types (et la liste déroulante MQTT :sweat_smile:), chaque entrée étant un contrat public qu’on ne peut plus retirer ensuite.

La seule différence, c’est que le libellé du composant vient de ta fonctionnalité plutôt que d’une traduction intégrée à Gladys — mais c’est justement ce qui rend le système flexible.

Ça sera disponible dans la prochaine release. N’hésite pas si tu vois un cas que ce type générique ne couvrirait pas !

Je ferme ce post car la fonctionnalité est disponible dans Gladys Assistant 4.86 :