Aller au contenu

Messages recommandés

Posté(e) (modifié)

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
Posté(e)

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

Posté(e)

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 ?

Posté(e)

Berale24,

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

Posté(e)

@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 ...

 

;)

Posté(e)

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 ?

Posté(e)

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.

Posté(e)

merci Krikroff,

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

Dans la doc Fibaro ???? :15:

Posté(e)

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

Posté(e)

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:

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Envoyé de mon iPhone àl'aide de Tapatalk

Posté(e)

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"}

Posté(e)

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

Posté(e)

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

Posté(e)

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
Posté(e)

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:

Posté(e)

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
×
×
  • Créer...