jjacques68 Posté(e) le 28 décembre 2019 Signaler Posté(e) le 28 décembre 2019 (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 : 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é le 28 décembre 2019 par jjacques68
jojo Posté(e) le 28 décembre 2019 Signaler Posté(e) le 28 décembre 2019 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)
jjacques68 Posté(e) le 28 décembre 2019 Auteur Signaler Posté(e) le 28 décembre 2019 ben je devrais voir alors "en attente de réveil" dans sa fenêtre ! et là y a rien ??
jjacques68 Posté(e) le 28 décembre 2019 Auteur Signaler Posté(e) le 28 décembre 2019 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...
nigao Posté(e) le 28 décembre 2019 Signaler Posté(e) le 28 décembre 2019 (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é le 28 décembre 2019 par nigao
jjacques68 Posté(e) le 29 décembre 2019 Auteur Signaler Posté(e) le 29 décembre 2019 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
Lazer Posté(e) le 29 décembre 2019 Signaler Posté(e) le 29 décembre 2019 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()]})
jjacques68 Posté(e) le 29 décembre 2019 Auteur Signaler Posté(e) le 29 décembre 2019 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 '['
Lazer Posté(e) le 29 décembre 2019 Signaler Posté(e) le 29 décembre 2019 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()}})
jjacques68 Posté(e) le 29 décembre 2019 Auteur Signaler Posté(e) le 29 décembre 2019 oh punaise bien joué !!! des heures que je suis dessus !! merciiiii ! va me simplifier le code ça...
Nico Posté(e) le 29 décembre 2019 Signaler Posté(e) le 29 décembre 2019 Hum, du coup tu fais un correcteur de panneau de chauffage c'est ça ?
jjacques68 Posté(e) le 29 décembre 2019 Auteur Signaler Posté(e) le 29 décembre 2019 oui en effet, en fait je touche pas au panneau de chauffage, mais plutôt au device qui pose problème... ça semble fonctionner... 1
pepite Posté(e) le 30 décembre 2019 Signaler Posté(e) le 30 décembre 2019 Bonjour bonjour, J'arrive après la guerre ;-) mais fibaro:call(id, "setTime", tonumber(os.time())) devrait le faire aussi ;-) 1
jjacques68 Posté(e) le 30 décembre 2019 Auteur Signaler Posté(e) le 30 décembre 2019 nan c’est une blague ? bon là je peux pas le tester mais, je te dirais ..l
jjacques68 Posté(e) le 3 janvier 2020 Auteur Signaler Posté(e) le 3 janvier 2020 (modifié) @pepite bon ben j'ai testé, et ça fonctionne aussi pourquoi chercher compliqué !!! Modifié le 3 janvier 2020 par jjacques68 1
pepite Posté(e) le 4 janvier 2020 Signaler Posté(e) le 4 janvier 2020 Parfait. Toujours essayer d etre KISS :-)Envoyé de mon BND-L21 en utilisant Tapatalk
jjacques68 Posté(e) le 4 janvier 2020 Auteur Signaler Posté(e) le 4 janvier 2020 complètement d‘accord, je défends cette méthode aussi Mais là j‘ai eu un bug
Messages recommandés