Ceci est une ancienne révision du document !


LUA / Divers

Snippets de code LUA

-- Obtenir l'ID d'une scène : fibaro:getSelfId() dans un VD
local scene_id = __fibaroSceneId
 
-- Derrière un bouton d'un VD pour connaitre l'ID du bouton
local button_id = _elementID_
 
-- encode un chaine pour l'envoi via http
local url_encoded = urlencode("coucou comment ça va")
 
-- démarrer une scène avec arguments
fibaro:startScene(23, {{id = 71}, {mode = "switch"}})
 
-- changer l'icone d'une scène
local currentIcon = api.get("/scenes/" .. __fibaroSceneId).iconID
api.put("/scenes/" .. __fibaroSceneId, {["iconID"]=currentIcon})
 
-- arrondi le num avec n décimal --
function round(num, n)
  local mult = 10^(n or 0)
  return math.floor(num * mult + 0.5) / mult
end
 
-- connaitre la consommation instantanée de plusieurs modules (cumulés)
local ids = "36,39"
-- local ids = table.concat(fibaro:getDevicesId({interface="power"}),",")
local result = api.get("/energy/now/now/summary-graph/devices/power/"..ids)[1][2]
 
-- trouver un device selon son nom
local device = api.get("/devices?name=<NOM>")
 
-- faire un sleep avec un max de répétition
-- la function func() doit retourné true suivis de la valeur
-- exemple function() return true, "coucou" end
-- usage : waitWithTimeout(function() return true, "coucou" end, 500, 5)
function waitWithTimeout(func, sleep, max)
  local ok, result = func()
  while (not ok and max > 0) do
    fibaro:sleep(sleep)
    max = max - sleep
    ok, result = func()
  end
  return result
end
 
-- réveillé tous les modules "dead"
local devices = api.get("/devices?property=[dead,true]&enabled=true")
for k, v in pairs(devices) do 
   fibaro:call(1, "wakeUpAllDevices", v.id) 
end