Aller au contenu
pixynico

Récuperer info api eedomus dans un VD

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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) 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Olala, je viens de percuter, pour tester,

 

Pourrais tu supprimer l'authetification api_user et api_secret cote eedomus ?  et

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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. ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

 

image.png.09523668f5c903459af1a2c68fdb463d.png

 

 

Modifié par pixynico

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

 

test.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Cette erreur, c'est une erreur de retour json 

Partager ce message


Lien à poster
Partager sur d’autres sites

×