Aller au contenu

Messages recommandés

Posté(e) (modifié)

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

comme il s'agit d'un device sur pile, il ne prend les infos qu'à son réveil (par défaut toutes les 5 min sur les LC13)

Posté(e)

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

Posté(e) (modifié)

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

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

 

Posté(e)

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

 

Posté(e)

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 '['

 

 

Posté(e)

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

 

Posté(e)

Bonjour bonjour,

 

J'arrive après la guerre ;-) mais

fibaro:call(id, "setTime", tonumber(os.time()))

 

devrait le faire aussi ;-)

  • Like 1
×
×
  • Créer...