Aller au contenu
jjacques68

Syntaxe requête HTTP Scène avec arguments

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

Partager ce message


Lien à poster
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})

 

 

Partager ce message


Lien à poster
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 !!

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

je progresse, ça répond OK, mais la scène me répond qu'il n'ya pas d'arguments ?????

 

1680955890_Sanstitre.thumb.png.0363259c0b40c88916e3c3235f6a0244.png

Modifié par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

L'argument que tu as donné ne ressemble pas beaucoup à ce qui est dans le tuto de MAM78 et que j'ai recopié au dessus....

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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"}}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

oula, je crains de ne pas te suivre...

 

ce code se met dans la scène appelée ?

 

je suis perdu avec la syntaxe...

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

OK ! je crois que je viens de comprendre la syntaxe des arguments avec ce que tu as dit...

 

J’essaye ce soir après le boulo et te tiens au jus !

 

Merci !

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

J'aurais testé ceci aussi , en reprenant ton exemple

 

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

 

  • Like 1

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
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 :( 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

pour info voici le code de la scène en question

 

print("Start")

local Params = fibaro:args()

if Params then
    for k, v in ipairs(Params) do
    	print(v)
   end
else
   print("no")  
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Punaise, j'en viens à me demander si la HC2 est capable de recevoir des requêtes POST avec arguments depuis l'extérieur ???

Partager ce message


Lien à poster
Partager sur d’autres sites

×