この章では Armadillo-IoT G3L を使ったアプリケーションソフトウェアの
開発方法について説明します。
Armadillo-IoT G3L を使ったアプリケーションソフトウェア開発には、
Ruby等の軽量スクリプト言語を使うことができます。
新たにパケット通信、各種アドオンボードを利用したセンサーからのデータ読み出し
を実装したアプリケーションプログラムを実装するときは、Ruby等の軽量スクリプト言語を
使った開発をお勧めします。
Armadillo-IoT G3L の出荷用のユーザーランドには、最初からRubyインタプリタ
がインストールされているので、PCと同じように開発を進めることができます。
もちろん、Rubyに限らず、Debian の提供する豊富なパッケージ群から Python や Go、
Haskel といったスクリプト言語を自由にインストールして使うことも可能です。
12.1. 軽量スクリプト言語によるセンサーデータの送信例(Ruby)
ここでは、サンプルとしてArmadillo-IoT G3L に搭載された温度センサーの値を
定期的に HTTP POST でパラメータ名 "temp" に格納した値として送信する例を示します。
温度センサーからの値の取得は sysfs から可能です。
ここで作成するアプリケーションはArmadillo-IoT G3L で動作するクライアントと
ATDEで動作するテスト用のサーバーの2つです。
ATDEで動作させるためのテスト用のサーバーは、典型的なHTTPプロトコルで
アクセスできるWeb APIを持ったサービスを模擬しています。テスト用サーバーは
単に入力されたPOST リクエストの内容を変数に格納してコンソールに出力し、
クライアントには"Thanks!"という文字列を返します。
最初に ATDE6 にテスト用サーバーの動作に必要なパッケージをインストールします。
次にエディタで次のコードを入力して、server.rb として保存してください。
Armadillo-IoT G3L でクライアントアプリケーションを動かす前に、テスト用サーバーの動作確認を行います。
動作確認は Armadillo-IoT G3L から cURL コマンドを使って、クライアントアプリケーションと同等の
リクエストを送ってみます。
まず、ATDE6 の IPアドレス を確認しておきます。下記の例では、ip または ifconfig コマンドで確認するとATDE6 のIPアドレス が 172.16.2.117 であることがわかります。
次の例のように server.rb を実行すると、全てのIPアドレスからのリクエストを
8081番ポートでWebサーバーとして待ち受けます。
[PC ~]$
ruby server.rb -p 8081 -o 0.0.0.0
[2016-03-28 16:02:15] INFO WEBrick 1.3.1
[2016-03-28 16:02:15] INFO ruby 2.1.5 (2014-11-13) [i386-linux-gnu]
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from WEBrick
[2016-03-28 16:02:15] INFO WEBrick::HTTPServer#start: pid=10849 port=8081
ここで、Armadillo-IoT G3L から cURL を使ってテストデータを送ってみましょう。正しく通信できた場合は、"Thanks!" の文字列が表示されます。もし、"Connection refused" 等が表示された場合は、一旦 ATDE6 のIPアドレスに ping を送信してネットワークの設定に問題が無いか確認してください。
正しく受信できた場合は、ATDE6で起動しているテスト用サーバーが起動しているコンソールに下記の文字列が出力されます。
Armadillo-IoT G3L で動作するクライアントを実装します。下記のコードをエディタで入力して、client.rb として保存してください。ファイルは、ATDE6 上で作成しても Armadillo-IoT G3L 上で、vi等を使って作成しても構いません。ATDE6 で作成した場合は次の手順で、Armadillo-IoT G3L へ転送します。
12.3. Armadillo-IoT G3Lへのファイルの転送
ATDE6 上で作成したソースコードを Armadillo-IoT G3L に配置する方法の一例として、
ここでは、SSH を使った転送方法を説明します。
作成した温度送信クライアントを実行します。第一引数にはテスト用サーバーが動いているATDE6のIPアドレスとポートをHTTPスキーマのURIで記述してください。
正しくクライアントとの通信ができた場合、ATDE6で動作しているサーバーのコンソールには小数点以下2ケタの温度が表示されます。
C/C++等の資産がある場合は、Armadillo上でgcc/g++を使ってアプリケーションを
コンパイルする事もできます。
アプリケーションをコンパイルするために、Armadilloにgcc等を含むツールチェーンを
インストールします。
Armadilloのコンソールで次のコマンドを実行してください。
これで、gcc, make, gdb等が使えるようになりました。
次に、アプリケーションのビルドに必要なライブラリとヘッダーファイルを
インストールします。例えば libssl であれば次のコマンドでインストールする
ことができます。
例に示すように、コンパイルに必要なヘッダーファイルを含むパッケージは、
普通 -dev という名前が付いています。