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ó.

Változók betöltése vagy frissítése

Paraméterek nélkül hívva a QuickApp összes változóját betölti a QAVars nevű asszociatív tömbbe. Ezután például a célhőmérséklet a QAVars["target_temp"] változóból olvasható ki.

Egy adott változó értékének lekérdezése

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).

Egy adott változó értékének beállítása

Ha egy változó értékét módosítanád (ez csak írható változóknál működik), a name és a value paraméterben a változó nevét és új értékét is meg kell adnod, 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ó.