Aller au contenu

Commandes HTTP - GET


Messages recommandés

Posté(e)

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

 

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

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.

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

 

  • Like 4
  • 2 semaines après...
Posté(e)

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

×
×
  • Créer...