Aller au contenu

Commandes HTTP - GET


Temset

Recommended Posts

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

 

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

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

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...