FlashAir の Lua 機能について知ったきっかけは桜井さんのブログです。
Windowsを使わないAzureの人: FlashAirとMicrosoftAzureを連携してやる(アップロード編)
何だかとっても面白そうなので、その日のうちに 32GB モデルを買ってみました。割と高いです。
TOSHIBA 無線LAN搭載 FlashAir SDHCカード 32GB Class10 日本製 (国内正規品) SD-WE032G
- 出版社/メーカー: 東芝
- 発売日: 2015/04/01
- メディア: Personal Computers
- この商品を含むブログを見る
とりあえず買ってから FlashAir について調べました。Wi-Fi が付いた SD カードだったのが、新しいバージョンから Lua が使えるようになったということです。
どのくらい Lua で処理が書けるのかは FlashAir Developers サイトに書いてありました。
FlashAirのLua機能では、下記のライブラリ関数が利用できます。
- Lua基本ライブラリ
- Version: 5.2.1
- サイト: http://www.lua.org/
- LuaFileSystem
- Version: 1.61
- サイト: http://keplerproject.github.io/luafilesystem/
- CJSON
- Version: 1.0.3
- サイト: http://www.kyne.com.au/~mark/software/lua-cjson.php
- FlashAir独自機能
- Lua関数リファレンス
独自機能としては HTTP / PIO / WLAN 周りという感じです。ファイル I/O と JSON が使える点からみても API を叩くために使ってくれと言わんばかりです。
しかし Lua 基本ライブラリに一部制約が付いているようです。
メモリ制約のため、標準ライブラリの以下の機能は使用できません。
- コルーチン操作
- OS機能
- 数学関数
- デバッグライブラリ
OS 機能周りの制約があるので、環境変数など取れないのが少し残念な感じがします。あと、数学関数に含まれている乱数が使えないっぽいのも痛いですね。
公式ドキュメントと突き合わせてみると、FlashAir で使える機能が大体見えてきました。
とまあ、凝ったことをしなければ問題無いぐらいには用意されているみたいです。
実際に ASP.NET Web API で作成したエンドポイントにファイルをアップロードする簡単な Lua スクリプトを書いて試したので、簡単に感想を書いておきます。
- デバッグが難しい
- FlashAir 独自関数は実機じゃないとテストできない
- 環境の情報が乏しい(利用可能メモリサイズや OS など)
- ハッシュ関数として MD5 だけではなく SHA-1 が欲しい
- メモリ制約あるらしいし、ネイティブ実装で
- LUA_SD_EVENT で実行された時にファイルパスが取れない
- どのファイルが書き込まれたのか不明
まだリリースされたところですし、今後のファームウェア更新で出来るようになれば良いですね。