Aller au contenu
gpolart

Requêtes Http Depuis Une Scène En Lua

Recommended Posts

Bonjour à  tous et meilleurs voeux pour cette nouvelle année,

 

J'ai cherché un peu partout (peut-être mal) des informations sur la manière d'exécuter des requêtes  HTTP depuis une scène, mais sans succès.

 

J'ai réussi à  faire des requêtes POST :

 local url = "http://domohub:8888/api/add_value";
 local http = net.HTTPClient({timeout = 1000 });

 local body = "ident="..name.."&value="..value.."&create=yes"

  http:request(url, {
  options = { method = 'POST',
                headers = {
                            ["Content-Type"] = "application/x-www-form-urlencoded",
                            ["Content-length"] = string.format("%d", body:len())
                          },
                data = body
               },
    success = function(p)
        -- Nothing to do
    end,
    error = function(err)
       fibaro:debug(err)
    end
  })

Mais je n'arrive pas à  faire des GET et récupérer le contenu ...

Je n'ai pas trouvé de doc spécifique sur ce module net.httpclient, j'ai travaillé en essais / erreurs à  partir de différents tutos.

 

J'ai vu aussi des trucs du genre :

HC2 = Net.FHttp("192.168.1.23")

Mais dans une scène cela donne :

[ERROR] 11:41:06: line 9: attempt to index global 'Net' (a nil value)

Alors que ça fonctionne dans un VD ....

 

Avez-vous des pistes à  me conseiller ?

 

Cordialement

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Net.FHttp c'est dans un VD. Normal que tu aies une erreur dans une scène.

 

Dans une scène c'est :

local http = net.HTTPClient()
http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = 'POST', data = json.encode(newVar)}}) 

Dans un VD, un exemple pour récupérer mes températures avec un GET :

local JEEDOM = Net.FHttp("192.168.0.32", 80)

--TCuisine 
local response = JEEDOM:GET("/core/api/jeeApi.php?apikey=xnbvjfhxcuul9&type=cmd&id=2335")
fibaro:setGlobal("TCuisine",response);

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

OK, merci, mais ce que tu réponds c'est ce que je sais faire ... :-)

 

Mais comment fait-on un GET dans une scène, par exemple pour récupérer une valeur d'une autre box ?

 

Ou comment récupère t-on des données d'un POST ? (en espérant que ce soit pareil pour les GET)

Partager ce message


Lien à poster
Partager sur d’autres sites

ceci peut t'aider ? 

local function updateDevice(successCallback, errorCallback, device, parameter, value)
  
  local http = net.HTTPClient()
  
  http:request('http://127.0.0.1:11111/api/plugins/callUIEvent?deviceID='..device ..'&elementName='..parameter ..'&eventType=onChanged&value=' ..value ..'',
	  {
      options = {
        method = 'GET'
      },
      success = successCallback,
      error = errorCallback
  })
end

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

 

C'est ce à  quoi j'étais arrivé, mais dans ton exemple tu ne prends en compte qu'une requête d'envoi de valeur (ce qui devrait être un POST en toute logique, mais c'est un autre sujet).

 

Pour net.HTTPClient, la fonction successCallback reçoit un paramètre qui est la réponse. On peut tester le code HTTP dans l'attribut status mais je ne connais pas l'attribut qui contient les données.

 

Par exemple, si je veux récupérer des infos d'une IPX800, je fais un GET sur http://mon_@ip/api/xdevices.json?cmd=40 et cela me retourne un objet JSON à  parser.

 

Comment accéder à  cet objet pour, par exemple, ventiler les données dans diverses variables ou VD ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

C'est bon, j'ai trouvé, c'est p.data comme dans l'extrait ci-dessous :

  http:request(url, {
                 options = { method = 'GET' },
                 success = function(p)
                            fibaro:debug(p.status)
                             fibaro:debug(p.data)
                 end,
                 error = function(err)
                            fibaro:debug(err)
                 end
   })

Merci !

 

(comment note t-on le sujet en résolu ?)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello, je galère avec ces requêtes https, vous avez un lien qui explique les syntaxes, paramètres, j'ai ouvert un compte chez fibaro developper, ça aide un peu mais pas pour les syntaxes ?

Ça veut dire quoi le .data ou .status ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×