Module eWeLink (Sonoff OEM firmware)

Hello,

Voici un nouveau module pour les appareils compatibles eWeLink (Sonoff OEM firmware).
Pour ceux qui ne souhaitent pas, ou ne savent pas comment, flasher leur Sonoff avec Tasmota.
Pour l’utiliser, il faut avoir un compte eWeLink (app d’origine Sonoff).

Avis aux testeurs ayant encore des Sonoff d’origine :wink:
(à installer à la main…)

Pour le moment, le module récupère les devices de l’appli et les crée automatiquement dans Gladys.

Voici les étapes pour l’installer :

  1. Dans la partie Module/Avancé :

  2. Puis dans (Paramètres/ Paramètres), ajouter les champs suivants :

  3. Ensuite, reboot de Gladys.

  4. Puis dans Modules, configurer le module eWeLink :
    image

  5. Et voilà, les périphériques sont créés automatiquement :

3 Likes

Bonjour,

Super nouvelle, ce sera pratique !
J’ai testé l’installation (RAS) par contre les devices ne se créaient pas en mode configuration.
Est-ce que le module est aussi compatible du RF Bridge Wifi/433Mhz de Sonoff ?

Merci !

Salut @New,

Si tes périphériques sont visibles dans l’application mobile eWeLink, il seront automatiquement créés dans Gladys. Qu’as-tu comme périphériques ?

Très bonne question, n’en ayant pas, je ne peux tester, je compte donc sur toi :wink:

Merci @Pti_Nico

