しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

新しい FlashAir では Lua が使えると聞いたので買ってみた

FlashAir の Lua 機能について知ったきっかけは桜井さんのブログです。

Windowsを使わないAzureの人: FlashAirとMicrosoftAzureを連携してやる(アップロード編)

何だかとっても面白そうなので、その日のうちに 32GB モデルを買ってみました。割と高いです。

とりあえず買ってから FlashAir について調べました。Wi-Fi が付いた SD カードだったのが、新しいバージョンから Lua が使えるようになったということです。

どのくらい Lua で処理が書けるのかは FlashAir Developers サイトに書いてありました。

FlashAirのLua機能では、下記のライブラリ関数が利用できます。

独自機能としては HTTP / PIO / WLAN 周りという感じです。ファイル I/O と JSON が使える点からみても API を叩くために使ってくれと言わんばかりです。

しかし Lua 基本ライブラリに一部制約が付いているようです。

メモリ制約のため、標準ライブラリの以下の機能は使用できません。

  • コルーチン操作
  • OS機能
  • 数学関数
  • デバッグライブラリ

OS 機能周りの制約があるので、環境変数など取れないのが少し残念な感じがします。あと、数学関数に含まれている乱数が使えないっぽいのも痛いですね。

公式ドキュメントと突き合わせてみると、FlashAir で使える機能が大体見えてきました。

Lua 5.2 Reference Manual

とまあ、凝ったことをしなければ問題無いぐらいには用意されているみたいです。

実際に ASP.NET Web API で作成したエンドポイントにファイルをアップロードする簡単な Lua スクリプトを書いて試したので、簡単に感想を書いておきます。

  • デバッグが難しい
    • FlashAir 独自関数は実機じゃないとテストできない
  • 環境の情報が乏しい(利用可能メモリサイズや OS など)
  • ハッシュ関数として MD5 だけではなく SHA-1 が欲しい
    • メモリ制約あるらしいし、ネイティブ実装で
  • LUA_SD_EVENT で実行された時にファイルパスが取れない
    • どのファイルが書き込まれたのか不明

まだリリースされたところですし、今後のファームウェア更新で出来るようになれば良いですね。