Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

 

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

 

 

Posté(e)

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

 

 

Posté(e)

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

Posté(e)

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

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

 

Posté(e)

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.

Posté(e)

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

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.

Posté(e)

 

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 :( 

 

Posté(e)

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

 

×
×
  • Créer...