Temset Posté(e) le 31 juillet 2023 Signaler Posté(e) le 31 juillet 2023 Bonjour je suis complètement nul en programmation, j'aurais donc besoin d'un peu d'aide J'ai actuellement une box Yubii (HC3L) pour la commande de mes stores Nice et une box airsend2 pour la commande de mon store toile Somfy je voudrais depuis Yubii envoyer des commande HTTP vers Airsend (monter, stop et descendre), j'ai déjà créé le dispositif avec 3 boutons, mais je suis incapable d' écrire le code qui me permet d'envoyer la requête http vers Airsend merci d'avance pour votre aide
Lazer Posté(e) le 1 août 2023 Signaler Posté(e) le 1 août 2023 Je n'ai pas le temps de t'écrire un QA complet, mais voici la façon de faire les requêtes HTTP :
Temset Posté(e) le 3 août 2023 Auteur Signaler Posté(e) le 3 août 2023 (modifié) Merci pour le tuto, j'ai bricolé un truc qui fonctionne, mais je pense qu'il pourrai être simplifier un peu, qu'en pensez vous? function QuickApp:open() self:debug("base shutter opened") self:updateProperty("state", "Opened") local http = net.HTTPClient() http:request("https://airsend.cloud/device/xxxxx/command/4/?session=???", { success = function(response) if response.status == 200 then print('OK, réponse : '.. response.data) else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'GET' } }) end function QuickApp:close() self:debug("base shutter closed") self:updateProperty("state", "Closed") local http = net.HTTPClient() http:request("https://airsend.cloud/device/xxxxx/command/5/?session=???", { success = function(response) if response.status == 200 then print('OK, réponse : '.. response.data) else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'GET' } }) end function QuickApp:stop() self:debug("base shutter stopped") self:updateProperty("state", "Unknown") local http = net.HTTPClient() http:request("https://airsend.cloud/device/xxxxx/command/3/?session=???", { success = function(response) if response.status == 200 then print('OK, réponse : '.. response.data) else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'GET' } }) end Modifié le 3 août 2023 par Temset
Lazer Posté(e) le 3 août 2023 Signaler Posté(e) le 3 août 2023 Il faudrait mettre les self:updateProperty() dans les fonctions success(), de sorte que si l'appel HTTP échoue, alors le statut du device n'est pas mis à jour.
jang Posté(e) le 3 août 2023 Signaler Posté(e) le 3 août 2023 local commands = { Opened = "https://airsend.cloud/device/xxxxx/command/4/?session=???", Closed = "https://airsend.cloud/device/xxxxx/command/5/?session=???", Stopped = "https://airsend.cloud/device/xxxxx/command/3/?session=???", } function QuickApp:command(cmd,state) assert(commands[cmd],"Bad command") local http = net.HTTPClient() http:request(commands[cmd], { success = function(response) if response.status == 200 then print('OK, réponse : '.. response.data) self:debug("base shutter "..cmd:lower()) self:updateProperty("state", state or cmd) else self:error("Erreur : status=" .. tostring(response.status)) end end, error = function(err) self:error("Erreur : " .. err) end, options = { method = 'GET' } }) end function QuickApp:open() sendCommand('Opened') end function QuickApp:close() sendCommand('Closed') end function QuickApp:stop() sendCommand('Stopped',"Unknown") end 4
Temset Posté(e) le 12 août 2023 Auteur Signaler Posté(e) le 12 août 2023 Merci Jang, désolé pour la réponse tardive, les vacances sont passées par là. j'ai testé le code que tu m'as gentiment proposé, mais malheureusement il ne fonctionne pas, j'ai aucune réaction du store toile
Messages recommandés