En fait je n’ai testé que avec mon pont Sonoff Bridge Wifi/RF 433Mhz justement…
Dans le log j’ai bien un device détecté avec une ID mais en fait c’est le pont seul.
Or celui-ci communique avec deux éléments en 433Mhz (un capteur porte et un PIR motion), et eux n’apparaissent pas (l’appli eWeLink les considère comme des “RF Remote” et non pas comme des “Devices”
Il va falloir creuser ça :slight_smile: Je vais regarder

Normal, ce sont des capteurs (ouverture et mouvement), tu ne peux donc pas les commander (allumer / éteindre) contrairement aux prises et modules Sonoff.

Bonjour tout le monde, et merci pour tout ce travail de développement, de documentations … qui aide beaucoup pour un novice comme moi
Ca fait un an que je pratique Gladys tant bien que mal. Je ne sais pas si ce tuto est toujours d’actualité, mais je viens rapporter ma petite expérience: j’ai installé le module Sonoff OEM, apparemment ça fonctionne presque, à part avoir modifié le slug en “ewelink” tout en minuscule , sinon il y a une erreur qui apparait en haut a droite. Tous mes Sonoff (d’origine) se sont affichés dans les périphériques, j’ai bien rentré l’Id et le mot de passe de l’appli eWeLink, mais quand je manipule les boutons de commande ON OFF, les Sonoff ne sont pas commandés, ils ne changent pas d’etat, par contre dans les logs tout ce passe bien je pense :
07-10 21:46:23.975: eWeLink - Device 10004a34c7 state change
0|gladys | 07-10 21:46:24.043: Event : create : new Event with code : devicetype-new-value
0|gladys | 07-10 21:46:24.070: Scenario : Trigger : New event : devicetype-new-value
0|gladys | 07-10 21:46:24.074: Scenario : Trigger : Found 1 launchers with code devicetype-new-value.
0|gladys | 07-10 21:46:24.078: Scenario : Trigger : Condition not verified.

Ah oui tous le SonOff fonctionnent bien, avec l’appli eWeLink sur IOS et sur Android et même avec Google Home.
Je ne suis pas assez costaud en prog pour pouvoir développer, mais je peux faire des tests sur demande
Merci pour tout

Salut @Psoy,

Oui le module est encore d’actualité, mais faute d’avoir des testeurs, je ne peux pas avancer beaucoup dessus.

Suite à ton retour, j’ai mis à jour la librairie utilisée.
Tu peux donc réinstaller le module et retester…

Bonjour @Pti_Nico,
Je viens de faire le test, l’installation se passe bien , mais problème à la configuration :
Voici les logs de l’erreur:
Sending 500 (“Server Error”) response:
0|gladys | TypeError: Ewelink.getDeviceChannelCount is not a function
0|gladys | at devices.map (/home/pi/gladys/api/hooks/ewelink/lib/setup.js:27:37)
0|gladys | at Array.map ()
0|gladys | at conn.getDevices.then (/home/pi/gladys/api/hooks/ewelink/lib/setup.js:13:36)
0|gladys | at
0|gladys | Server Error:
0|gladys | TypeError: Ewelink.getDeviceChannelCount is not a function
0|gladys | at devices.map (/home/pi/gladys/api/hooks/ewelink/lib/setup.js:27:37)
0|gladys | at Array.map ()
0|gladys | at conn.getDevices.then (/home/pi/gladys/api/hooks/ewelink/lib/setup.js:13:36)
0|gladys | at

les périphériques ne s’installent pas .

Petite correction de faite, ça devrait être bon :wink:

Bonsoir Pti_Nico,
Donc j’ai refais l’installation comme il faut et tout fonctionne. Mais, il y a un petit mais, j’ai été obliger de rentrer les devices à la main dans la liste des périphériques, alors qu’avec la première version de ton module il s’installaient tout seul.
Aussi avant que tu fasses ta dernière correction, j’ai fais une boulette, je pense que je ne suis pas passé par la case configuration; donc je n’ai pas vu les modules s’installer dans les logs.
Mais bon maintenant, tous les SonOff sont crées et je les commande bien tous les 6.
Si tu veux régler le problème des devices dans la liste de périphérique, je reste a ta disposition pour les tests
Merci encore pour le boulot

1 Like

correction
je n’ai pas vu les devices se créer

@Psoy, j’ai fait une petite modification, si tu peux refaire un essai ?

Bonsoir Pti_Nico
Je viens de refaire l’installation, et là c’est beaucoup moins bien, Galdys ne redémarre plus après le reboot suite à l’installation et paramétrage du compte. Je suis obliger de supprimer le dossier ewelink pour que Gladys redemarre.
Voici les logs :
App [gladys] with id [0] and pid [18416], exited with code [1] via signal [SIGINT]
PM2 | Starting execution sequence in -fork mode- for app name:gladys id:0
PM2 | App name:gladys id:0 online
0|gladys | /home/pi/gladys/api/hooks/ewelink/lib/setup.js:11
0|gladys | const conn = new eWeLink({ region = ‘eu’, email, password });
0|gladys | ^^^^^^^^^^^^^
0|gladys | SyntaxError: Invalid shorthand property initializer
0|gladys | at createScript (vm.js:80:10)
0|gladys | at Object.runInThisContext (vm.js:139:10)
0|gladys | at Module._compile (module.js:607:28)
0|gladys | at Object.Module._extensions…js (module.js:654:10)
0|gladys | at Module.load (module.js:556:32)
0|gladys | at tryModuleLoad (module.js:499:12)
0|gladys | at Function.Module._load (module.js:491:3)
0|gladys | at Module.require (module.js:587:17)
0|gladys | at require (internal/module.js:11:18)
0|gladys | at Object.module.exports (/home/pi/gladys/api/hooks/ewelink/index.js:3:17)
0|gladys | at wrapper (/home/pi/gladys/node_modules/@sailshq/lodash/lib/index.js:3275:19)
0|gladys | at prepareHook (/home/pi/gladys/node_modules/sails/lib/app/private/loadHooks.js:45:17)
0|gladys | at /home/pi/gladys/node_modules/sails/lib/app/private/loadHooks.js:149:13
0|gladys | at /home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:181:20
0|gladys | at Object.async.forEachOf.async.eachOf (/home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:233:13)
0|gladys | at Object.async.forEach.async.each (/home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:209:22)
0|gladys | at prepare (/home/pi/gladys/node_modules/sails/lib/app/private/loadHooks.js:148:17)
0|gladys | at /home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:713:13
0|gladys | at iterate (/home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:262:13)
0|gladys | at /home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:274:29
0|gladys | at /home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:44:16
0|gladys | at /home/pi/gladys/node_modules/sails/node_modules/async/lib/async.js:718:17

C’est corrigé :wink:

Bonsoir Pti_Nico,
Apres l’installation, puis reboot, Gladys se lance correctement. Je configure, les logs me confirment que les devices sont créés:
eWeLink - Device (ID: 10004xxxxxx) created!
0|gladys | eWeLink - Device (ID: 10004xxxxxx) created!
0|gladys | eWeLink - Device (ID: 10004xxxxxx) created!
0|gladys | eWeLink - Device (ID: 10004xxxxxx) created!
0|gladys | eWeLink - Device (ID: 10004xxxxxx) created!
0|gladys | eWeLink - Device (ID: 10004xxxxxx) created!
Mais les devices ne se sont pas installés dans la liste des peripheriques.
j’en ai créé un, j’ai donc redigé comme ceci:
image
image

Et quand je l’actionne j’ai une erreur:
voir logs :

Server Error:
0|gladys | ReferenceError: eWeLink is not defined
0|gladys | at gladys.param.getValues.spread (/home/pi/gladys/api/hooks/ewelink/lib/exec.js:21:22)
0|gladys | at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)
0|gladys | at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:509:35)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at PromiseArray._resolve (/home/pi/gladys/node_modules/bluebird/js/release/promise_array.js:126:19)
0|gladys | at PromiseArray._promiseFulfilled (/home/pi/gladys/node_modules/bluebird/js/release/promise_array.js:144:14)
0|gladys | at PromiseArray._iterate (/home/pi/gladys/node_modules/bluebird/js/release/promise_array.js:114:31)
0|gladys | at PromiseArray.init [as _init] (/home/pi/gladys/node_modules/bluebird/js/release/promise_array.js:78:10)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:566:21)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at MappingPromiseArray.PromiseArray._resolve (/home/pi/gladys/node_modules/bluebird/js/release/promise_array.js:126:19)
0|gladys | at MappingPromiseArray._promiseFulfilled (/home/pi/gladys/node_modules/bluebird/js/release/map.js:101:18)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:574:26)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at Promise._resolveCallback (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:454:14)
0|gladys | at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:524:17)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at /home/pi/gladys/node_modules/bluebird/js/release/nodeback.js:42:21
0|gladys | at /home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:120:16
0|gladys | at Object.poolfully [as releaseConnection] (/home/pi/gladys/node_modules/sails-mysql/lib/connections/release.js:28:12)
0|gladys | at Query._callback (/home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:105:35)
0|gladys | at Query.Sequence.end (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
0|gladys | at Query._handleFinalResultPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
0|gladys | at Query.EofPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
0|gladys | at Protocol._parsePacket (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:280:23)
0|gladys | at Parser.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Parser.js:73:12)
0|gladys | at Protocol.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:39:16)
0|gladys | at Socket. (/home/pi/gladys/node_modules/mysql/lib/Connection.js:96:28)
0|gladys | at emitOne (events.js:116:13)
0|gladys | at Socket.emit (events.js:211:7)
0|gladys | at addChunk (_stream_readable.js:263:12)
0|gladys | at readableAddChunk (_stream_readable.js:250:11)
0|gladys | at Socket.Readable.push (_stream_readable.js:208:10)
0|gladys | at TCP.onread (net.js:594:20)
j’espere avoir été clair et que ça peut t’aider

