Dev module xiaomi v4

Bonjour à tous,

Je suis actuellement en train de développer le module xiaomi pour pouvoir l’intégrer dans la v4. Pour le moment je souhaite avoir le minimum de fonctionnelle (à ce moment j’arrive à récupérer les device notamment ceux pour la température et ceux pour l’humidité.

J’ai un problème pour pouvoir modifier mon device sur preact.

const xiaomiCapteurTemperature = update(state.xiaomiCapteurTemperature, {
    [index]: {
        features: {
            [value.getAttribute('data-key')]: {
                [field]: {
                    $set: value.value
                }
            }
        }
    }
}

Je souhaite donc modifier la valeur device_feature de mon device. Pour cela, je récupère index qui est le numéro du device (parmi la liste des devices xiaomi), ensuite features pour l’attribut features (qui liste toutes les features donc températures, humidité, …) et ensuite j’ai data-key qui permet de récupérer le numéro de la feature pour avoir la bonne. Ensuite je veux modifier field qui est donc la colonne ‘nom’ et ensuite je termine par set la valeur avec la nouvelle valeur.

Pourquoi ca marche pas ? (erreur côté front)

Uncaught ReferenceError: xiaomiCapteurTemperature is not defined

Merci :slight_smile:

2 Likes

T’aurais un lien vers les sources ? C’est un peu restreint là :slight_smile:

Oui c’est pas faut c’est un peu compliqué de m’aider alors que je vous donne pas les sources :smiley:

Attention j’ai une branche xiaomi il faut bien rester dedans. Et les fichiers se trouvent dans /front/src/routes/integrations/all/xiaomi

Merci :slight_smile:

Et je viens de me rendre compte que je suis pas sur le repo officiel ^^

Pas grave je ferai tout bien tout à l’heure.

En lisant rapidement, je dirais que t’as un souci de scope.
Ta variable est déclarée soit ds le if, soit ds le else. Lignes 75 et 87.
Arrivé ligne 95, ta var est undefined car hors scope de tes conditions.

1 Like

D’accord je vais look ça ! :slight_smile: merci

Merci !!! Ca fonctionne niquel quelle erreur de débutant :smiley: Merci bien ! Ca fonctionne niquel

1 Like

Par contre petite remarque, n’utilise pas [value.getAttribute('data-key')]:, c’est pas best practice react du tout ça ^^

Je te conseillerais de faire des sous-components et de gérer ça localement dans le components, comme j’ai pu le faire dans le Z-Wave service par exemple, exemple ici =>

1 Like

@pierre-gilles

J’y ai pensé en fait :smiley: Merci ^^ Je m’habitue à react je suis à la base sur vuejs c’est un peu différent sur certains points :slight_smile:

Je modifie cela.

1 Like

@pierre-gilles

Je viens de PR, question concernant les détecteurs de portes. Comment tu gères le fait que le détecteur peut osciller entre 0 et 1 ? C’est pas dérangeant ?

Merci :slight_smile:

Osciller entre 0 et 1? c’est à dire?

Bah normalement si les deux équipements sont l’un à côté de l’autre ils valent 1 mais si jamais ils changent d’état (à la limite du détectable ca peut merder non ?) En gros il a du mal a le detecter donc il passe de 0 à 1 aléatoirement et potentiellement rapidement.

Je me prend ptet la tête ^^

Tu te prends la tête!

Je t’ai fais une review complète de ta PR pour que tu puisses en améliorer la qualité :slight_smile:

PS: répond moi sur la PR, pas ici

Hey @pierre-gilles,

J’ai fait des modifications sur le code du service xiaomi j’attends tes retours sur ce qu’il faut changer ou non :blush:

Sinon j’ai une question c’est quoi exactement codecov ? J’ai pas trop compris le principe, j’ai vu que sur ma PR j’ai 60% mais de quoi … ^^

C’est un indice pour la couverture de code par les tests.
En gros, tu as 60% de ton code qui est couvert par des tests.

Ah merci donc je dois améliorer mes tests ^^

1 Like

Effectivement, les checks ratent car ta couverture est faible, il faut que tu écrives des tests pour chaque fonction!

Je te répond sur la PR.

@pierre-gilles je voulais savoir ce que tu en penses j’ai donc fusionné les différents capteurs xiaomi possible, cependant lorsque l’on prend l’exemple de la gateway ou encore des lampes xiaomi, je pense qu’il est important de séparer tout de même ces éléments non ?

Je suis d’accord, on peut faire plusieurs onglets, après on met tous les capteurs ensembles à mon avis.

Après ces vues ne sont que les vues “ce que voit le service”, mais il faut une autre vue qui regroupe tous les périphériques “côté Gladys” comme sur le service Z-Wave.

Ok je fais les changements j’essaye de mettre en place les tests.

1 Like