Aller au contenu

Messages recommandés

Posté(e)

Bonjour je cherche a placer un tableau dans une variable globale.

Avez vous une idée ?

 

J'ai créée une variable "mon_tableau" = 1,2,3,4,5,60

et je voudrais la récupérer dans le code LUA comme un tableau pour récupérer une valeur. 

Exemple:

 

local mon_tableau = fibaro:getGlobal('mon_tableau');
local devices = {mon_tableau};
fibaro:debug(devices[2]);
 
bien sur l'exemple me retourne une erreur de type
[ERROR] 21:42:20: line :debug (arg 2), expected 'string const &' got 'nil'
 
 
Merci pour votre aide.

 

  • Upvote 1
Posté(e)

Tu peux malheureusement stocké que des chaînes de caractères

Tu peux les stocker sous forme de chaîne avec un séparateur "," ou autre puis les "spliter" pour récupérer un tableau


function split(text, sep)
		local sep, fields = sep or ":", {}
		local pattern = string.format("([^%s]+)", sep)
		text:gsub(pattern, function(c) fields[#fields+1] = c end)
		return fields
end

local mon_tableau  = "1,2,3,4,5,60"
local devices = split(mon_tableau, ",")

fibaro:debug(devices[2])
  • Upvote 1
  • 2 semaines après...
Posté(e)

En fin de compte ... il y a plus simple :)

 

json est notre ami

local tableau = {1,2,3,4,5}
 
-- pour stocker
fibaro:setGlobal("mon_tableau", json.encode(tableau))
fibaro:sleep(2000)
 
-- pour récupérer
local mon_tableau = fibaro:getGlobal("mon_tableau");
local devices = json.decode(mon_tableau);
fibaro:debug(devices[4]);
  • Upvote 2
  • 1 an après...
×
×
  • Créer...