Aller au contenu
J3R3M

[Résolu] Equivalences VD/Scènes Net.FHttp

Recommended Posts

Bonjour à tous,

 

J'utilise le VD Philips Hue de @Talwayseb pour toutes mes ampoules Hues.

Sur chacun des boutons du VD, les informations sont envoyées au pont Hue via ces commandes :

HueCMD = Net.FHttp(HueIP,HuePort) 
HueCMD:PUT('/api/'..HueUser..'/lights/'..HueLampeId..'/state', '{"on":'..HueOn..', "sat":'..HueSat..', "bri":'..HueBri..', "hue":'..HueColor..', "ct":'..HueCT..'}')

 

Pour le besoin de certaines de mes scènes, j'aimerais pouvoir effectuer cette commande directement, sans avoir à appuyer sur les boutons du VD (et éviter de les créer un par un évidemment).

 

La fonction étant différente pour être utilisée dans les scènes, pouvez-vous, s'il-vous-plaît, me dire comment la transcrire pour une utilisation directement dans une scène ? Ou me mettre sur la bonne voie ?

 

J'ai essayé ceci (en ayant bien entendu déclaré correctement les variables auparavant), mais en vain...

  local http = net.HTTPClient();
  local body = '';
  url = 'http://'..HueIP..'/api/'..HueUser..'/lights/'..HueLampeId..'/state', '{"on":'..HueOn..', "sat":'..HueSat..', "bri":'..HueBri..', "hue":'..HueColor..', "ct":'..HueCT..'}';
  http:request(url, {
      options = { 
      method = 'PUT',
      headers = { ["Content-Type"] = "application/x-www-form-urlencoded",
                ["Content-length"] = string.format("%d", body:len())},
	}, })

 

Merci d'avance du temps accordé à ma demande :60:

Modifié par J3R3M

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Comme ceci peut-etre, je n'ai aps de Hue, je ne  peux donc pas tester ;-) mais la source est plutot fiable : GEA ;-)

 

 local url = "http://"..HueIP.."/api/"..HueUser.."/lights/"..HueLampeId.."/state"
 local Property = "on" -- sat/bri/hue/ct
 local HueOn = true
 local datas = "{\""..Property.."\":"..HueOn.."}"
 local http = net.HTTPClient()
 http:request(url, {
     options =  {
          method =  "PUT",
          data = datas
          },
     success = function(response) end,
     error  = function(err) print(err) end
})

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Pepite et merci de ta réponse.

Désolé, il semblerait que je sois un peu passé à côté <_<

 

Je vais faire des essais à partir de ce code alors, à savoir que j'aimerais avoir la gestion des paramètres de couleurs (sat/bri/hue/ct).

Je reviendrai par ici lorsque j'aurais testé cela :)

Modifié par J3R3M
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

En me basant sur ta base GEA, j'ai effectivement pu m'en sortir! Merci beaucoup!

 

local http = net.HTTPClient();
  local url = HueBridgeIP..'/api/'..fibaro:getGlobal('VD_Hue_User')..'/groups/'..HueGroup..'/action';
  local datas = '{"on":'..HueOn..', "sat":'..HueSat..', "bri":'..HueBri..', "hue":'..HueColor..'}';

  http:request(url, {
       options =  {
         method =  "PUT",
         data = datas
       },
  });

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

Je déterre légèrement mon topic, puisque j'ai une demande similaire, à savoir une équivalence VD/Scène que je n'arrive pas à effectuer.

Je cherche à agir sur l'API Netatmo depuis un VD.

 

Ce code fonctionne parfaitement dans une scène :

local home_id = "aaaaaaaaaaaaaaaaa";

local api = "https://api.netatmo.com";
local arg = "/api/setpersonsaway";
local datas = "?access_token="..fibaro:getGlobalValue("NETATMO_Token").."&home_id="..home_id;

local http = net.HTTPClient();
local url = api..arg..datas;
http:request(url, { options = { method = 'GET', data = json.encode(newVar)}});

Mais je n'arrive pas à envoyer cette URL depuis un VD.

 

Les code suivants ne fonctionnent pas :

local home_id = "aaaaaaaaaaaaaa";
local URL = "https://api.netatmo.com";

API = Net.FHttp(URL,80) 
API:GET("/api/setpersonsaway?access_token="..fibaro:getGlobalValue("NETATMO_Token").."&home_id="..home_id)
local home_id = "aaaaaaaaaaaaaaaaaaaa";
local URL = "https://api.netatmo.com";

API = Net.FHttp(URL,80);
API:PUT('/api/setpersonsaway', '{"access_token":'..fibaro:getGlobalValue("NETATMO_Token")..', "home_id":'..home_id..'}');

 

J'ai vraiment beaucoup de mal avec ces différences Net.FHttp et net.HTTPClient!

Qu'est-ce qui cloche dans mon code svp?

Modifié par J3R3M

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Ben rien, si ce n'est que c'est du HTTPS et que le HTTPS n'est geré que dans les scenes. ;-)

Donc en cas de https, il te faut un couple scene/VD avec ta scène qui envoie les infos au VD ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @pepite et merci encore de ta réponse.

Décidément, cette incohérence LUA entre VD et Scènes me chagrine!

Partager ce message


Lien à poster
Partager sur d’autres sites

×