October 03, 2014

Hack FlashAir

今日は、少し前からいろいろ遊んでいるFlashAirについて書きます。

FlashAir

簡単にFlashAirを説明すると。

FlashAirは、外見や規格は普通のSDカードに SDカードの通常の機能に加えてWifi機能を搭載しており、 この機能を使うことでネットワーク経由で様々な情報の入出力を行えます。

使い方によってはいろいろなことに使える、まさに十徳ナイフのSDカード版です。

FlashAir™

そして、なんと!

日本の電機メーカの製品でありながらAPIとAPIドキュメントが提供されています!

(東芝++)

とてもいじりがいのありそうな製品ですね。

FlashAir Developers - ホーム

FlashAirのAPIについて

FlashAirのAPIは、SDカード上で小さいWebサーバが動いており、基本的には単純なHTTPによって提供されます。

詳しくは FlashAir Developersのドキュメント をご参照ください。

加えてより上級者向けの機能としてSDIOをHTTP経由で取得する事ができます。

つまり、SDカードのインターフェィスで行われるデジタル信号レベルの入出力からファイルレベルのI/OまでのすべてをSDカード一枚だけで取得可能です。 小型の無線通信機器を自前で開発することは、ArudinoやXbeeの普及で昔に比べて容易になりましたが、 既存の機器と連携するには機器側にインターフェィスが必要であることやそのドライバーの開発を行う必要があるため容易ではありません。

さて、SDカードのようにさまざまな機器で利用されているデファクトスタンダードな規格の上で、I/Oを自由にハンドリングすることができるとどうなるのでしょうか?

記憶素子というのはコンピュータの基本的なコンポーネントの一つであり、 コンピュータシステムとは大雑把な言い方をすれば状態遷移モデルをプログラムによって記述したものです。 プログラムは種々の状態をメモリや記憶素子に記録して状態遷移を行うことで1つのシステムとして稼働しています。 これらのことから、SDカードのI/Oをハンドリングすることは、 コンピュータシステムで発生する状態遷移を外部から取り扱うことを可能にしていると言えます。

私達の身の回りにあふれているデジタル信号で駆動する様々な組み込み機器も一種のコンピュータシステムであり、 それらがSDカードのインターフェィスを備えている場合には、これらの状態遷移をハンドルすることで 私達プログラマーは自由に操作可能なプログラマブルなインターフェィスを手に入れたといえるでしょう。

1枚のSDカードによって私達には無限の可能性と果てしなく広がる荒野がもたらされたと言えます。 使い方次第で身の回りの機器を操作することができるSDカードとの出会いは、私のHackingライフを少し豊かにしてくれました。

これぞまさしくIoTですね。

ここまでで、FlashAirとそのAPIがいかに素晴らしい製品なのかというお話は分かっていただけたと思います。 製品としてはデジカメとスマートフォンのデバイス間での写真共有に特化したEyeFiのような製品の完成度の前では いまいちピンとこない方も多いと思います。

自由に状態遷移を取得することができれば、実際に何が実現可能なのか? この問の答えはHacker達の手に委ねられているのです。

リアルタイム入退室ログ 今北ちゃん

さて、私はHackingをたしなむものの端くれといてFlashAirを用いて入退室管理機器との連携を行ってみました。 名前を付ける必要に迫られたためこのシステムの名前を「今北ちゃん」と名づけました。

今北ちゃんは、FlashAirと竹中エンジニアリング社から発売されている入退室コントローラを連携させリアルタイムに入退室ログを記録通知するアプリケーションです。

システム構成図は以下の様な感じです。FlashAirからのデータ取得や入退室コントローラの状態を小型PCのLIVAでWifiのネットワークを介して取得します。

システム構成図

小型PCのLIVAでは、今回はRubyスクリプトで入退室コントローラの状態を取得しました。 単なるHTTPクライアントなのでIntel galileoなどの簡単にプログラムを実行できる環境を利用するとよいでしょう。 私達はすでに室内の他のメトリクスを取得するためにすでにLIVAを使っていたためLIVAを利用しました。

FlashAir Make アイデアコンテスト

今北ちゃんを開発/運用していると、8月頃に「FlashAir Make アイデアコンテスト」が 開催されるというお知らせを発見したのでさっそく応募してみました。

FlashAir Developers - FlashAir Make アイデアコンテスト

なんと、最優秀賞を頂きました! (ゝω・)テヘペロ

Special thanks

@hmsk、会社の同僚としていつもお世話になっております。今北ちゃんの調整や日常のお世話をしていただきありがとうございます。 また、プレゼン資料用の撮影も行っていただきありがとうございました。

@ankorobe、お茶の水女子大学 椎尾研究室で稼働している電子錠連動Botの「旧imakita_kun」についてご教授いただきありがとうございました。 最終的な実装のイメージをインスパイアさせてもらったことに敬意を表しまして「imakita」シリーズの名前を冠したプロダクトとして「今北ちゃん」と命名させていただきました。

FlashAirの開発チームの皆様、Hacker冥利につきる素晴らしい製品を世の中に送り出していただきありがとうございました。 SDカードI/OのIoT化ができる製品をユーザとして活用することができ大変エキサイティングな経験が出来ました。

そして最後に素晴らしい賞を下さったアイデアコンテストの運営者/審査員の皆様ありがとうございました。

私は、WebPayというクレジットカード決済のAPIを提供するサービスに携わっています。 WebPayのAPIでも、デベロッパーに新しい可能性や高い生産性を提供できるように、 これからも頑張りたいなと思ったところでこの記事を締めくくらせていただきます。

WebPay: 開発者向けクレジットカード決済サービス