Merci pour les logs, du coup, j’ai pu faire une autre correction.

Bonjour Pti_Nico,
Je ferai le test lundi soir, car là, je sui en déplacement.
Bonne journée

J’ai trouvé 5 minutes pour le test.
Donc le module s’installe bien. mais après le configuration j’ai de nouveau l’erreur : eWeLink - Error: Authentication error
0|gladys | Sending 500 (“Server Error”) response:
0|gladys | Error: eWeLink Authentication error
0|gladys | at conn.getDevices.then (/home/pi/gladys/api/hooks/ewelink/lib/setup.js:16:35)
0|gladys | at
0|gladys | Server Error:
0|gladys | Error: eWeLink Authentication error
0|gladys | at conn.getDevices.then (/home/pi/gladys/api/hooks/ewelink/lib/setup.js:16:35)
0|gladys | at
bon courage

Oups J’ai été trop vite. on oublie l’erreur sending 500, car j’ai mal rentré mon mail.
Donc tout s’installe bien, mais à la configuration j’ai ça :

                 eWeLink - Debug - nbChannel: [object Promise]
0|gladys   | eWeLink - Debug - nbChannel: [object Promise]
0|gladys   | eWeLink - Debug - nbChannel: [object Promise]
0|gladys   | eWeLink - Debug - nbChannel: [object Promise]
0|gladys   | eWeLink - Debug - nbChannel: [object Promise]
0|gladys   | eWeLink - Debug - nbChannel: [object Promise]
0|gladys   | eWeLink - Device (ID: 10004a34c7) created!
0|gladys   | eWeLink - Device (ID: 10004xxxxx) created!
0|gladys   | eWeLink - Device (ID: 10004xxxxx) created!
0|gladys   | eWeLink - Device (ID: 10004xxxxx) created!
0|gladys   | eWeLink - Device (ID: 10004xxxxx) created!
0|gladys   | eWeLink - Device (ID: 10004xxxxx) created!

et les devices ne s’installent pas dans la liste des peripheriques.
Mais quand j’en crée un, il fonctionne :
eWeLink - Debug - params.deviceType.type: binary
0|gladys | eWeLink - Device 10004a34c7 state change.
re-bon courage et désolé j’ai voulu faire vite.