gregmmat Posté(e) le 5 juin 2017 Signaler Posté(e) le 5 juin 2017 (modifié) Bonjour à tous je viens de recevoir mon ampoule yeelight xiaomi buld color mais je n'arrive pas a l'intégrer a ma HC2 pour etre franc je pige rien au api fourni par yeelight https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf Modifié le 14 octobre 2017 par gregmmat
ADN182 Posté(e) le 28 juin 2017 Signaler Posté(e) le 28 juin 2017 (modifié) Hello, J'essaye de faire actuellement un VD. J'arrive à dialoguer avec le Yeelight (on/off lunminosité, couleur). Il me reste à savoir de qu'elle manière récupérer les informations de l'ampoule pour mettre à jours le VD dynamiquement. @Krikroff j'aurais besoin de ton avis sur ce sujet. En fait la Yeelight communique en TCP sur un port spécifique 55443 une fois la connexion initialisé si une information vient à changé (via l'applic Xiaomi ou autre) la Yeelight communique l'infos à toutes les client connecté avec elle sur ce port. du coup on récupère l'infos de changement en "temps réél". En sachant cela selon toi. Comment tu procéderais pour la récupération du retour d'infos (on peut également collecter l'infos via une requeêtes TCP qui retourne l'ensemble des caractéristique de la lampes) ? J'ai tenté dans la main loop du VD alors ça fonctionne mais lorsque l'on coupe la Yeelight la connexion TCP est perdu et je ne sais pas comment détecter lorsque je perd celle-ci et en recréer une par la suite. Ci-dessous le code de la Main Loop : -- Recup de l id du module local selfID = fibaro:getSelfId(); local ip = fibaro:get(selfID, 'IPAddress') local port = fibaro:get(selfID, 'TCPPort') local Name = tostring(fibaro:getName(selfID)); -- Fonction de simplification to set label Device function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value); end -- Initialisation du Socket TCP if (tcpSocket == nil) then tcpSocket = Net.FTcpSocket(ip, tonumber(port)) --tcpSocket:setReadTimeout(1000); fibaro:debug("Creation de la connexion avec "..Name); end state = tcpSocket:read() or string.char(); fibaro:debug(state); if (state ~= "") then State_decoded = json.decode(state); -- Gestion de l état if State_decoded.params.power then fibaro:debug("Change state to "..State_decoded.params.power) setDevicePropertyValue(selfID, "state", State_decoded.params.power); end -- Gestion de la Luminosité if State_decoded.params.bright then fibaro:debug("Change brightness to "..State_decoded.params.bright) setDevicePropertyValue(selfID, "brightness", State_decoded.params.bright); end else fibaro:debug("Connexion Impossible") fibaro:sleep(10000) tcpSocket:disconnect(); tcpSocket=nil; end Avec ce code une fois la connexion perdu, il ne détecte pas la coupure et il ne se reconnecte pas si on allume à nouveau (électriquemennt) la Yeeight il faut relancé le VD pour cela. Merci d'avance de ton aide Modifié le 28 juin 2017 par ADN182 1
Alek6 Posté(e) le 2 octobre 2017 Signaler Posté(e) le 2 octobre 2017 Mercî ADN pour ce partage. As-tu finalement trouvé une solution à ton problème de code ? On va quand même pas se laisser bouffer par la communauté jeedom :-) 1
Alek6 Posté(e) le 7 décembre 2017 Signaler Posté(e) le 7 décembre 2017 Pour info, l'ampoule est parfaitement fonctionnelle avec Homebridge.
ADN182 Posté(e) le 10 décembre 2017 Signaler Posté(e) le 10 décembre 2017 Mercî ADN pour ce partage. As-tu finalement trouvé une solution à ton problème de code ? On va quand même pas se laisser bouffer par la communauté jeedom :-)Hello@Alek6, désolé j'ai oublié de te répondre, j'ai arrêté de développer le VD yeelight car j'ai désinstallé les ampoules. Je trouve compliqué de gérer ce type d'ampoule avec la HC2, ça n'apparait pas comme un périphérique de type Lumière. Quoi qu'il en soit je peux te fournir le VD que j'avais commencé si ça te dit ?Envoyé de mon Nexus 5X en utilisant Tapatalk
OJC Posté(e) le 28 décembre 2017 Signaler Posté(e) le 28 décembre 2017 (modifié) Salut @ADN182, Je suis intéressé par ton VD pour 'jouer' avec une Yeelight Bedside. Merci =) Modifié le 28 décembre 2017 par OJC
ADN182 Posté(e) le 29 décembre 2017 Signaler Posté(e) le 29 décembre 2017 Hello OJC, Voici, rien d'exceptionnel, mais je pense que tu as le code "géneric" qui te permettra de créer d'autres boutons en fonction de l'api. Yeelight.vfib Il faut que tu renseigne l'Adresse IP dans le VD, il y a un bouton actualisation pour mettre à jour les données de la Lampes (On, Off) il faudrait pouvoir l'activer en continu si la lampe est alimenté dans la Main loop. En reprenant le code du bouton "on" et changeant les params du bouton en t'appuyant sur l'API tu devrais pouvoir ajouter des boutons facilement. local method = "set_power" local Action = "on" Yeelight_Inter-Operation_Spec.pdf 1
ADN182 Posté(e) le 29 décembre 2017 Signaler Posté(e) le 29 décembre 2017 @OJC, je viens de relire ton commentaire, la Yeelight Bedside est commandable iniquement en Bluetooth du coup le VD ne pourra pas te servir dans ce cas. Le seul moyen que je connaisse de controller la Bedside est avec Jeedom et le Plugin BLEA de @sarakha63
OJC Posté(e) le 29 décembre 2017 Signaler Posté(e) le 29 décembre 2017 @ADN182 J'ai la version wifi , celle avec le socle doré
ADN182 Posté(e) le 29 décembre 2017 Signaler Posté(e) le 29 décembre 2017 Ah ben je ne savais pas qu'il l'avait fais en wifi , mince ça fait longtemps ? si j'avais su j'aurais attendu
OJC Posté(e) le 29 décembre 2017 Signaler Posté(e) le 29 décembre 2017 Je ne sais pas depuis combien de temps, les miennes sont arrivées de Chine juste avant Noël, commandées début décembre sur Gearbest. 1
OJC Posté(e) le 29 décembre 2017 Signaler Posté(e) le 29 décembre 2017 Nickel comme base de départ, ce VD Pour ceux que ça intéresse, voici ma solution pour avoir une mise à jour en continu sans passer par le Main Loop qui impose un délai de trois secondes. Code du bouton Actualisation : function RefreshLoop() -- Recup de l id du module local selfID = fibaro:getSelfId(); local ip = fibaro:get(selfID, 'IPAddress') local port = fibaro:get(selfID, 'TCPPort') local Name = tostring(fibaro:getName(selfID)); -- Fonction de simplification to set label Device function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value); end -- Initialisation du Socket TCP if (tcpSocket == nil) then tcpSocket = Net.FTcpSocket(ip, tonumber(port)) --tcpSocket:setReadTimeout(1000); fibaro:debug("Creation de la connexion avec "..Name); end state, err = tcpSocket:read() or string.char(); fibaro:debug("test"); fibaro:debug(state); if (state ~= "") then State_decoded = json.decode(state); -- Gestion de l'état if State_decoded.params.power then fibaro:debug("Change state to "..State_decoded.params.power) setDevicePropertyValue(selfID, "state", State_decoded.params.power); end -- Gestion de la Luminosité if State_decoded.params.bright then fibaro:debug("Change brightness to "..State_decoded.params.bright) setDevicePropertyValue(selfID, "brightness", State_decoded.params.bright); end else fibaro:debug("Connexion Impossible") fibaro:sleep(10000) tcpSocket:disconnect(); tcpSocket=nil; end RefreshLoop() end RefreshLoop() 1
OJC Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 Salut @ADN182 et bonne année Le 28/06/2017 à 15:25, ADN182 a dit : J'ai tenté dans la main loop du VD alors ça fonctionne mais lorsque l'on coupe la Yeelight la connexion TCP est perdu et je ne sais pas comment détecter lorsque je perd celle-ci et en recréer une par la suite. Quand tu parles de couper, cela veut dire débrancher ou éteindre ?
ADN182 Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 (modifié) Salut @OJC bonne année à toi Oui quand je dis couper, c'est "débranché". Plus au sens tu coupe le courant via interrupteur du lustre suspendu. j'ai que des Yeelight douille E27, du coup l'ampoule est privé de courant et ne fonctionne plus forcement. Dans ton cas la lampe de chevet et continuellement branché. Modifié le 3 janvier 2018 par ADN182
OJC Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 ok, merci pour la précision. Je n'ai pas encore eu le pb du coup avec des lampes de chevet. Je pense que je vais coupler avec le Network Monitor de @Lazer pour vérifier la connexion au réseau wifi et relancer le socket en cas de besoin.
Messages recommandés