第5章 サンプルアプリケーションのカスタマイズ

前章では、サンプルアプリケーションの動作や使用方法について説明しました。サンプルアプリケーションの動作を確認し、あるいは改造してみることでArmadillo-IoTの開発手順を把握でき、オリジナルのシステムを開発する際に効率的に行えるようになるでしょう。本章では、サンプルアプリケーションのカスタマイズに関して、有用なドキュメントなどを紹介します。

5.1. クライアントサイドアプリケーションのカスタマイズ

5.1.1. 起動時に自動実行する

/etc/config/rc.localに起動時に実行したいコマンドを記述することで、プログラムを自動実行できます。クライアントサイドサンプルアプリケーションを自動実行し、データを送信し続けるには、sample.rbとconfig.jsonを/etc/config/ディレクトリにコピーし、/etc/config/rc.localの最後に下記のようにコマンドを追記してください。

ntpclient -h ntp.nict.jp -s
cd /etc/config
ruby sample.rb --config config.json --times -1 &

図5.1 起動時に自動実行する


実行し続けるプログラムを起動する場合、コマンドの最後に & をつけて、バックグラウンド実行することを忘れないでください。また、設定を保存するために、再起動前にflatfsd -sコマンドを実行する必要があります。

5.1.2. 他のセンサからのデータを扱う

クライアントサイドサンプルアプリケーションでは、Armadillo-IoTに内蔵されている温度センサの値を取得して、アップロードするよう実装されています。温度センサの値は、sysfsという疑似(Pseudo)ファイルシステムを読み出すことで取得できるように、ドライバが実装されています(class LM75の実装参照)。この他、GPIOやLEDの操作もsysfsを経由して行うことができますので、Rubyスクリプトからも容易に扱えるようになっています。

EnOcean、Wi-SUNなどは、全てシリアルポート[14]を通じて通信することができます。Rubyでは、serialport gemを使うことで、シリアルポートを扱うことができるようになります。serialport gemはArmadillo-IoTの出荷時イメージに含まれています。

5.1.3. 他の言語で実装する

Armadillo-IoTの出荷用イメージには、Rubyの他に、Java RuntimeやLuaが含まれています。クライアントサイドサンプルアプリケーションと同等の機能を持つプログラムを、これらの言語を使って実装することもできるでしょう。

データのアップロードは、単純なREST API(HTTP POST)になっていますので、比較的簡単に実装できると思われます。しかし、Push通知を受け取るには、Pusherのライブラリが必要となります。Java用Pusherクライアントにはいくつかの実装があります。http://pusher.com/docs/client_libraries#android-java を参照してください。

5.1.4. ROM化する

/etc/configディレクトリは大きな容量がありませんので、設定ファイルや小さなプログラム程度しか保存することはできません。多くのライブラリを追加したい場合や、製品化時の出荷イメージを作る場合には、ROMイメージを作成する必要があります。

ROMイメージの作成には、Atmark DistというArmadillo専用のディストリビューションを使います。Atmark Distを使うと、必要最小限のプログラムや設定ファイルだけを含んだ、オリジナルのROMイメージを作ることができます。詳細は、製品マニュアルを参照してください。

5.2. サーバーサイドサンプルアプリケーションのカスタマイズ

サーバーサイドサンプルアプリケーションのソースコードは、アットマークテクノ公式GitHubで公開しています。

また、Herokuアカウントを持っている方であれば、「Herokuボタン」を使って簡単に自分用のコピーを作成し、Heroku上で実行できます。情報が公開されてしまうことに抵抗がある方や、サーバーサイドサンプルを改造したい方は活用してください。具体的な方法は、ArmadilloサイトのHowtoに掲載しています。



[14] Linuxではttyデバイスとして扱います。