Xiaomi Yeelight compatibilité


#21

Je pense que le modèle lampe de bureau n’est pas géré par le module. Peux tu essayer de contrôler tout le reste sauf ça pour l’instant en coupant et en reconfigurant ?


#22

Après très longtemps, d’autres appareils sont apparus. Les logs montrent que la Desk Lamp et la Ceiling Light sont détectés mais pas ajoutés. J’ai donc associé mes pièces avec mes deux bulbs et deux strips, les bulbs marchent mais l’ajout d’une Led Strip à la pièce “Télévision” vient de causer une erreur 502 :

0|gladys   | SyntaxError: Unexpected token { in JSON at position 27
0|gladys   |     at JSON.parse (<anonymous>)
0|gladys   |     at Yeelight.formatResponse (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/Yeelight.js:241:25)
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)
PM2        | App [gladys] with id [0] and pid [737], 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

Les switchs (bulbs y compris) sont maintenant buggués et ne peuvent être activés : https://image.ibb.co/kvmuA9/Screenshot_167.png

0|gladys   | Sending 500 ("Server Error") response:
0|gladys   |  TypeError: Cannot read property 'getModel' of undefined
0|gladys   |     at Hook.exec (/home/pi/gladys/api/hooks/yeelight/lib/exec.js:7:23)
0|gladys   |     at Hook.wrapper [as exec] (/home/pi/gladys/node_modules/@sailshq/lodash/lib/index.js:3275:19)
0|gladys   |     at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:58:53
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:512:31)
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.<anonymous> (/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)

Donc maintenant, même les bulbs qui pouvaient être activés ne peuvent plus l’être, même en utilisant le chat pour parler à Gladys, étrange…


#23

Ce qui est étrange dans ton log, c’est de voir apparaitre plusieurs fois le même device lors de la détection :

0|gladys   | Yeelight - Device found: 0x000000000538364f (color)
0|gladys   | Yeelight - Device found: 0x000000000538364f (color)
0|gladys   | Yeelight - Device found: 0x000000000538364f (color)
0|gladys   | Yeelight - Device : 0x000000000538364f (color) initialized
0|gladys   | Yeelight - Device found: 0x000000000538364f (color)

#24

L’association d’un device à une pièce ne passe pas par le module, je ne vois donc pas pourquoi tu as un reboot de Gladys (erreur 502)…

[Edit]: J’ai poussé une mise à jour des packages pour inclure un correctif…
A voir si ça corrige ton problème.


#25

En fait le crash a lieu régulièrement quand je souhaite gérer mes appareils Yeelight depuis le panneau dédié. Je désinstalle le module pour réinstaller la mise à jour proprement et voir si j’ai toujours les erreurs, je reviens d’ici quelques dizaines de minutes avec des logs du coup :slight_smile:


#26

Alors, ça a l’air plus stable bien que mes appareils Ceilling Light et Desk Lamp ne soient toujours pas créés. Une fois les 4 bulbs et stripes découverts et disponibles dans périphériques, en assignant les deux bulbs à chambre, je peux les contrôler sans problème via l’interface web et les scripts (seulement brightness et power on/off). Par contre, ajouter les stripes (une à cuisine, et une à télévision) cause une erreur de JSon Parsing quand je souhaite les contrôler ce qui fait complètement crasher Gladys :

0|gladys   | SyntaxError: Unexpected token { in JSON at position 28
0|gladys   |     at JSON.parse (<anonymous>)
0|gladys   |     at Yeelight.formatResponse (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/Yeelight.js:241:25)
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)
PM2        | App [gladys] with id [0] and pid [524], exited with code [1] via signal [SIGINT]

Logs complets : http://pasted.co/f157ea0f

Après reboot, plus aucun appareil n’est controlable, même les bulbs qui l’étaient avant : http://pasted.co/df5e6435


#27

J’aurais besoin de tous les logs (préfixés par “Yeelight”) que tu peux avoir et pas uniquement les quelques lignes d’erreurs.
J’aimerais savoir si les lampes sont détectés ou non, gérées ou non par le package que j’utilise.

L’erreur que tu as après reboot, c’est parce que Gladys n’a pas redétecté les lampes dans l’init.

