obnizOS 7以降を搭載したデバイスは、本体上でLuaスクリプトを実行できます。
obnizCloudのLuaエディタを使うと、ブラウザ上でLuaを編集し、デバイスへの転送・実行までを1つの画面で行えます。
エディタを開く
開発者コンソールの左メニューから「Lua エディタ」を開きます。利用にはログインが必要です。
エディタを開くと、アカウントに登録済みのobnizデバイスへ自動的に接続されます。上部のセレクタでデバイスを切り替えると、そのデバイスへ再接続されます。

動作要件
- デバイスのobnizOSがバージョン7以上であること
- バージョン7未満のデバイスに接続した場合、Lua欄は編集できません。画面上部に表示されるバナーから、その場でobnizOSをアップデート(OTA)できます(デバイスの所有者のみ)
Luaの編集と実行
画面メインのLuaエディタで編集し、以下のボタンで実行します。
| ボタン | 動作 |
|---|---|
| 即時実行 | 編集中のLuaを保存せずデバイスで即実行します。再起動すると消えます |
| 保存と実行 | デバイスのフラッシュメモリに保存して実行します。再起動後も自動で実行されます |
| クラウドへ保存 [Ctrl]+[S] | obnizIDごとのクラウド保存領域に保存します。次回エディタを開いたときに復元されます |
「即時実行」したときは、編集中のLuaが自動的にクラウドにも保存されます。
エディタ下部の lua> 入力欄では、1行のLuaをその場で実行できます。実行中のスクリプトのグローバル変数を書き換えるなど、デバッグに利用できます。
なお、フラッシュメモリへの保存(保存と実行)は、ストレージを搭載していない機種では利用できません。その場合はボタンが「この機種は保存非対応」と表示されます。
インラインJavaScript実行
Luaエディタの下のJavaScript欄では、ブラウザ上でJavaScriptを書いてその場で実行できます。実行中のコードからは以下の変数が利用できます。
obniz: 接続中のObnizインスタンスObniz: obniz.jsのクラスview: 画面右下のViewエリアのHTMLElement。DOMを描画できます
awaitが利用でき、コードの実行が完了すると終了します(登録したイベントハンドラはその後も動作します)。
「JS実行」を押すと、JavaScriptもobnizIDごとのクラウド保存領域に自動保存され、次回エディタを開いたときに復元されます。
LuaとJavaScriptの連携
Lua側のcloud.pluginSend()で送信したデータは、JavaScript側でobniz.plugin.onreceiveにより受け取れます。
逆に、JavaScript側からobniz.plugin.execLua()で任意のLuaをデバイス上で実行できます。
初期状態のサンプルコードは、この連携の実例になっています。
- Lua: 3秒ごとにio1の電圧を計測し、ディスプレイ表示・
cloud.pluginSend()でのJS送信・外部サーバーへのHTTP POSTを行う - JavaScript: 受信した電圧をViewエリアにグラフ描画し、入力欄とボタンで
obniz.plugin.execLua("INTERVAL_MS=...")により送信間隔を変更する
ログ
画面下部のログエリアには以下が表示されます。
- 接続状態の変化
- Lua側の
cloud.pluginSend()からの受信データ(plugin <-) - デバイス側でのLua実行エラー(
obniz.plugin.onError) - インラインJavaScriptの
console.log出力
保存領域について
LuaとJavaScriptはそれぞれobnizIDごとのクラウド領域に保存されます。HTMLプログラムやブロックプログラムと異なり、読み書きにはログインが必要です。