Használat jelenetekben
Minden érték, amely a QuickAppban megjelenik vagy módosítható, 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 saját azonosítóját (ID) is közzéteszi egy globális változóban. Ennek a globális változónak a nevét az app_name nevű QuickApp-változóban adhatod meg, pl.:

A fenti példában a QuickApp001 nevű globális változó annak a QuickAppnak az azonosítóját tartalmazza, amely az eszközöd értékeit szolgáltatja.
Példa
A példajelenet megvalósítja és bemutatja a fenti funkciókat. 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. Alább a Lua-kód néhány részének magyarázata következik.
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 függvény hívása előtt ne felejtsd el beállítani az app_name változót a 22. sorban!
local app_name = "QuickApp001" -- !!!!!!!!!!! modify this according to your app_name
A QuickApp értékeit az access_var(name, value) függvénnyel olvashatod és írhatod.
local function access_var(name, value)
local QAID = tonumber(hub.getGlobalVariable(app_name))
if not QAID then
print("Error: Rolcsi's QuickApp not found.")
return
end
if (QAVars == nil) or (name == nil) then
local dev = api.get("/devices/"..QAID)
for _,v in ipairs(dev.properties.quickAppVariables) do
if v.name == "values" then QAVars = json.decode(v.value) end
end
end
if name ~= nil then
local old_value = QAVars[name]
if (value ~= nil) and (value ~= old_value) then
hub.call(QAID, "set_value", name, value)
QAVars[name] = value
end
return old_value
end
end
A függvény háromféleképpen használható:
- Paraméterek nélkül hívva a QuickApp összes változóját betölti a
QAVarsnevű asszociatív tömbbe. Ezután például a célhőmérséklet aQAVars["target_temp"]változóból olvasható ki. - Ha csak a name paramétert adod meg, egy adott változó értékét kapod vissza (ehhez az előre betöltött
QAVars-t használja, és csak akkor tölti be, ha még nem történt meg). - Ha egy változó értékét módosítanád (ez csak írható változóknál működik), a name paraméterben a változó nevét, a value paraméterben az új értékét kell megadnod, pl.
old_value = access_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ó.