Inkew 3 Signaler ce message Posté(e) 16 décembre 2020 Bonjour, Nouveau sur la HC3, je souhaite migrer tout doucement ce que j'avais sur l'eedomus sur la HC3, avant d'aller plus loin. Je m'attaque aux éclairage Hue, je sais qu'il existe une QA pour la HC3, mais lorsque je crée une scène, les lumières s'allument les unes après les autres! Sur l'eedomus, je faisais appel aux scènes créées sur l'app Hue au travers ce genre de requêtes. Est-ce que quelqu'un pourrait m'aider à convertir ça pour la HC3 : Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 16 décembre 2020 si ça peut aider : Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 16 décembre 2020 Merci, Le lien que tu me proposes permet d'utiliser le push (ici un IPX) pour envoyer une valeur vers une QA, j'ai testé chez moi et cela fonctionne (grâce à toi d'ailleurs ;-) même si je n'arrive toujours pas à faire l'inverse!) Ce que je souhaite ici, c'est de faire une requête http vers le pont HUE pour qu'il m'active une scène prédéfinie dans ce pont, mais également connaître l'état de certaines lampes : Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 16 décembre 2020 hmm j'ai pas de HUE, je peux pas t'aider sur ce cas... Mais pour envoyer des requête http depuis un QA : https://manuals.fibaro.com/home-center-3-quick-apps/ Tu trouveras ton bonheur ici, mais faut fouiller... Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 17 décembre 2020 J'ai créé un QA Binary Switch (je ne sais pas comment lancer ce code sinon!),et mis ce code : function QuickApp:turnOn() self:debug("binary switch turned on") self:updateProperty("value", true) -- An example of a GET inquiry -- self.http must have been previously created by net.HTTPClient local address = "http://192.168.0.11/api/eedomushue/groups/2" self.http:request(address, { options={ headers = { Accept = "application/json" }, checkCertificate = false, method = 'GET' }, success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) if data.contents and data.contents.quotes and data.contents.quotes[1] then local quote = data.contents.quotes[1].quote self:debug(quote) self:updateView("label", "text", quote) end end, error = function(error) self:debug('error: ' .. json.encode(error)) end }) end Dans mon navigateur, http://192.168.0.11/api/eedomushue/groups/2 me retourne ça : {"name":"Salle de bain","lights":["27","28","29","30"],"sensors":[],"type":"Room","state":{"all_on":false,"any_on":false},"recycle":fa ... Comment je peux m'y prendre pour aller chercher la valeur de state/any_on, et m'en servir pour changer d'état (0/1) mon QA par exemple? Merci!! Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 17 décembre 2020 au hasard, si tu fais un : self:debug(response.data.state.any_on) dans le success de ta requete ça donne quoi ? en fait il faudrait que tu postes le debug complet de "response.data", pour voir... PS : utilise l'éditeur du code du fofo (bouton </>) pour poster des lignes de codes, c'est plus lisible Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 22 décembre 2020 Bonjour JJacques68, Désolé pour le délai de réponse, j'ai fait des tests entre temps sur autre chose mais je n'arrive à rien. Désolé aussi pour l'éditeur de code, je prend note! J'ai fait ce que tu m'as conseillé, mais ça n'amène pas grand chose: method = 'GET' }, success = function(response) self:updateView("LBL_State", "text", tostring(response.data)) end, self:debug(response.data.state.any_on), error = function(err) self:updateView("LBL_State", "text", tostring(err)) end }) j'ai cette erreur : Si je retire la ligne response.data.state.any_on, le LBL_State me retourne ça : {"name":"Salle de bain","lights":["27","28","29","30"],"sensors":[],"type":"Room","state":{"all_on":false,"any_on":false},"recycle":false,"class":"Bathroom","action":{"on":false,"bri":254,"hue":59969,"sat":205,"effect":"none","xy":[0.4943,0.2638],"ct":443,"alert":"select","colormode":"ct"}} ... une idée? Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 22 décembre 2020 ??? j'ai pas la fin du message d'erreur... et si tu fais : self:debug(response.data.state) sinon l'afficher dans ton label peutêtre ? c'est juste une histoire de formatage, c'est pas grand chose ! Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 22 décembre 2020 Alors comme je me suis un peu embrouillé, voici mon code (dans turnOn(), je ne sais pas comment lancer le code sinon..) : function QuickApp:turnOn() -- self:Switch(self:getVariable("IpxOutNumber"),1) self.http = net.HTTPClient({timeout=3000}) self.http:request("http://192.168.0.11/api/eedomushue/groups/2", { options = { -- headers = {['Authorization']='Basic '..self:getVariable("password")}, method = 'GET' }, success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) if data.contents and data.contents.quotes and data.contents.quotes[1] then local quote = data.contents.quotes[1].quote self:debug(quote) self:debug(response.data.state) self:updateView("label", "text", quote) end end, error = function(error) self:debug('error: ' .. json.encode(error)) end }) end Dans la console : Et pas de mise à jour dans le label.. Je commence à me demander si je n'attaque pas trop grand pour niveau!! Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 22 décembre 2020 ok donc la condition : if data.contents and data.contents.quotes and data.contents.quotes[1] then ne fonctionne pas. déplace voir self:debug(response.data.state) juste après self:debug("headers:", response.headers["Content-Type"]) Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 En déplaçant comme tu me le proposes, pas d'évolution du côté du LBL, voici ce que j'obtient dans la console : Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 roah punaise c'est frustrant, on est vraiment pas loin... comme dis, juste un problème de syntaxe, essaye dans le success : success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) self:debug("1 ", response.data) local data = json.decode(response.data) self:debug("2 ", data) end, Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 Voici ce que ça me retourne : Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 ah ! et maintenant ? success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) self:debug("1 ", response.data.state) end, Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) self:debug("1 = ", data.state) end, et maintenant ? Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) self:debug("1 = ", json.encode(data.state)) end, Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 Ca vient bon on dirait!! Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 punaise oui et maintenant ? success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) self:debug("1 = ", json.encode(data.state)) self:debug("any_on = ", data.state.any_on) self:debug("all_on = ", data.state.all_on) end, Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 Oh Yeah!! Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 hé bé enfin Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 maintenant je sais plus ce que tu voulais faire avec Partager ce message Lien à poster Partager sur d’autres sites
Inkew 3 Signaler ce message Posté(e) 26 décembre 2020 !! En fait c'est une requête qui me permet de connaitre l'état d'une ou plusieurs de mes ampoules connectées dans une pièce, avant de lancer une "scène d'éclairage". Je viens du monde eedomus, et la solution était pré-machée, en gros j'avais ça: avec un paramètre (la scène en question) : Je ne suis pas spécialiste (ça t'avais compris), mais je crois comprendre que c'est du Json, mais je ne sais pas convertir ça en une requête avec paramètres.. Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 607 Signaler ce message Posté(e) 26 décembre 2020 (modifié) ok. donc il faudrait stocker cette valeur de any_on dans une variable du QA avec success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) self:debug("any_on = ", data.state.any_on) self:setVariable("anyOn", data.state.any_on) --self:debug("all_on = ", data.state.all_on) end, du coup tu peux utiliser la variable "anyOn" comme tu veux. Modifié 26 décembre 2020 par jjacques68 Partager ce message Lien à poster Partager sur d’autres sites