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

  1. 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 NilanVars változóban. Például a célhőmérséklet a NilanVars["target_temp"] változóból olvasható ki.

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