lässt sich in LUA eine lokale Variable nutzen/anlegen, in der ich die IDs gleicher Module ablegen kann, damit ich diese in dem Script nicht erneut mit Einzel-Calls anlegen muss?
a la:
local switches = {84, 177, 181, 222} -- ID der Switches
fibaro:call(switches, "turnOn");
So bekomme ich leider folgenden Fehler:
[ERROR] 20:30:20: Runtime error: /opt/fibaro/FibaroSceneAPI.lua:252: attempt to concatenate local ‘deviceID’ (a nil value)
Was fehlt da etwas oder geht das grundsätzlich nicht?
Hier im Forum habe ich gerade kein Beispiel gefunden (wie immer, wenn man etwas sucht), dachte aber, hier so etwas schon gesehen zu haben…
Okay, ich habe es noch mehr oder weniger fertig da:
Die größe des Arrays wird erfasst und die einzelnen “plätze” werden nacheinander abgearbeitet:
--[[
%% properties
%% globals
--]]
--------------------------------------------------------------------------
local variable = {333, 444, 555, 666}; -- Die IDs
local wert = "turnOn" --auf welchen wert alle variablen gesetzt werden
---------------------------------------------------------------------------
if fibaro:countScenes() > 1 then
fibaro:debug("stop scene");
fibaro:abort();
end
fibaro:debug("ende");
local Count = 0
for Index, Value in pairs( variable ) do
Count = Count + 1
fibaro:debug("Aktuelle Dev ID: "..variable[Count])
-- Ein beispiel um alle 4 dev ids einzuschalten
--fibaro:call(variable[Count], wert)
end
fibaro:debug("ende");
Wenn der unterschiedliche Weg nach Rom der Grund ist, dann habe ich nichts gesagt.
Wollte nur wissen, ob es nicht ggf. einen besseren Weg als meinen gibt
Hey Neospin,
wenn “#array” die größe des arrays zurück gibt, ist deine Variante natürlich wesentlich eleganter. Würde ich dann persönlich auch meinem snippet vorziehen