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

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

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

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

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

cd /root
bundle exec ruby sample.rb --config config.json --times -1 &
exit 0

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


実行し続けるプログラムを起動する場合、コマンドの最後に & をつけて、バックグラウンド実行することを忘れないでください。

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

クライアントサイドサンプルアプリケーションでは、Armadillo-IoTに内蔵されている温度センサの値を取得して、アップロードするよう実装されています。温度センサの値は、cat /sys/class/thermal/thermal_zone0で取得できるように、ドライバが実装されています(class bmic_thermalの実装参照)。この他、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.2. サーバーサイドサンプルアプリケーションのカスタマイズ

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

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



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