Xiaomi Yeelight compatibilité


#61

Peut être un soucis au niveau du réseau WIFI :thinking:
Chez moi, les lampes sont proches du RPI et c’est quasi immédiat…


#62

J’ai fait quelques modifications et corrections du module.

Une mise à jour est donc requise :wink:


#63

Rpi et Lampe quasiment à côté de ma box internet donc je pense pas que ça soit ça, je vais essayer d’ajouter des logs avec les dates pour savoir à peut près le temps que met Gladys à identifier ma lampe.

Mais petite question, pourquoi à chaque redémarrage de Gladys, le module recharge t-il les lampes ? Si il les sauvegardes une première fois ça devrait suffire non ? L’id des lampes ne change pas, par exemple sur l’application officielle on ne fait une recherche des lampes qu’une seule fois


#64

Il redétecte les lampes pour rétablir la connexion et récupérer leurs états, car la librairie que j’utilise ne permet pas la connection à la demande (il scan le réseau pour trouver les lampes).
Je vais voir s’il n’existe pas un autre librairie qui permettrait de la faire…


#65

j’ai trouvé https://github.com/samuraitruong/yeelight qui me semble pas mal car après la découverte de la lampe on peut la charger avec son IP. Je teste ça demain après midi et je donnerai mes résultats :wink:


#66

A première vue, il gère bien la connexion par l’IP de la lampe, mais on perd la fonction de changement de couleur (set_hsv) et l’envoie de commandes personnalisées… :worried:

Je vais voir pour proposer une PR à l’auteur pour ajouter ces commandes…


#67

Il y a set_rgb pour la couleur on dirait, et une fonction sendCommand dans l’objet Yeelight, ils te servent à quoi ces commandes personnalisées ?

https://samuraitruong.github.io/yeelight/classes/yeelight.yeelight.html


#68

Il faut pour cela utiliser 3 devicetypes pour gérer chacune des couleurs, puis les combiner, alors qu’avec HSV, il en faut seulement 2 (plus simple).

De plus, les modules “gladys-hue” et “gladys-milight” gèrent le HSV, le but étant d’avoir des fonctions identiques pour toutes les modèles de lampes.

A gérer les commandes de l’API directement et utiliser toutes les fonctions possibles via un script.
Par exemple avec la commande “start_cf” (color flow) :

{"id": 1, "method": "start_cf", "params": [ 4, 2, "1000, 2, 2700, 100, 500, 1, 255, 10, 5000, 7, 0,0, 500, 2, 5000, 1"]}

#69

Pour le hsv c’est pas compliqué je pense, il existe une formule mathématique pour convertir du rgb en hsv il me semble.
Pour les commandes alors la fonction sendCommande convient parfaitement, il suffit de mettre une chaine de caractères qui correspond à la commande en paramètre :slight_smile:


#70

Dans notre cas, il faut convertir le HSV en RGB, soit :

Avec 0 ≤ H < 360, 0 ≤ S ≤ 1 et 0 ≤ V ≤ 1 (V = brightness)

C = V × S
X = C × (1 - |(H / 60°) mod 2 - 1|)
m = V - C

             | (C, X, 0), si 0 ≤ H < 60
             | (X, C, 0), si 60 ≤ H < 120
(R',G',B') = | (0, C, X), si 120 ≤ H < 180
             | (0, X, C), si 180 ≤ H < 240
             | (X, 0, C), si 240 ≤ H < 300
             | (C, 0, X), si 300 ≤ H < 360

(R,G,B) = ((R'+m)×255, (G'+m)×255, (B'+m)×255)

Sinon, j’ai fait la PR à l’auteur de la librairie pour ajouter la commande “SET_HSV” existante dans l’API…


#71

Salut @Pti_Nico
C’est bon ça fonctionne (après un bon reboot). Le modèle bslamp1 est la lampe de chevet (https://www.yeelight.com/en_US/product/cherry1s). Tiens moi au courant quand elle sera ajoutée au module :wink:


#72

C’est déjà fait dans la dernière version :wink:


#73

Comment je met à jour le module ?


#74

Via le dashboard, dans la partie “Modules”, tu as un bouton “Mettre à jour”.
Sinon, dans le dossier du module, mettre à jour via GIT :

$ git fetch
$ git pull
$ npm install

et reboot de Gladys ensuite.

Pour info, ma PR sur la librairie “yeelight-awesome” a été mergé, la fonction set_hsv existe maintenant :wink:
Je vais pouvoir regarder pour modifier le module pour ne pas re-scanner le réseau à chaque init.


#75

Hello, j’ai toujours des grosses latence pour détecter mes lampes après un reboot de gladys, je vais regarder pour utiliser yeelight-awesome si tu n’as pas encore commencé ?
J’ai fais quelques test dans des scripts js et c’est super rapide !

Ce que je vois dans la prochaine version :

  • au démarrage on se connecte aux lampes avec les IP déjà enregistré (ca évite un scan à chaque reboot)
  • à la configuration, on fait un scan et on enregistre les adresses ip, on se connecte ensuite aux nouvelles lampes découvertes
  • on scan seulement à la configuration et plus à chaque redémarrage de gladys
  • l’exécution des commandes ne change pas mais devra être adapté avec la nouvelle lib

#76

@Exilon62, je viens de pousser une version du module avec yeelight-awesome, sur une branche develop .

Tu peux l’installer à la main pour tester :wink:


#77

Je teste ça ce soir et je te donne des nouvelles :+1:


#78

Niveau perf il y a pas photo ! merci à toi !
je t’es fais une PR sur ta branche develop, j’ai eu quelques soucis mais rien de bien méchant, vite réparé :slight_smile:


#79

Je t’ai fait quelques retours sur ta PR, question de rester cohérent dans le fonctionnement global :wink:


#80

j’ai vu :slight_smile:
en fait tout les endroits où j’en enlevé le “smooth” c’est parce que ça ne fonctionnait pas bien chez moi, il y avait une très grosse latence, je devais même parfois éteindre et rallumer la lampe pour que la luminosité ou le hsv soit changé :confused:
J’ai corrigé tes autres remarques :slight_smile:
pour le package-lock je ne l’ai pas vu passé dans mon IDE c’est super bizarre ! j’ai remis comme avant :wink: