Aller au contenu

Messages recommandés

Posté(e) (modifié)

Je me doute bien qu'il y a déjà des infos pour savoir comment faire, c'est pas faute d'avoir essayer de comprendre

Mais Désolé je n'arrive pas toujours

Pour moi c'est une nouveau chapitre que j'aborde avec la HC3

J'y arrive beaucoup mieux quant j'ai un exemple concret sous les yeux

Après cela me permet de mieux assimiler et de pouvoir adapter en fonction de mes besoins

J'ai déjà regarder tous le week-end comment on fait mais désolé je n'ai pas réussi

 

pour l'exemple ci dessus ok je comprends qu'il ne faut mettre que l'adresse IP et son port dans http:request(), mais du coup que faire du reste?

Ou le placer?

GET /googlehome? annoucement=someone%20at%20the%20door HTTP/1.1

Merci

Modifié par flacon030
Posté(e)

Juste l'URL, comme dans ton navigateur.

Tout simple.

Exemple :

"http://mon.adresse.com/googlehome?annoucement=someone%20at%20the%20door"

 

Pour ton QuickApp, il te suffit de partir d'un QA exemple proposé par Fibaro. Choisi le type qui correspond à ton besoin.

En complément ne pas oublier la doc officielle : https://manuals.fibaro.com/home-center-3-quick-apps/

Il y a un paragraphe sur la création d'un bouton.

  • 3 mois après...
Posté(e) (modifié)

salut à tous

 

J'ai une erreur 400 de mon code ci-dessous, après un bonheur de recherche je ne trouve toujours pas le problème.

Merci d'avance pour votre aide

 

[22.03.2022] [13:25:39] [DEBUG] [SCENE253]: Erreur : status=400

 

https://voicemonkey.io/start

 


local var1 = "Hello%20monkey"

local http = net.HTTPClient()
http:request("https://api.voicemonkey.io/trigger?access_token=xxxxxxxxxxxde15&secret_token=xxxxxxxxxxxxx&monkey=fibaro&announcement="..var1, {
	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'
	}
})

 

 

 

 

 

 

Modifié par 971jmd
Posté(e)

Le code http 400 signifie "bad request".

Jamais facile à débugger... mais tu n'aurais pas un caractère caché, ou autre problème de syntaxe dans l'URL que tu utilises pour ta requête ?

 

Car du point de vue de ta box domotique, ta requête a bien été effectuée, puis c'est la fonction success() qui a été appelée, donc c'est bien le serveur Web qui a reçu puis rejeté ta requête.

  • Lazer a épinglé ce sujet
  • 1 an après...
Posté(e) (modifié)

Hello,

 

Bon, j'ai un truc bizarre.

Je n'ai pas le même comportement avec net.HTTPClient() dans une scène ou dans un QApp.

 

Cela marche bien dans une scène. réponse 302 : login ok donc redirection et je récupère le cookie et je fais la suite, blablabla.

Sur ma Qapp, si je vire pas le CheckCertificate alors je n'ai plus de réponse. Il ne se passe rien.

Si je vire le CheckCertificate, alors j'ai une réponse erreur 404. La même erreur que quand je mets des faux login/password.

 

Dans la scène, ces même logins/ password sont OK.

 

Y a-t-il un comportement différent attendu entre les Scènes et les App ???

 

Merci :)

 

Voici mon code QA qui marche pas (erreur 404) : 

function QuickApp:onInit()
    self:debug("onInit")
    -- récupère le token Easee
  
	-- variables locales
	local Debugging = 01
 	local EaseeURLlogin = "https://api.easee.com/api/accounts/login"
		EaseeURLlogin = "https://www.rika-firenet.com/web/login/"
		--EaseeURLlogin = "https://free.fr"
	local http = net.HTTPClient()
	local user = "toto"
	local password = "titi"
	local HTTPdata = '{"email": "'.. user .. '", "password": "' .. password .. '"}'

	if Debugging > 0 then
		fibaro.debug(DebugTag,"EaseeURLlogin : "..EaseeURLlogin)
		fibaro.debug(DebugTag,"HTTPdata : "..HTTPdata)
	end

	http:request(EaseeURLlogin, {
		options = {
			--checkCertificate = false,
			method = 'POST',
			headers = {
				['Accept'] = 'application/json',
				['Content-Type'] = 'application/json',
				},
			data = HTTPdata,
			timeout = 10000
			},

		success = function(response)
			fibaro.debug(DebugTag,'ici')
			fibaro.debug(DebugTag,response.status)
		end,
		
		error = function(err)
			local msg = "Erreur : " .. err
			fibaro.warning(DebugTag,msg)
		end,
		}
	)
