Luaエディタ

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プログラムやブロックプログラムと異なり、読み書きにはログインが必要です。