Aller au contenu
gregmmat

Ampoule yeelight xiaomi

Recommended Posts

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é par gregmmat

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par ADN182
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :-)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour info, l'ampoule est parfaitement fonctionnelle avec Homebridge.

 

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

×