# Fonctionnalités avec liste de valeurs

**URL:** <https://community.gladysassistant.com/t/fonctionnalites-avec-liste-de-valeurs/7672>\
**Category:** Développement\
**Created:** [Novembre 11, 2022, 6:43 UTC](https://community.gladysassistant.com/t/fonctionnalites-avec-liste-de-valeurs/7672 "2022-11-11T06:43:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![AlexTrovato](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/alextrovato/32/10705_2.png) [@AlexTrovato](https://community.gladysassistant.com/u/AlexTrovato)\
**Post date:** [Novembre 11, 2022, 6:43 UTC](https://community.gladysassistant.com/t/fonctionnalites-avec-liste-de-valeurs/7672/1 "2022-11-11T06:43:09Z")

</div>

Nous avons de plus en plus de features qui peuvent avoir des valeurs différentes, toutes ne sont pas disponibles sur tous les devices.  
Afin de pouvoir fournir une information plus précise sur les valeurs possibles pour une features en particulier, nous devons donc être capable de connaître et de stocker ces valeurs.

Sujet source :

> [@Thermostat avec Zigbee2MQTT](https://community.gladysassistant.com/t/thermostat-avec-zigbee2mqtt/7634/8):
>
> Pour ton information, le eco\_mode (binary) n’est disponible que sur un seul device zigbee : Sinon on parle également de : system\_mode (enum) : 'off', 'heat', 'cool', 'auto', 'dry', 'fan\_only', 'sleep', 'emergency\_heating' away\_mode (binary) : que se passe-t-il lorsque je suis absent ? regulator\_mode (binary) : régulateur vs thermostat Je parle uniquement de ce que j’ai trouvé dans les documentations zigbee2mqtt. Mais je pense qu’on va vite être bloqué si on n’ajoute pas la notion de ‹&nbsp;…

Ici nous discuterons des solutions possibles pour réaliser ce chantier.

---

<div class="post-metadata">

**Author:** ![AlexTrovato](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/alextrovato/32/10705_2.png) [@AlexTrovato](https://community.gladysassistant.com/u/AlexTrovato)\
**Post date:** [Novembre 11, 2022, 6:48 UTC](https://community.gladysassistant.com/t/fonctionnalites-avec-liste-de-valeurs/7672/2 "2022-11-11T06:48:13Z")

</div>

Pour un premier jet,  
je pense qu’il serait donc utile d’ajouter une liste de valeur optionnelle `managed_values` sur l’objet model `feature` :

```json
{
 device: {
    ...,
    features: [
      {
        name: '...',
        ...,
        last_value: 2,
        managed_values: [0, 1, 2, 7, 8]
      },
      ....,
    ],
  },
}

```

Ainsi, le front pourra vérifier si la liste `managed_values` est renseignée, et conditionner l’afficher selon les valeurs présentes.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Novembre 11, 2022, 6:54 UTC](https://community.gladysassistant.com/t/fonctionnalites-avec-liste-de-valeurs/7672/3 "2022-11-11T06:54:28Z")

</div>

> [@AlexTrovato](#):
>
> je pense qu’il serait donc utile d’ajouter une liste de valeur optionnelle `managed_values` sur l’objet model `feature` :
> 
> ```auto
> 
> ```

Je rappelle qu’on fait du relationnel, donc plusieurs options pour ça:

- La façon relationnel serait de faire une table device\_feature\_managed\_value qui serait en 1-N avec la table device\_feature. C’est plus strict, mais aussi plus lourd à gérer lors de l’insertion/suppression.
- Soit la façon que tu cites, mais du coup il faut sérialiser/de-sérialiser le tableau à l’écriture / la lecture et stocker ça sous forme de string SQLite. ça ouvre la porte aussi à du n’importe quoi vu qu’il faut gérer la cohérence des données dans la partie applicative, et coder les migrations éventuels de données en JS et pas en SQL.

Les deux façons ont leurs avantages et leurs inconvénients honnêtement !
