Aller au contenu
jojo

Requêtes Http /get Sur Hcl

Recommended Posts

Edit :

regardez également ce post pour une info plus récente : http://www.domotique-fibaro.fr/index.php/topic/5935-requ%C3%AAtes-get-et-put-sur-hcl-synth%C3%A8se-de-celles-qui-fonctionnent/

 

Bonsoir,

Je vois que beaucoup de monde se casse les dents sur les requêtes http sur HCL.

Je précise que ce que je décris ici fonctionne avec la dernière version du firmware 3.593

 

1) créer un virtual device et préciser l'IP et le port (80) du HCL

post-1320-0-04555400-1416174043_thumb.jpg

 

2) dans la partie script de chaque bouton, entrez le string suivant qui contient la commande GET

 

 

GET<space><command><space>HTTP/1.10x0D0x0AHost:<IP:port><space>0x0D0x0AAuthorization:<space>Basic<space><user:pwd inBase64><space>0x0D0x0A0x0D0x0A

 

N.B. : 

  1. remplacer <space> par un espace
  2. remplacer <command> par la commande GET à  passer
  3. remplacer <user:pwd inBase64> en le calculant https://www.base64encode.org/. Pour user = admin; pwd = admin, le texte à  encoder est admin:admin, ce qui donne YWRtaW46YWRtaW4=
  4. respecter SCRUPULEUSEMENT la syntaxe ci-dessus, y compris les espaces.

post-1320-0-85224100-1416174219_thumb.jpg

 

Pour la liste de ce que vous pouvez passer comme requêtes, voir le post de moicphil

http://www.domotique-fibaro.fr/index.php/topic/1321-ex%C3%A9cuter-et-stopper-une-sc%C3%A8ne-par-http/

 

Beaucoup de plaisir à  toute la communauté

Modifié par jojo
  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup jojo pour ton partage ï¸. Je tiens à  préciser que ceci fait suite à  un bug de la version V3.593 du HCLite et que rien ne garantit un bon fonctionnement sur les versions ultérieures lorsque le bug sera résolu.

JC.

Envoyé de mon iPhone à  l'aide de Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Jojo.

 

Quelqu'un peut-il expliquer la différence entre GET et PUT ?

Existe-t-il une <commande> qui permettrait de changer la valeur d'une variable globale ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Berale24,

Pour changer la valeur d'une variable, je fais une scène qui est lancée par ma virtual device

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, j'ai vu ton sujet, mais si on peut éviter des scènes c'est pas plus mal.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Berale24, sans rentrer dans les détails et faire une réponse la plus limpide possible, sur l' API:

 

