Aller au contenu
Talwayseb

Tableau LUA

Recommended Posts

Bonsoir à tous !!! :D

 

J'ai un petit souci...

je n'arrive pas à formater ce code tableau :

"lights": [
				"1",
				"6",
				"7",
				"8",
				"9"
			],

Quand j'essaye de récupérer la réponse , j'obtiens soit table: 0x8a415c0, soit une erreur...

bad argument #1 to 'decode' (string expected, got table)

 

Quelqu'un à la solution ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je pense que tu dois utiliser :

 - json.encode(variable)

- json.decode(variable)

 

;-)

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci  @pepite  !!! :74:

Comme je devais décoder la table, Je m'efforçai à utiliser json.decode, c'est ce qui me provoqué l'erreur : bad argument #1 to 'decode' (string expected, got table)

Avec json.encode, c'est mieux !!! ;)

:60:

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut à tous !!!

Je n'arrive pas à formater les strings de mon tableau

{"1","6","7","8","9"}

en entier

{1,6,7,8,9}

Avez-vous une idée pour supprimer les "" ?

Partager ce message


Lien à poster
Partager sur d’autres sites

tonumber ca ne fonctionne pas ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite,

Pas avec un tableau...

J'espérai y arriver avec string.format mais je ne trouve pas la bonne formule...

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu veux convertir TOUT le tableau ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Si possible, oui !!!

 

Voici ce que je voudrai arriver à faire :

 

-- Récupération des ID des Lampes du groupe
HueLampes = jsonTable.lights
fibaro:debug("HueLampes = " .. tostring(HueLampes)); -- Résultat : HueLampes = table: 0x9f7d770
-- Récupération du Nombre de Lampes
NbreLampes = tonumber(#HueLampes)
fibaro:debug("Nombre de lampe = " .. tonumber(NbreLampes)); -- Résultat : Nombre de lampe = 5
-- Décodage des ID des Lampes du groupe
Lamp = json.encode(HueLampes)
fibaro:debug("Lamp = " .. tostring(Lamp));  -- Résultat : Lamp = ["1","6","7","8","9"]

-- Formatage de la Table
Lamp = string.sub(Lamp,2,-2)
Lamp = "{" .. Lamp .. "}"
fibaro:debug("Lamp = " .. tostring(Lamp)); -- Résultat : Lamp = {"1","6","7","8","9"}

-- Résultat voulu : 
Lamp = {1,6,7,8,9}
-- Avec ce formatage le reste du code marche !!!

-- Boucle RM états des Lampes
strAffiche = ""
i = 1
while i <= NbreLampes do         
HueLampeId = Lamp[i]
fibaro:debug("HueLampeId = " .. tostring(HueLampeId));
	if HueLampeId ~= nil then
    -- HTTP GET, pour récupérer toutes les informations du groupe de lampes Hue
    response = HueCMD:GET('/api/'..HueUser..'/lights/'..tostring(HueLampeId));
	jsonTable = json.decode(response) 
		if tostring(jsonTable.state.on) == "true" and tostring(jsonTable.state.reachable) == "true" then 
		strAffiche = strAffiche .. "On" 
      	RM = "On"
		elseif tostring(jsonTable.state.on) == "false" and tostring(jsonTable.state.reachable) == "true" then 
		strAffiche = strAffiche .. "Off" 
       	RM = "Off"
       	else 
		strAffiche = strAffiche .. "N/A" 
       	RM = "N/A"
		end
	fibaro:debug("La Lampe Hue n° " ..  tostring(HueLampeId) .. " est " .. tostring(RM));
 	i = i + 1 -- on incrémente i
	fibaro:debug("Affiche = " .. tostring(strAffiche));
	else
	strAffiche = "N/A"
    fibaro:debug("Affiche = N/A");
    break
   	end
end
-- Mise à jour des valeurs des Labels du VD
fibaro:call(ID, "setProperty", "ui.RmLampes.value", strAffiche)

As-tu une solution ?

Modifié par Talwayseb

Partager ce message


Lien à poster
Partager sur d’autres sites
HueLampes = jsonTable.lights

for _, v in ipairs(HueLampes) do
	HueLampeId = tonumber(v)
    ...
end

Voilà comment je ferais ma boucle pour être le plus optimal possible.

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Et ben voilà :-)  suffisait de demander ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

×