Aller au contenu

Syntaxe requête HTTP Scène avec arguments


jjacques68

Recommended Posts

Bonjour à tous, 

 

La question a déjà peut-être été posé, désolé...

 

Quelle est la syntaxe que l’on doit utiliser pour écrire une requête HTTP permettant de lancer une scène en lui passant des arguments ?

 

Je précise que la requête est exécutée depuis un système extérieur à la HC2 !

(j’utilise souvent les arguments, mais en interne, d’un VD vers une scène par exemple et sans aucun soucis...)

 

Mais dans ce cas précis, ce serait une application windev qui envoie la requête vers la HC2 pour lancer une scène et y passer des arguments !

 

Et la je sèche... je trouve pas la bonne syntaxe ou méthode...

 

Merci pour votre aide !!

Lien vers le commentaire
Partager sur d’autres sites

 

2) Utilisation depuis un appareil externe :

Comme par exemple une box domotique utilisée en passerelle (au hasard, Jeedom, FHEM, Zibase, etc), des scripts Shell (CURL), des pages Web (PHP), etc. (sauf IPX800 pour le moment) source @Lazer

 

URL à appeler en POST :

/scenes/123/action/start

Données à envoyer en POST :

{["args"]=args})

 

 

Lien vers le commentaire
Partager sur d’autres sites

Punaise je n'y arrive pas.... avec toute sorte de syntaxe, voici ce que j'essaye :

 

1228047411_Sanstitre.thumb.png.de4657679686fdd80c8a86b065bd1f83.png

 

Si je me mets en méthode PUT, la scène se lance bien mais pas d'arguments.

Si je test la scène depuis la HC2 (autre scène qui la lance) avec arguments, ça fonctionne !

 

Vous avez une idée ?

 

merci !!

 

 

Lien vers le commentaire
Partager sur d’autres sites

Ja sais bien, mais si je mets l’arguments sous la forme que vous donnez, il retourne une erreur de format json...

Y a sous cette forme qu’il accepte !!

J’ai essayé de passer des numériques au lieu de chaîne, mais sans succès !


Envoyé de mon iPhone en utilisant Tapatalk Pro

Lien vers le commentaire
Partager sur d’autres sites

fibaro.startScene = function(self, sceneID, args)
  api.post("/scenes/" .. sceneID .. "/action/start", {["args"]=args})
end

Comme on peut le voir, tes vrais arguments sont dans la variable "args".

 

En supposant que tes arguments à toi soient ceux-là :

{"monargument1"="Hello","monargument2"="World"}

Alors en théorie, une fois encodé, ça doit donner quelque chose comme ça (à tester) :

{"args"={"monargument1"="Hello","monargument2"="World"}}

 

Lien vers le commentaire
Partager sur d’autres sites

Non pardon c'est le code interne Fibaro de la fonction startScene() quand on l'utilise dans une scène ou un VD (qui appelle une autre scène du coup...)

Donc ça nous montre juste comment formater les paramètres correctement.

Lien vers le commentaire
Partager sur d’autres sites

Oui voilà Pepite.

 

Je crois que la confusion vient du fait que la syntaxe donnée dans le tuto de MAM78 (*) est une syntaxe LUA, donc si tu la transmet telle quelle en paramètre de la requête POST, tu te fais jeter.

Il faut l'encoder proprement en JSON, donc les crochets autour de "args" disparaissent.

 

* Ce n'est pas sa faute, on voit clairement que cela provient du code source original de Fibaro. Une fois de plus, Fibaro ne documente pas suffisamment ses propres API, nous obligeant à chercher.

Lien vers le commentaire
Partager sur d’autres sites

 

hé ben nan déolsé, j'ai essayé : 

 

{"args":"essai"}

{"args"={"Test"="essai"}}

{"args":{"Test":"essai"}}

{"args"={"monargument1"="Hello","monargument2"="World"}}

{"args":{"monargument1":"Hello","monargument2":"World"}}

 

j'ai changé le Content_Type de la requete avec :

 

text/plain

application/Json

text/html

 

Mais rien y fait :( 

 

à chaque fois j'ai soit l'erreur (si j'utilise le "=" au lieu du ":")

Citation

{

"type": "ERROR",
"reason": "JSON_PARSE_ERROR",
"message": "wrong json"

}

 

soit il me répond OK, mais rien ne vient dans la scène :( 

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...