La méthode GET fait une demande pour obtenir une ressource (avec ou sans retour d'information) pour par exemple obtenir la liste des périphériques, des scènes...GET ne peut pas modifier la ressource.

 

La méthode POST  va servir à  transmettre des données (avec ou sans retour d'information) avec passage d'argument dans "body" pour par exemple créer une variable, une scène...

 

La méthode PUT fait une demande de modification de la ressource (avec ou sans retour d'information) avec passage d'argument dans le "body" (payload, etc) pour mettre à  jour par exemple une variable, une propriété d'un périphérique etc..

 

La méthode DELETE fait une demande de suppression ...

 

;)

Partager ce message


Lien à poster
Partager sur d’autres sites

donc, si j'ai bien compris, Berale24 devrait faire une commande PUT.

 

Mais je crois que les virtual devices de la HCL ne supportent que les commandes GET ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Attention, il ne faut pas confondre mise à  jour d'un slider, bouton etc d'un virtual device (qui sous entend une mise à  jour instantanée de l' interface utilisateur) et la modification du code même du virtual device (lua, propriété etc)

 

Donc oui le HCL supporte la méthode PUT sur toutes les ressources modifiables.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Krikroff,

et où pourrais-je trouver une liste exhaustive des commandes GET, POST, PUT, ... ?

Dans la doc Fibaro ???? :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Il n'y a pas de doc a ma connaissance.

 

Pour mettre à  jour une variable en string avec le HCL ou le HC2 en version 3.5xx il faut:

PUT http://ip:port/api/globalVariables HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 27
Authorization: Basic YWRtaW46YWRtaW4=

{"name":"TEST","value":"2"}

ou "name" est le nom de la variable et "value" la nouvelle valeur. Attention au Content-Length qui peut poser problème et qui correspond à  la longueur du corps de la requête ;)

 

L' idéal est d'attendre la mise à  jour en V4 car l'api change ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci, j'y regarderai en détail comment implémenter cela sur HCL (le but serait de fournir à  la communauté qqch de similaire au tuto de départ, car seuls les geek comme toi comprennent ton charabia  ;)  ;)

 

Mais il me semble que la plus grande qualité que la personne qui veut mettre une domotique bien en place, est la PATIENCE  :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui malheureusement la domotique pour monsieur tout le monde ce n'est pas encore exactement cela (àce jour) ou avec beaucoup d'investissement personnel sinon tout peut vitre devenir frustrant. Mais heureusement il y a toujours quelqu'un pour donner un coup de main ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci les gars. Voilà  de quoi passer quelques nuits blanches ! :D

 

@Krikroff : "Oui malheureusement la domotique pour monsieur tout le monde ce n'est pas encore exactement cela" Orange nous aurait menti ??? :lol:

 

PS: Krikroff, peux tu nous dire si c'est pour les variables simples ou les variables prédéfinies. Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Berale24, désole je n'avais pas vu la question . Donc oui les deux ...

Envoyé de mon iPhone àl'aide de Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Après quelques recherches sur le net, j'ai trouvé sur le forum Fibaro la solution suivante qui fonctionne mais seulement avec les variables simples.

Ne me demandez pas pourquoi l'adresse IP est celle du local host 127.0.0.1 et le port 11111, mais ça marche.

 

PUT /api/globalVariables HTTP/1.1
Host: 127.0.0.1
Authorization: Basic xxxxxxxxxxxxxx

{"name":"toto","value":"4"}

Partager ce message


Lien à poster
Partager sur d’autres sites

@Berale24, Ça marche simplement parce-que c'est comme cela que Fibaro dois attaquer l' API en "interne" en LUA. Juste un complément d'information, le Authorization: Basic n'est pas utilise dans ce cas tu peux le supprimer ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Berale24,

1. Peux-tu préciser quelle est la différence entre des variables simples et prédéfinies ou globales ?

Je n'en connais qu'un seul type dans le panneau des variables ?

2. Dans la partie texte du bouton de la virtual device, je rentre le code  dont tu parles avec un copier / coller. Pour cela il n'y aurait pas tous les problèmes d'espaces etc comme pour la commande GET ?

Merci et bonne journée

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans le panneau variable, tu as d'abord Variable: tu donnes le nom d'une variable et une valeur exclusivement numérique.

Puis, plus bas, tu as Variables prédéfinies: tu donnes le nom d'une variable et un nombre prédéfinie de valeurs possible alphanumériques.

 

La solution que j'ai trouvé ne fonctionne que pour la première catégorie.

 

Tu peux faire un Copier/Coller, la variable doit exister, et n'oublie pas dans la partie générale du virtual device de mettre l'adresse IP 127.0.0.1 et le port 11111.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci,

Jétais sûr qu'il s'agissait de la même chose dans les deux parties, sauf que dans la deuxième tu limites les possibilités d'entrées (choix pré-défini comme dans les listes xls).

Mais je suis entrain déjàd'imaginer des tonnes de possibilités. Et merde encore des nuits blanches en vue ...

Je me demande si je ne devrais pas quitter ce forum, car il me donne beaucoup trop de bonnes idées, et je n'arrive pas àsuivre ... :13:

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, en fait, je m'étais trompé. ça marche aussi pour les variables prédéfinies.

J'avais ouvert deux fenêtres, une pour les devices et une pour les variables, sauf qu'il fallait faire un refresh pour voir si la variable avait changée.

 

ça m'arrange, j'avais pas trop envie de changer toutes mes variables et mes scènes.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×