[v4] Dev service EweLink (Sonoff natif)

Salut,

J’ai commencé à développer le service EweLink (PR #719 ).

N’ayant pas de périphériques à ma disposition (le mien a cramé, mais est encore dispo “offline” dans le cloud).
Si des personnes, avec des périphériques non flashés, sont volontaires pour effectuer des tests, je suis preneur :wink:

1 « J'aime »

Salut @Pti_Nico je vais jouer avec ce weekend, j’ai un sonoff natif qui traîne chez moi :slight_smile: tu auras mes retours

Bon mes retours seront avant le week-end :slight_smile:

Dans un premier temps, merci pour ton investissement, ce service d’intégration sera très utile.

Dans l’ensemble, “l’appairage” est plutôt fluide et rapide, pas besoin d’attendre 1 minute pour savoir si on est connecté ou non :+1:

J’ai tout de même quelques remarques côté UI :

  1. Je trouve que l’image est assez lourde par rapport aux autres

  2. Il manque quelques titres, et peut-être agrandir la hauteur et centrer le “no devices found”.

  3. Lorsque tu fais une erreur sur ton login / mot de passe, tu as des problèmes d’affichage.

  4. Une fois le compte lié, je ne sais pas du premier coup où trouver mes devices, je retourne donc sur l’onglet device, et la quelques problèmes d’affichage.

  5. Une fois que mes informations de comptes sont enregistrées, je ne sais pas comment refaire un scan (j’ai trouvé, il faut revalider la connexion).
    Peut-être prévoir un bouton “scan” pour rafraîchir la liste.

  6. Je pense également que les devices détectés ne devraient pas être affichés dans l’onglet devices, qui à mon sens liste les devices déjà intégrés dans Gladys (à confirmer avec @pierre-gilles)

  7. Une fois tout configuré, mes devices ajoutés dans Gladys, la fonctionnalité “allumer/éteindre” ne fonctionne pas
    Une erreur apparaît :

There was an error while polling device ewelink-1000b5e8ac-0
2020-04-03T11:56:01+0200 <error> device.poll.js:24 (DeviceManager.poll) { Error: EWeLink device is not currently online.
    at EweLinkHandler.poll (/home/alex/NickDub-Gladys/server/services/ewelink/lib/device/poll.js:24:11) message: 'EWeLink device is not currently online.' }

Hors mon device est en ligne, et tout neuf !! :stuck_out_tongue:

Sinon quelques évolutions à penser :

  • il faudra gérer l’indisponibilité du device (nouvelle fontionnalité attendue dans Gladys)
  • Prévoir d’ajouter plusieurs comptes ?
  • proposer la possibilité de mettre à jour le firmware (si possible ?)

J’espère que mes remarques te seront utiles.

Si besoin, je suis prêt à te partager mon compte EWeLink temporairement pour que tu puisses jouer avec.

A +

2 « J'aime »

Pour les problèmes de UI, n’hésite pas à passer en mode DEMO, en remplissant le fichier demo.json pour simuler les réponses du serveur.

en mode démo ? Tu peux m’en dire plus , on lance comment en mode demo ? ( je me fais ch**r à chaque fois avec la création de compte et devices etc… )

Tu ajoutes un fichier .env à la racine du front, tu y colles DEMO_MODE=true.
Et tu complètes le fichier demo.json ppur avoir les réponses aux appels serveur que tu attends. Tu démarres le front, pas besoin du serveur.

1 « J'aime »

D’accord merci, donc c’est vraiment que pour l’UI

Yes, ça permet de peaufiner l’affichage, et aussi c’est ce qui sera visible sur https://demo.gladysassistant.com/

Je suis d’accord dans l’idée, après je n’ai pas testé le service! L’essentiel, c’est que l’expérience utilisateur soit simple: il faut prendre l’utilisateur par la main, c’est tout ce qui compte.

Petit sondage pour le choix de l’image :

  • Image 1
    image

  • Image 2
    image

  • Je vote pour l’image 1
  • Je vote pour l’image 2
0 votant

@AlexTrovato, merci pour tes premiers retour.

Normal qu’il y ait autant d’erreur, le service est au tout début du dev :smile:

Qu’entends tu par « indisponibilité du device » ?
Je n’ai pas parcouru tous les posts, un lien qui en parle ?

La gestion multi-compte serait assez compliquée à gérer, car la connexion au compte se fait une fois pour récupérer un token qui sert à commander les périphériques.
En plus de stocker les identifiants au device, il faudrait à chaque commande, se connecter à nouveau pour récupérer ce token (ce qui est fait au démarrage du service, ou à la saisie des identifiants)…
Ça serait comme gérer plusieurs compte Telegram ou DarkSky…

Concernant la mise à jour, la librairie utilisée ne permet que de connaitre si un nouveau firmware est disponible. Peut-être dans une prochaine évolution, ça sera possible…

Ça serait super :+1:
Tu peux m’envoyer ça en MP ?

L’idéal serait d’avoir aussi accès à plusieurs type de périphériques.

Bon j’ai entièrement revu le service (back et front), je pense tenir quelque-chose de pas mal… :wink:

Ok c’est franchement mieux !!!
J’ai toujours le problème de double message d’erreur lorsque je mets de mauvais identifiants.

Il reste également l’image, mais je vois que tu as lancé un sondage.
Pourquoi pas :

Sinon petite chose (je pousse le vice au max), j’ai testé sur Gladys, puis je suis allé sur l’app officielle, et depuis, ça ne fonctionne plus avec Gladys :

There was an error while polling device ewelink-1000b5e8ac-0
2020-04-04T21:32:04+0200 <error> device.poll.js:24 (DeviceManager.poll) { Error
    at EweLinkHandler.poll (/home/alex/NickDub-Gladys/server/services/ewelink/lib/device/poll.js:26:11)
  status: 500,
  code: 'SERVER_ERROR',
  error: 'EWeLink error: Authentication error' }

Félicitations, c’est bientôt terminé !!!

2 « J'aime »

Salut,

@AlexTrovato, j’ai mis à jour le service pour corriger le problème d’authentification.

Pour ça, j’aimerai faire un test en te partageant mon périphérique et en utilisant à nouveau ton compte.
Ca ne te dérange pas ? :wink:

@Pti_Nico fais ce que tu veux avec mon compte, je l’ai créé uniquement pour tester ton service :slight_smile: mais j’ai débranché mon device, si tu veux que je le rebranche, tiens moi au jus.

1 « J'aime »

Bonjour,

Merci @Pti_Nico, j’avais mon panier Amazon qui était prêt avec le module qui m’aurait permis de flasher mon sonoff basic… Plus besoin grâce à toi :wink:

Je viens de tester ton service sur mon unique sonoff (avec les bons identifiants, création du module, suppression, re-ajout…). ça fonctionne nickel, l’interface est clean, c’est super simple à utiliser… Le device fonctionne au poil avec Gladys.

Ensuite, j’ai modifier mes identifiants pour qu’ils soient erronés. ça fait planter Gladys complètement :

2020-04-17T21:26:07+0200 device.poll.js:23 (DeviceManager.poll) There was an error while polling device ewelink-100029cc19-0
2020-04-17T21:26:07+0200 device.poll.js:24 (DeviceManager.poll) Error401: EWeLink error: Authentication error
at EweLinkHandler.connect (/home/philippe/gladys-ewelink/server/services/ewelink/lib/device/connect.js:65:13)
at async EweLinkHandler.poll (/home/philippe/gladys-ewelink/server/services/ewelink/lib/device/poll.js:17:5)
at async DeviceManager.poll (/home/philippe/gladys-ewelink/server/lib/device/device.poll.js:21:5) {
status: 401,
code: ‹ UNAUTHORIZED ›,
message: ‹ EWeLink error: Authentication error ›
}

1 « J'aime »

@PhilippeMA, merci pour ton retour sur ce problème.
Je vais voir pour corriger ça dès que possible.

1 « J'aime »

@PhilippeMA, j’ai jeté un œil au problème et comme l’indique les messages d’erreurs :

Si tes identifiants sont faux, impossible de poller.
Là, je ne vois pas comment corriger ça… :confused:

@AlexTrovato, un avis sur comment gérer ce type d’erreur ?
Sachant que ça peut se produire, le jour où un utilisateur va changer son mot de passe dans l’appli eWeLink, mais pas répercuter la modif dans Gladys…

Salut @Pti_Nico, désolé pour ce temps mort.
Le problème que je mentionnais est dans le cas où :

  1. je me connecte depuis Gladys, j’obtiens un jeton unique (ex jeton_1).
  2. puis je me connecte depuis l’application Android, j’obtiens un jeton unique (ex jeton_2)
  3. lorsque je retourne sur Gladys, j’utilise encore mon 1er jeton (jeton_1) mais celui-ci n’est plus valide, hors je n’ai pas changé de mot de passe.

Il faudrait peut-être prévoir de réessayer 1 fois (1 seule) de se reconnecter (regenerer le jeton) dans le cas d’un code erreur 401. Si on reçoit une 401 même lors du second appel, alors on peut considérer que les identifiants sont invalides.
Et dans ce cas (identifiants invalides), garder l’information pour l’afficher sur la page du module (et pourquoi dans le future, envoyer une notification pour alerter l’utilisateur de l’impossibilité de se connecter à son compte).

1 « J'aime »

Je viens de faire une correction dans ce sens :wink: