IOの共有と占有

IOなどはobniz.jsからクラウド経由でも操作でき、Luaからも操作することができるため同じIOを利用する場合には競合が発生します。

通常はobniz.jsが優先なためLuaで利用していてもobniz.jsや接続状態によりリセットされることになります。

io.retain(io, boolean)

あるIOをLuaからの利用のみに制限し、obniz.jsからのアクセスを拒否するにはio.retain()関数を利用します。

以下の例ではIO0をLua専用にしています。

io.retain(0, true);

上記関数でLua専用とした場合にはそのIOは以下の挙動となります。

  • obniz.jsからの利用は全て不可となる
  • インターネット切断時でもリセットされない

通常Luaから利用する関数はio.retain()で確保するのが推奨です。

peripheralについて

io以外にもuartspiなども共有の機能となります。

これらはLuaから利用した段階で自動的にLua専用となります。

解放する方法は用意がなく再起動が必要となります。