jjacques68 Posté(e) le 21 mars 2019 Signaler Posté(e) le 21 mars 2019 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 !!
pepite Posté(e) le 21 mars 2019 Signaler Posté(e) le 21 mars 2019 Bonjour @jjacques68 Depuis IFTTT c'est cela si ca peut t'aider
Lazer Posté(e) le 21 mars 2019 Signaler Posté(e) le 21 mars 2019 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})
jjacques68 Posté(e) le 21 mars 2019 Auteur Signaler Posté(e) le 21 mars 2019 Punaise je n'y arrive pas.... avec toute sorte de syntaxe, voici ce que j'essaye : 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 !!
jjacques68 Posté(e) le 21 mars 2019 Auteur Signaler Posté(e) le 21 mars 2019 (modifié) je progresse, ça répond OK, mais la scène me répond qu'il n'ya pas d'arguments ????? Modifié le 21 mars 2019 par jjacques68
Lazer Posté(e) le 21 mars 2019 Signaler Posté(e) le 21 mars 2019 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....
jjacques68 Posté(e) le 21 mars 2019 Auteur Signaler Posté(e) le 21 mars 2019 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
Lazer Posté(e) le 21 mars 2019 Signaler Posté(e) le 21 mars 2019 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"}}
jjacques68 Posté(e) le 21 mars 2019 Auteur Signaler Posté(e) le 21 mars 2019 oula, je crains de ne pas te suivre... ce code se met dans la scène appelée ? je suis perdu avec la syntaxe...
Lazer Posté(e) le 21 mars 2019 Signaler Posté(e) le 21 mars 2019 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.
jjacques68 Posté(e) le 22 mars 2019 Auteur Signaler Posté(e) le 22 mars 2019 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 ! 1
pepite Posté(e) le 22 mars 2019 Signaler Posté(e) le 22 mars 2019 Bonjour, J'aurais testé ceci aussi , en reprenant ton exemple {"args"={"Test"="essai"}} 1
Lazer Posté(e) le 22 mars 2019 Signaler Posté(e) le 22 mars 2019 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.
jjacques68 Posté(e) le 22 mars 2019 Auteur Signaler Posté(e) le 22 mars 2019 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
jjacques68 Posté(e) le 22 mars 2019 Auteur Signaler Posté(e) le 22 mars 2019 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
jjacques68 Posté(e) le 22 mars 2019 Auteur Signaler Posté(e) le 22 mars 2019 Punaise, j'en viens à me demander si la HC2 est capable de recevoir des requêtes POST avec arguments depuis l'extérieur ???
jjacques68 Posté(e) le 22 mars 2019 Auteur Signaler Posté(e) le 22 mars 2019 oh punaise c'est bon : https://forum.fibaro.com/topic/25640-solved-api-post-scene-action-start-with-parameters/ la syntaxe est : {"args":["valeur1", 2, "valeur3"]} Mais alors quelle galère... 2
Messages recommandés