2 つの環境で動作する必要があるコマンド ハンドラーに取り組んでいます。以下は、私が取り組んでいる機能のごく一部であり、問題を捉えていると思います。少なくとも、対処する必要があるエラー メッセージが表示されます。
ライブ環境である Fibaro Home center 2 では、表に示されているコマンド セットを を使用して 1 つずつ実行する必要がありfibaro:call
ます。これは、呼び出しに応じて 2 ~ 3 個の引数を取ります。
開発中は、代わりにprint
関数を使用して、発行されるべきコマンドを出力するだけです。
function movementHandler(movementSendorId,onTable)
local offTable = offTable or {};
local onTable = onTable or {};
if (fibaro or {}).call then
function callFunc(...) ;
return fibaro:call(...);
end;
else
function callFunc(...)
print(unpack(arg));
end;
end;
if onTable ~= {} then
for i,command in pairs(onTable) do
callFunc(unpack(command));
end;
end;
end;
ただし、Luaコマンドシェルでこれを試すと
> c= {}
> c[1] = {1,"turnOn"}
> c[2] = {1,"setValue",10}
> movementHandler(10,c,c)
、私はこの出力を得ます:
stdin:10: bad argument #1 to 'unpack' (table expected, got nil)
stack traceback:
[C]: in function 'unpack'
stdin:10: in function 'callFunc'
stdin:15: in function 'movementHandler'
stdin:1: in main chunk
[C]: in ?
どのようにunpack
機能するかについて私が理解していないことは何ですか?