Pour les autres fonctions (hue et saturation), je suis dessus. Le problème est qu’il faut que j’envoie 2 valeurs alors que je n’en récupère qu’une lors de l’appel à la commande.


#28

Ca marche, alors je vais essayer d’être le plus précis possible sur ce que je fais et les logs inhérents.

Etat initial

6 Lampes (toutes fonctionnelles via Mi Home, Yeelight et Google Assistant) :

  • 2 Bulbs RGBW E26,
  • 1 Desk Lamp,
  • 1 Ceiling Light,
  • 2 Led Stripes.

Module installé, configuration lancée.

Logs

https://pastebin.com/tb9MtJFL

Après reconnexion, 4 appareils sont donc disponibles dans “périphériques” :

  • Bulb 0x000000000538364f
  • Bulb 0x000000000538593a
  • Stripe 0x0000000004d47912
  • Stripe 0x0000000004520edc

Association pièce/bulbs + tests

Les deux bulbs sont associés à la pièce chambre.

Via la gestion des périphériques :

  • Test d’allumage du premier bulb ne marche pas,
  • Pareil pour le deuxième.

Etapes répétées pour les stripes, résultats similaires.

Logs

https://pastebin.com/D6aCRV7w

Je décide d’aller déconnecter mes stripes du réseau, bizarrement, après allumage manuel des bulbs, ils ont été détectés par gladys, allumage et extinction ont marché jusqu’à une erreur de JSon Parsing faisant rebooter gladys.

https://pastebin.com/WpxghRFn

Voilà, c’est tous les logs que j’ai, avec l’ensemble des erreurs que j’ai pu rencontrer.


#29

Merci pour le retour, j’ai pu remarquer, grâce à tes logs, que 2 modèles de tes lampes n’étaient pas gérés, du coup, je les ai ajoutés et corriger le code en conséquence.

J’ai poussé la mise à jour, tu peux refaire des tests :wink:


#30

Merci :slight_smile: Pour l’instant la détection des lumières fait crasher gladys, j’ai relancé une configuration du coup, je vais voir ce qu’il détecte mais ça semble arrêter Gladys à chaque fois

0|gladys   | Yeelight - Device found, id: 0x00000000053a98c3, type: ceiling1
0|gladys   | TypeError: Cannot read property 'identifier' of undefined
0|gladys   |     at YeelightSearch.<anonymous> (/home/pi/gladys/api/hooks/yeelight/lib/init.js:32:56)
0|gladys   |     at emitOne (events.js:116:13)
0|gladys   |     at YeelightSearch.emit (events.js:211:7)
0|gladys   |     at YeelightSearch.addLight (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/index.js:74:14)
0|gladys   |     at SsdpClient.<anonymous> (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/index.js:53:20)
0|gladys   |     at emitTwo (events.js:126:13)
0|gladys   |     at SsdpClient.emit (events.js:214:7)
0|gladys   |     at SsdpClient.SSDP._notify (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:338:12)
0|gladys   |     at SsdpClient.parseCommand [as _parseCommand] (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:308:12)
0|gladys   |     at SsdpClient.SSDP._parseMessage (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:291:10)
0|gladys   |     at Socket.onSocketMessage (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:241:12)
0|gladys   |     at emitTwo (events.js:126:13)
0|gladys   |     at Socket.emit (events.js:214:7)
0|gladys   |     at UDP.onMessage [as onmessage] (dgram.js:658:8)
PM2        | App [gladys] with id [0] and pid [524], 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
#RESTART DE GLADYS
0|gladys   | Yeelight - Device found, id: 0x000000000538364f, type: color
0|gladys   | TypeError: Cannot read property 'identifier' of undefined
0|gladys   |     at YeelightSearch.<anonymous> (/home/pi/gladys/api/hooks/yeelight/lib/init.js:32:56)
0|gladys   |     at emitOne (events.js:116:13)
0|gladys   |     at YeelightSearch.emit (events.js:211:7)
0|gladys   |     at YeelightSearch.addLight (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/index.js:74:14)
0|gladys   |     at SsdpClient.<anonymous> (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/index.js:53:20)
0|gladys   |     at emitTwo (events.js:126:13)
0|gladys   |     at SsdpClient.emit (events.js:214:7)
0|gladys   |     at SsdpClient.SSDP._notify (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:338:12)
0|gladys   |     at SsdpClient.parseCommand [as _parseCommand] (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:308:12)
0|gladys   |     at SsdpClient.SSDP._parseMessage (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:291:10)
0|gladys   |     at Socket.onSocketMessage (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:241:12)
0|gladys   |     at emitTwo (events.js:126:13)
0|gladys   |     at Socket.emit (events.js:214:7)
0|gladys   |     at UDP.onMessage [as onmessage] (dgram.js:658:8)
PM2        | App [gladys] with id [0] and pid [608], 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