end

 

debug Qapp:

[24.01.2025] [13:41:18] [DEBUG] [QUICKAPP345]: onInit
[24.01.2025] [13:41:18] [DEBUG] [TEST]: EaseeURLlogin : https://www.rika-firenet.com/web/login/
[24.01.2025] [13:41:18] [DEBUG] [TEST]: HTTPdata : {"email": "toto", "password": "titi"}
[24.01.2025] [13:41:19] [DEBUG] [TEST]: ici
[24.01.2025] [13:41:19] [DEBUG] [TEST]: 404

 

Voici mon code dans la scène (qui marche bien code 302)

function APIGetInfo(URLBase, user ,password, Stove, parametre, value)

	-- variables locales
	local DebugTag = "SC_RIKA_107_APIGetInfo"	
	local Debugging = 0
	local URLLogin = "/web/login"
	local URLAPI = "/api/client/"..Stove.."/status?nocache="
	local Cookie = "vide"
	local Revision = "vide" -- à virer ??????????

	local URL = URLBase..URLLogin
	local HTTPdata = '{"email": "'.. user .. '", "password": "' .. password .. '"}'

	if Debugging > 0 then
		fibaro.debug(DebugTag,"**************** Login ****************")
		fibaro.debug(DebugTag,"URL = " .. URL)
		fibaro.debug(DebugTag,"HTTPdata : "..HTTPdata)
	end

	http:request(URL, {
		options = {
			method = 'POST',
			headers = {
				['Accept'] = 'application/json',
				['Content-Type'] = 'application/json',
				},
			data = HTTPdata,
			timeout = 10000
			},

		success = function(response)
		
			if Debugging > 0 then
				fibaro.debug(DebugTag,"status : "..response.status)
				fibaro.debug(DebugTag,"response : " ..json.encode(response))
				fibaro.debug(DebugTag,"response.data : " ..json.encode(response.data))
				fibaro.debug(DebugTag,"Cookie : "..response.headers["Set-Cookie"])
			end
			
			if response.status == 302 or response.status == 200 or response.status == 201 then
			
				fibaro.trace(DebugTag,"Login Firenet OK.")
				Cookie = response.headers["Set-Cookie"]
          
          --[... suite du code]

 

debug scène :

[24.01.2025] [13:43:09] [DEBUG] [SC_RIKA_107]: **************** Start ****************
[24.01.2025] [13:43:09] [DEBUG] [SC_RIKA_107_APIGETINFO]: **************** Login ****************
[24.01.2025] [13:43:09] [DEBUG] [SC_RIKA_107_APIGETINFO]: URL = https://www.rika-firenet.com/web/login
[24.01.2025] [13:43:09] [DEBUG] [SC_RIKA_107_APIGETINFO]: HTTPdata : {"email": "XXX", "password": "YYY"}
[24.01.2025] [13:43:10] [DEBUG] [SC_RIKA_107_APIGETINFO]: status : 302
[24.01.2025] [13:43:10] [DEBUG] [SC_RIKA_107_APIGETINFO]: response : {"data":"","headers":{"Strict-Transport-Security":"max-age=15552000; includeSubDomains","........

 

Modifié par stipower
Posté(e)

Il est fort possible que la version des librairies utilisées par Fibaro soit différente entre les Scènes et les QuickApps... car même la version du moteur d'exécution LUA diffère !

Par ailleurs, certaines libraires et fonctions sont carrément présentes/absentes selon si on est dans une Scène ou un QuickApp... voir mon topic dédié à l'exploration :

 

S'il s'agit d'un comportement anormal, bug, ou changement de comportement apporté par une mise à jour récente, le mieux est de remonter le problème directement à Fibaro en passant par le forum officiel.

 

Posté(e)

Rha la loose.

Merci pour ton retour.

J'ai ouvert un case au support.

 

Obligé en attendant de faire tourner une scène toutes  les 10 secondes en allant chercher de variables globales. Ca me rappelle ma HC2 ...:blink:

×
×
  • Créer...