pixynico Posté(e) le 10 novembre 2017 Signaler Posté(e) le 10 novembre 2017 bonjour à tous J'espère ne pas faire doublon en créant ce sujet. J'essaie désespéramment de récupérer des infos venant de l'api eedomus vers ma HC2 mais je n'aboutie à rien. Je veux récupérer l'état d'une variable type Armement prenant les valeurs On ou Off sur Eedomus et les ajouter d'une variable Armement dans ma HC2 afin de sécuriser ma maison. Voici ce que j'ai mis dans le bouton de MAJ d'un VD : --[[ %% properties %% globals --]] HC2= Net.FHttp("http://api.eedomus.com"); response, status, errorCode = HC2:GET("/get?api_user=xxxxxx&api_secret=xxxxxxxxxxxxx&action=periph.caract&periph_id=743577") response = json.decode(response) fibaro:setGlobal('Armement', response.body.last_value) fibaro:log("Armement : "..fibaro:getGlobalValue("Armement")..) fibaro:call(fibaro:getSelfId(), "setProperty","ui.Label1.value", response.body.last_value..) J'ai créé une variable Armement. Je ne sais pas trop si je dois la laisser vide ou 0 ou la prédéfinir à On ou Off. J'ai tout essayé sans résultat. Le retour de mon API fonctionne : { "success": 1, "body":{"periph_id": "743577", "name": "Armement alarme Hall Entrée", "last_value": "Off", "last_value_text": "Alarme désarmée", "last_value_change": "2017-11-06 21:39:16"}} Je débuté en lua en m'inspirant des exemples. Quelqu'un peut-il me donner un coup de main ? Merci d'avance
pepite Posté(e) le 12 novembre 2017 Signaler Posté(e) le 12 novembre 2017 (modifié) Bonsoir, Le 10/11/2017 à 19:07, pixynico a dit : response = json.decode(response) si tu rajoutes ceci : tu as une réponse ? fibaro:debug(response.body.last_value) Essaie de remplacer : jsonTable = json.decode(response) fibaro:debug(jsonTable) Modifié le 12 novembre 2017 par pepite
pixynico Posté(e) le 13 novembre 2017 Auteur Signaler Posté(e) le 13 novembre 2017 Merci pepite de ton intérêt pour mon pb. J'ai essayé avec response = json.decode(response) fibaro:debug (response.body.last_value) ou jsonTable = json.decode(response) fibaro:debug(jsonTable) Sans aucun retour de resultat Je suis le tuto https://domotique34.com/blog/2014/10/02/recuperation-de-certaines-donnees-eedomus-sur-la-home-center-2/ Dans le tuto c'est une valeur qui évolue, moi je veux le retour d'une variable prenant les valeurs On ou Off
pepite Posté(e) le 13 novembre 2017 Signaler Posté(e) le 13 novembre 2017 Tu n'as aucun retour de ton api avec ton code ? Essaie juste ceci, as tu quelquechose dans le debug ? pas d'erreur ? --[[ %% properties %% globals --]] HC2= Net.FHttp("http://api.eedomus.com"); response, status, errorCode = HC2:GET("/get?api_user=xxxxxx&api_secret=xxxxxxxxxxxxx&action=periph.caract&periph_id=743577") jsonTable = json.decode(response) fibaro:debug(jsonTable) Pour info, ceci Le 10/11/2017 à 19:07, pixynico a dit : fibaro:log("Armement : "..fibaro:getGlobalValue("Armement")..) s'écrit fibaro:log("Armement : "..fibaro:getGlobalValue("Armement")) Et ceci fibaro:call(fibaro:getSelfId(), "setProperty","ui.Label1.value", response.body.last_value..) S'ecrit fibaro:call(fibaro:getSelfId(), "setProperty","ui.Label1.value", response.body.last_value)
pixynico Posté(e) le 13 novembre 2017 Auteur Signaler Posté(e) le 13 novembre 2017 J'ai lancé le debug en m'arrêtant à fibaro:debug(jsonTable) et j'ai rien du tout qui s'affiche. Pourtant ma ligne fonctionne http://api.eedomus.com/get?api_user=xxxxxxx&api_secret=xxxxxxxxxxxx&action=periph.caract&periph_id=743577 { "success": 1, "body":{"periph_id": "743577", "name": "Armement alarme Hall Entrée", "last_value": "Off", "last_value_text": "Alarme désarmée", "last_value_change": "2017-11-06 21:39:16"}} Ai-je autre chose à paramétrer dans mon module virtuel ?
pepite Posté(e) le 13 novembre 2017 Signaler Posté(e) le 13 novembre 2017 Olala, je viens de percuter, pour tester, Pourrais tu supprimer l'authetification api_user et api_secret cote eedomus ? et
pixynico Posté(e) le 13 novembre 2017 Auteur Signaler Posté(e) le 13 novembre 2017 je comprend pas trop. Côté eedomus je peux révoquer le code secret mais pas le nom. C'est ça que tu veux que je change ? J'ai changé le code secret mais toujours pareil
pepite Posté(e) le 13 novembre 2017 Signaler Posté(e) le 13 novembre 2017 (modifié) Non, je me demandais si tu pouvais te connecter sans authentification. SI c'est le cas, tu aurais pu passer par Net.FHttp, mais avec une authentification tu vas devoir utiliser Net.HTTPClient Bon faut chercher un peu je viens de voir l'article sur domestique 34..alors la. ou ca HC2= Net.FHttp("http://api.eedomus.com"); HC2:setBasicAuthentication("user","password"); response, status, errorCode = HC2:GET("/get?action=periph.caract&periph_id=743577") jsonTable = json.decode(response) fibaro:debug(jsonTable) fibaro:debug(jsonTable.body.last_value) Modifié le 13 novembre 2017 par pepite
pixynico Posté(e) le 14 novembre 2017 Auteur Signaler Posté(e) le 14 novembre 2017 Bon j'ai réessayé sans plus de succès. Il me faut l'authentification pour lancer le test api. J'ai réessayé avec FHttp ou HTTPClient mais pas plus de résultat. Le tuto date de 2014 peut-être que cela ne fonctionne plus. Je sais pas si c'est possible que l'api eedomus ne soit plus reconnu par la HC2. Je ne dis peut-être une connerie.
pepite Posté(e) le 14 novembre 2017 Signaler Posté(e) le 14 novembre 2017 T'as essaye le code que je t'ai mis avant ? Tu ne peux pas juste remplacer FHttp par Net.HTTPClient ce n'est pas la meme syntaxe. ;-)
pixynico Posté(e) le 15 novembre 2017 Auteur Signaler Posté(e) le 15 novembre 2017 J'ai essayé le code que tu as mis sans résultat. J'ai vu que si je prend Net.HTTPClient il faut que je revois la syntaxe en effet.Par j'ai un doute au vu de ce que je lis sur le forum HTTPClient c'est bon sur un VD c'est pas valable seulement sur les scenes ? C'est un peu confus pour moi. J'ai pas trop le temps de m'y atteler en semaine en ce moment. Je te remercie de m'aider en tout cas c'est sympa. Tu penses que c'est encore possible ?
pixynico Posté(e) le 15 novembre 2017 Auteur Signaler Posté(e) le 15 novembre 2017 (modifié) Je suis boulet je savais pas comment on debuggais un bouton dans VD, je pars de loin J'ai exécuté ceci comme tu m'as dit et j'ai l'erreur ci-dessous en réponse, on avance --[[ %% properties %% globals --]] HC2= Net.FHttp("http://api.eedomus.com"); HC2:setBasicAuthentication("xxxxxx","xxxxxxxx"); response, status, errorCode = HC2:GET("/get?action=periph.caract&periph_id=743577") jsonTable = json.decode(response) fibaro:debug(jsonTable) fibaro:debug(jsonTable.body.last_value) Modifié le 15 novembre 2017 par pixynico
pepite Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Bonsoir @pixynico, Tu as tout a fait raison, Net.HTTPClient ne peut être utilisé que dans une scene. Oui pour moi c'est faisable, des que j'ai le temps j'essaie de te faire qqch. mais suis pas un pro du code
pixynico Posté(e) le 15 novembre 2017 Auteur Signaler Posté(e) le 15 novembre 2017 J'ai vu que Krikroff propose de mettre à la place jsonTable = json.decode(response) cela = fibaro:debug("len: " .. string.len(tostring(state))); J'ai ça alors dans le debug
pepite Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Cette erreur, c'est une erreur de retour json
pixynico Posté(e) le 15 novembre 2017 Auteur Signaler Posté(e) le 15 novembre 2017 On progresse Merci de ton aide c'est cool
Messages recommandés