#31

Nouvelle mise à jour, je ne rencontre aucun problème chez moi avec.
A tester… :wink:


#32

Salut,
je suis intéressé par ces ampoules, il y a une version ou un modèle requis pour la compatibilité avec ce module ?


#33

Non, pas spécialement.


#34

Nouvelle version, le changement des valeurs de “hue” et “saturation” fonctionne (modèles couleur seulement).


#35

Je me reconnecte de retour de vacances, et wooo, très très beau boulot @Pti_Nico! :metal:

Si ce module marche super, let’s go pour le publier sur le store!

J’ai d’ailleurs supprimé le module gladys-yeelight qui était sous l’organisation Gladys, ce n’était qu’un POC pas du tout abouti, à l’époque les dépendances node yeelight étaient toute foireuse…


#36

Salut, merci pour ton travail, malheureusement j’ai encore des problèmes ahah !

0|gladys   | Yeelight - Device found, id: 0x00000000053a98c3, type: ceiling1
0|gladys   | TypeError: Cannot read property 'identifier' of undefined
0|gladys   |     at YeelightSearch.<anonymous> (/home/pi/gladys/api/hooks/yeelight/lib/init.js:31:56)
0|gladys   |     at emitOne (events.js:116:13)
0|gladys   |     at YeelightSearch.emit (events.js:211:7)
0|gladys   |     at YeelightSearch.addLight (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/index.js:74:14)
0|gladys   |     at SsdpClient.<anonymous> (/home/pi/gladys/api/hooks/yeelight/node_modules/yeelight-wifi/build/index.js:53:20)
0|gladys   |     at emitTwo (events.js:126:13)
0|gladys   |     at SsdpClient.emit (events.js:214:7)
0|gladys   |     at SsdpClient.SSDP._notify (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:338:12)
0|gladys   |     at SsdpClient.parseCommand [as _parseCommand] (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:308:12)
0|gladys   |     at SsdpClient.SSDP._parseMessage (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:291:10)
0|gladys   |     at Socket.onSocketMessage (/home/pi/gladys/api/hooks/yeelight/node_modules/node-ssdp/lib/index.js:241:12)
0|gladys   |     at emitTwo (events.js:126:13)
0|gladys   |     at Socket.emit (events.js:214:7)
0|gladys   |     at UDP.onMessage [as onmessage] (dgram.js:658:8)
PM2        | App [gladys] with id [0] and pid [783], 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

EDIT : Pareil pour la Desklamp qui cause un reboot

0|gladys   | Yeelight - Device found, id: 0x000000000581c2ff, type: desklamp
0|gladys   | TypeError: Cannot read property 'identifier' of undefined
0|gladys   |     at YeelightSearch.<anonymous> (/home/pi/gladys/api/hooks/yeelight/lib/init.js:31:56)

#37

J’ai réussi à reproduire le problème et à le corriger.

En fait, le module plantait, car il tentait d’initialiser un device qui n’existe pas dans Gladys et donc impossible de récupérer les valeur de celui-ci.

Je pense que la nouvelle version devrait être pas mal… :wink:


#38

Cool! Tu l’as publié sur le store du coup? :slight_smile:


#39

J’attends la confirmation de @clement.poiret pour savoir si ça corrige bien son problème.
Je le ferais dès qu’elle sera full fonctionnel (question de qualité) :wink:


#40

Pour l’instant je suis en cours, si j’ai un peu de temps ce midi j’essaierai de tester sinon je finis à 18h :slight_smile: