Aller au contenu

api.post


jjacques68

Messages recommandés

Hello tout le monde, 

 

je cherche à envoyer une consigne de temps à une vanne Danfoss LC13 comme si je cliquait dans l'IHM du device.

En cherchant dans le debug du navigateur, j'ai vu passer ça :

 

2038396034_Sanstitre.thumb.png.a5eb4ddeedcb313344549e8a84e51e27.png

 

et donc dans une scène, j'essaye de reproduire cette action :

api.post("/devices/40/action/setTime",os.time())

J'ai pas de messages d'erreur, mais je ne constate pas de changement non plus ???

 

Vous avez une idée ?

 

Merci d'avance !!

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

:) nan mais attend, ce panneau de chauffage commence à me sortir par les tous les trous !!!

 

je pense que si j’arrive à faire marcher ce api.post, j’aurai réglé ce problème...

 

mais je pense que c’est l’argument qui pose problème, doit être mal formaté, et je vois pas comment le faire...

Lien vers le commentaire
Partager sur d’autres sites

la commande api.post transmet les requests headers ?

Habitant sous les tropiques j'ai pas du tout ce genre de matériel dans ma box ^^ donc je fais que passer par là.

 

----

Sinon j'utilise souvent postman pour tester mes requêtes HTTP avant de me lancer dans du code, histoire de savoir si tout se passe bien ou pas.

https://www.getpostman.com/product/api-client

Modifié par nigao
Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé !! 

 

(merci @nigao - j'ai utilisé Advanced Rest de Google Chrome)

 

alors là l'ancienne ça donne

local http = net.HTTPClient();
http:request("http://127.0.0.1:11111/api/devices/40/action/setTime",
{
	options = {
		method = "POST",
		headers = {
			["Authorization"] = "Basic blablabla",
			["Content-Type"] = "application/x-www-form-urlencoded"
		},
		data = '{"args": [0]}'
	},
	success = function(response) print(response.data) end,
	failure = function(err) print("Error : "..err) end
})

cela me remet à 0 le la consigne de temps donné par "erreur" à la vanne Danfoss

 

Lien vers le commentaire
Partager sur d’autres sites

Pourquoi tu fais si compliqué ?

http:request() est asynchrone, ça va complètement modifier l'exécution de ton script (et ça ne fonctionne que dans une scène)


Tu étais bien parti pourtant avec le api.post()

 

Moi je ferai un truc du genre (non testé) :

api.post("/devices/40/action/setTime", {args=[os.time()]})

 

Lien vers le commentaire
Partager sur d’autres sites

Ben j'ai essayé toutes les syntaxe possible que je connaissais...

 

J'ai rien trouvé qui fonctionne.

 

Ton exemple me donne : 

[DEBUG] 12:32:37: 2019-12-29 12:32:37.512313 [ fatal] Unknown exception: /opt/fibaro/scenes/299.lua:7: unexpected symbol near '['

 

 

Lien vers le commentaire
Partager sur d’autres sites

Ah bah je t'ai dis que je n'ai pas testé, il reste des erreurs de syntaxe à corriger. Et comme je ne fais plus de LUA depuis plusieurs mois, je suis rouillé.

 

Là il te dit bien qu'il ne veut pas du crochet, donc il faut mettre une accolade (le json.encode qui est effectué à l'intérieur de la fonction api.post mettra cela en forme proprement à la norme JSON)

 

Donc je pense que cela doit s'écrire :

api.post("/devices/40/action/setTime", {args={os.time()}})

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...