LUA Algemeen

LUA is een programmeertaal. Met behulp van de juiste opdrachten en wat logische functies kan je de resultaten bereiken die je wil. Meestal komt het binnen Fibaro LUA neer op bepaalde inputs uitlezen, deze vergelijken met een aantal waarden en op basis daarvan de juiste waarden in de outputs zetten.

Een paar basisbeginselen (van Fibaro LUA Scenes):

--[[
%% properties
%% events
%% globals
--]]

In een scene definieer je bovenaan wanneer deze scene (automatisch) getriggerd wordt. Door verandering van een property, een event dat gebeurt of een global variabele die verandert.

local variabele_naam=0 -- commentaar
local array_naam={
  {0,1,1},
  {1,2,2}
  }

tekst waardes worden steeds tussen "" geplaatst of tussen ''

local definieert een variabele of een array die je zelf kan gebruiken, en alles wat achter — komt te staan is commentaar. Voor arrays kan je #array_naam gebruiken om het aantal elementen te weten te komen

if ((a>b) or (c<=d) or (e==f)) then
 ...
elseif (g~=h) then
 ...
else
 ...
end

een belangrijke structuur is “if-then-else”. Hiermee kan je vergelijkingen maken en andere resultaten laten gebeuren afhankelijk van de waardes die je vergelijkt. (~= betekent verschilt van). Om er zeker van te zijn dat je cijfers vergelijkt kan je best de gewoonte aannemen van de generieke LUA functie tonumber te gebruiken.

tonumber(a)>tonumber(b)

== is gelijk aan
~= is verschillend
> groter dan
< kleiner dan
>= groter of gelijk aan
<= kleiner of gelijk aan

+ optellen
- aftrekken
* vermenigvuldigen
/ delen
% rest van de deling

and binaire en
or binaire of
not binaire inversie

.. om twee strings achter mekaar te plakken

Nog een belangrijke functie van LUA zelf is os.date, te gebruiken zoals in het voorbeeld hieronder

if ((tonumber(os.date("%w"))~=0) and (tonumber(os.date("%w"))~=6)) then
 ...  -- hetgeen hier staat wordt uitgevoerd behalve op zondag en zaterdag
end

Een andere hulpvolle structuur is de “for-lus”. Deze zorgt ervoor dat de tussenliggende code een aantal keer uitgevoerd wordt.

for i=1,10 do
  ...
end