Aller au contenu
mamoreau

Problème Code LUA

Recommended Posts

Bonjour,

 

j'ai utilisé ce code LUA afin d'avoir un état de ma freebox player :

 

local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if errorCode == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)

    fibaro:call(EtatFbxPlayer, "setProperty", "ui.Label.EtatFbxPlayer.value", On)
  else
    fibaro:debug('Status: OFF or In Standby Mode')
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
end

 

Mon problème est que mon libéllé EtatFbxPlayer n'affiche pas "On" 

 

Quelqu'un pourrait il m'aider ?

 

Merci par avance.

Modifié par mamoreau

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu es sur de ça "ui.Label.EtatFbxPlayer.value"

Je dirais que le point après Label est de trop.

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 5 minutes, Berale24 a dit :

Tu es sur de ça "ui.Label.EtatFbxPlayer.value"

Je dirais que le point après Label est de trop.

Bonjour

 

si je fais ca en mode debug j'obtient :

attempt to concatenate local 'deviceID' (a nil value)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans ton code je ne vois pas la valeur associée à la variable EtatFbxPlayer

Si tu as renommé le label EtatFbxPlayer  alors la syntaxe est ui.EtatFbxPlayer.value

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 2 minutes, Berale24 a dit :

Dans ton code je ne vois pas la valeur associée à la variable EtatFbxPlayer

Si tu as renommé le label EtatFbxPlayer  alors la syntaxe est ui.EtatFbxPlayer.value

Comme cela, ca ne fonctionne pas non plus :

local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if errorCode == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)
    fibaro:call(EtatFbxPlayer, "setProperty", "ui.EtatFbxPlayer.value", On)
  else
    fibaro:debug('Status: OFF or In Standby Mode')
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
end

 

L'Id de l'etiquette est bien EtatFbxPlayer

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Ce que @Berale24 t'écris c'est que dans cette ligne: fibaro:call(EtatFbxPlayer, "setProperty", "ui.EtatFbxPlayer.value", On)  tu n'as pas définit EtatFbxPlayer, qui est juste après le call.

 

fibaro:call(id , "setProperty", "ui.Label.value", texte)

 

  • id est un nombre, représentant le numéro du VD; Dans ton cas EtatFbxPlayer, doit renvoyer vers un nombre; que tu auras définit, par exemple EtatFbxPlayer = fibaro:getSelfId() ou EtatFbxPlayer = 55 si ton device est le numéro 55
  • "ui.Label.value" est le nom du label; ici "ui.EtatFbxPlayer.value"; ok
  • texte est de type string. Ici tu as mis On sans les guillemets, ce qui veut dire que tu inscrit le contenu d'une variable On que tu auras définit auparavant. Je pense que tu as oublié les guillemets

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Désole mais je n'ai pas compris :

 

local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if errorCode == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)
    EtatFbxPlayer = fibaro:getSelfId()
    fibaro:call(EtatFbxPlayer, "setProperty", "ui.EtatFbxPlayer.value", On) 
      else
    fibaro:debug('Status: OFF or In Standby Mode')
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
end

 

ca ne fonctionne pas

Partager ce message


Lien à poster
Partager sur d’autres sites

As tu toujours l'erreur ou est ce juste ton label qui n'est pas mis à jour????

 

 local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if tonumber(errorCode) == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)
    fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "On") 
      else
    fibaro:debug('Status: OFF or In Standby Mode')
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
end 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 12 minutes, Nikko a dit :

As tu toujours l'erreur ou est ce juste ton label qui n'est pas mis à jour????

 


 local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if tonumber(errorCode) == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)
    fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "On") 
      else
    fibaro:debug('Status: OFF or In Standby Mode')
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
end 

 

Plus d'erreur mais libel pas a jour

Partager ce message


Lien à poster
Partager sur d’autres sites

Recopie le dernier code que je t'ai mis, car c'est ce que je t'expliquais, tu n'a pas les guillemets sur ton On.

De plus ton label ne sera mis à jour que la première fois puisque:

Si tu arrives à faire le Get alors label On et Variable globale à 1

Sinon variable globale à 0

 

Mais jamais tu ne demandes à ton label de mettre un autre état que on

Donc si ton get aboutit alors ton label passe sur on mais au coup d'après si la requète n'aboutit pas, tu restes quand même sur on vu que tu ne modifies pas le label par la suite... Il aurait fallu un truc du genre:

 

 local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if tonumber(errorCode) == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)
    fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "On") 
      else
    fibaro:debug('Status: OFF or In Standby Mode')
	fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "Off") 
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
  fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "Refused") 
end 

 

Modifié par Nikko
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, Nikko a dit :

Recopie le dernier code que je t'ai mis, car c'est ce que je t'expliquais, tu n'a pas les guillemets sur ton On.

De plus ton label ne sera mis àjour que la première fois puisque:

Si tu arrives à faire le Get alors label On et Variable globale à 1

Sinon variable globale à 0

 

Mais jamais tu ne demandes à ton label de mettre un autre état que on

Donc si ton get aboutit ton label passe sur on mais au coup d'après si la requète n'aboutit pas, tu restes quand même sur on vu que tu ne modifies pas le label par la suite... Il aurait fallu un truc du genre:

 


 local HC2 = Net.FHttp("192.168.0.199", 54243);
local result, status, errorCode = HC2:GET("/device.xml");

if tonumber(errorCode) == 0 then
  if tonumber(status) == 200 then
    fibaro:debug('Status: ON')
    fibaro:setGlobal("FbxHD_etat", 1)
    fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "On") 
      else
    fibaro:debug('Status: OFF or In Standby Mode')
	fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "Off") 
    fibaro:setGlobal("FbxHD_etat", 0)
  end
else
  fibaro:debug('Connection refused')
  fibaro:setGlobal("FbxHD_etat", 0)
  fibaro:call(fibaro:getSelfId(), "setProperty", "ui.EtatFbxPlayer.value", "Refused") 
end 

 

It's good un grand merci à toi

Partager ce message


Lien à poster
Partager sur d’autres sites

×