Device-IDs als Array?

Hallo Zusammen,

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…

Danke im Voraus
VG Hoggle

Ja, das geht. Nur nicht so easy. Wenn du willst, programmiere ich dir ein codeschnipsel um es zu verdeutlichen

Grüße

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");

Sehr cool.
Danke schön!!!

Muss in Zeile 22 das “turnOn” als Variable verwendet werden oder geht das auch als
fibaro:call(variable[Count], “turnOn”)

Genial.
er akzeptiert auch das “turnOn”.
Herzlichen Dank für die schnelle Hilfe!

Guten Morgen,

@danielboe: Gibt es einen Grund, warum Du das Array nicht folgendermaßen nutzt:

for i = 1,#array do
	fibaro:call(array[i],"turnOff")
end

Scheint mir doch etwas smarter zu sein :wink:

Gruß
Neospin

Führen in der Programmierung öfters viele Wege nach Rom :wink:

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

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

Grüße

Danie