FlashAirでLuaを実行する

このチュートリアルでは、 基本的なスクリプトの実行方法をみていきます。 Luaスクリプトの実行方法には下記の3種類があります。

  1. FlashAir起動時に実行する
  2. FlashAirへのファイル書き込み時に実行する
  3. FlashAirへのHTTPアクセス時に実行する

それではさっそく”Hello World”プログラムを実行してみましょう。まずは簡単なluaスクリプトを作成しておきます。

/HelloWorld.lua
    print("Hello World!")
    local file = io.open("Hello.txt", "a")
    file:write("Hello There!\n")
    file:close()

このスクリプトは、 Hello World! と出力し、 Hello.txtファイルに、 Hello There! という文字列を追加します。


FlashAir起動時に実行する

  1. 作成したLuaスクリプトをFlashAirのルートフォルダに保存します。
  2. /SD_WLAN/CONFIGファイルに、LUA_RUN_SCRIPTパラメータを追加します。スクリプトのファイルパスを指定します。引数には、スクリプトのファイルパスを絶対パスで指定します。
     LUA_RUN_SCRIPT=/HelloWorld.lua
    
  3. FlashAirをSDメモリカードスロットから一旦取り出し、再度挿入します。
  4. 以降、起動5秒後に指定したLuaスクリプトが実行されます。
  5. FlashAirをSDメモリカードスロットから一旦取り出し、再度挿入後、Hello.txtファイルを開きます。
  6. Hello.txtファイルに、 Hello There! という文字列が表示されます。 FlashAir起動時に実行する

FlashAirへのファイル書き込み時に実行する

  1. 作成したLuaスクリプトをFlashAirのルートフォルダに保存します。
  2. /SD_WLAN/CONFIGファイルに、LUA_SD_EVENTパラメータを追加します。スクリプトのファイルパスを指定します。引数には、スクリプトのファイルパスを絶対パスで指定します。
     LUA_SD_EVENT=/HelloWorld.lua
    
  3. FlashAirをSDメモリカードスロットから一旦取り出し、再度挿入します。
  4. 以降、SDメモリカードの書き込みが発生した場合に指定したLuaスクリプトが実行されます。ファイルをFlashAirにコピーしたり、FlashAirに保存されたファイルを編集してみましょう。
  5. FlashAirをSDメモリカードスロットから一旦取り出し、再度挿入後、Hello.txtファイルを開きます。
  6. Hello.txtファイルに、 Hello There! という文字列が表示されます。すでに実行済みの場合は、文字列が追加されます。 FlashAirへのファイル書き込み時に実行する

LUA_RUN_SCRIPTとLUA_SD_EVENTを併用する

LUA_RUN_SCRIPTLUA_SD_EVENTを併用することができます。LUA_RUN_SCRIPTの動作が終了するまでLUA_SD_EVENTは無視されます。LUA_RUN_SCRIPTが実行終了した後LUA_SD_EVENTが実行可能になります。
LUA_RUN_SCRIPTはFlashAirへの電源投入の5秒後に実行されます。LUA_SD_EVENTはデータの書き込み終了後500ms後に実行されます。

LUA_RUN_SCRIPTとLUA_SD_EVENTを併用する


FlashAirへのHTTPアクセス時に実行する

  1. HTTPリクエストに対する応答を標準出力に書き込むLuaスクリプトを作成します。出力にはHTTPレスポンスヘッダも含む必要があります。
  2. 作成したLuaスクリプトをFlashAirのルートフォルダに保存します。
  3. FlashAirに無線LANで接続したPCのブラウザなどのクライアントプログラムから、スクリプトのファイルパスを指定します。
      http://flashair/HelloWorld.lua 
    
  4. スクリプトの標準出力がブラウザの画面に表示されます。 FlashAirへのHTTPアクセス時に実行する
  5. Hello.txtファイルに、 Hello There! という文字列が表示されます。すでに実行済みの場合は、文字列が追加されます。 FlashAirへのHTTPアクセス時に実行する

サンプルコード

リポジトリを見る(GitHub)

このサイトのサンプルコードは二条項BSDライセンスで提供されています。