Használat jelenetekben
Minden érték, amely a QuickAppokban kezelhető, kívülről, például egy jelenetből is elérhető. Az értékek a QuickApp values változójában közzétett és rendszeresen frissített JSON-objektumból olvashatók ki, írni pedig a QuickApp set_value() függvényének megfelelő paraméterekkel történő hívásával lehet őket. A QuickApp a telepítés után a saját azonosítóját (ID) is közzéteszi a NilanQAID globális változóban, hogy a változói könnyebben elérhetők legyenek.
Példa
A fenti funkciókat megvalósító és bemutató példajelenet innen tölthető le. Nyugodtan használd: minden jogot megadok a kód átalakítására, ingyenes felhasználására vagy továbbértékesítésére.
Objektumok kiírása
Ez egy segédfüggvény, amely bármilyen Lua-változót ember által olvasható formában ír ki.
-- Helper function to dump any type of variable
function dump(o)
if type(o) == 'table' then
local s = ''
local sep = ''
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. sep .. k ..': ' .. dump(v)
sep = ", "
end
return '{ ' .. s .. ' }'
elseif type(o) ~= 'number' then
return '"'..tostring(o)..'"'
else
return tostring(o)
end
end
QuickApp-változók olvasása és írása
A QuickApp értékeit a nilan_var(name, value) függvénnyel olvashatod és írhatod.
function nilan_var(name, value)
local NilanQAID = tonumber(hub.getGlobalVariable("NilanQAID"))
if not NilanQAID then
print("Error: Nilan QuickApp not found.")
return
end
if (NilanVars == nil) or (name == nil) then
local NilanDev = api.get("/devices/"..NilanQAID)
for _,v in ipairs(NilanDev.properties.quickAppVariables) do
if v.name == "values" then NilanVars = json.decode(v.value) end
end
end
if name ~= nil then
local old_value = NilanVars[name]
if (value ~= nil) and (value ~= old_value) then
hub.call(NilanQAID, "set_value", name, value)
NilanVars[name] = value
end
return old_value
end
end
A függvény kétféleképpen használható:
Paraméterek nélkül hívva a lefutása után az összes változó értéke asszociatív tömbként elérhető a
NilanVarsváltozóban. Például a célhőmérséklet aNilanVars["target_temp"]változóból olvasható ki.Ha egy változó értékét módosítanád (ez csak írható paramétereknél működik), paraméterként a változó nevét és új értékét kell megadnod, pl.
old_value = nilan_var("target_temp", 23.3). A függvény ilyenkor a változó korábbi értékét adja vissza (old_value).
Az elérhető változók referencialistája itt található.