前回はIBM Internet of Things Foundation(IoTF)を利用してコードを書かずにIoTの世界を体験しましたが、今回と次回はアプリケーション開発にチャレンジしてみます。具体的には開発したPHPアプリケーションをDocker対応させて、IBM Bluemix上のDockerコンテナ(IBM Containers上)で稼働させてみます。
-
- Page 1
mbedにはHTTPClientのライブラリがあるため、HTTPプロトコルでPOSTリクエストをWebサーバーに対して送信するアプリケーションの開発が比較的容易にできます。POSTリクエストで送信されたセンサーの情報を受け付けるWebアプリケーションを、IBM Containers上にPHPで作成してみます。つまり、IoTのサーバーといっても、よくあるWebサーバーを構築すればよいのです。
今回のアプリケーションの概要
mbedのセンサーで測定した温度に簡単なテキストのメモを追加して、サーバーへPOSTリクエストのデータとして送信するアプリケーションを作成します。使用するデバイスは1台ですが、今後追加することを考慮しておきましょう。そのためにデバイスの識別のためのデバイスIDをそれぞれのmbedで持つようにします。
データ送信時にはデバイスIDを付与して送信してくるものとします。つまり、(1)mbedからの送信データはHTTPのPOSTリクエストで、デバイスID(deviceid)、温度(temperature)、メモ(memo)の3項目になります。
また、(2)送られてきたデータを時系列に管理したいので、サーバー側でデータをためる際には日時(datetime)を付与して記録します。
データベースのテーブルには、デバイスID(deviceid)、温度(temperature)、メモ(memo)に加えて日時(datetime)も持たせることにします。データベースはMySQLを使用して、varchar(8)、float、varchar(20)、timestampのデータ型で実装します。
(3)最後にデータベースに収集されたデータを表示するPHPアプリケーションも実装します。
データを受信するサーバーのPHPアプリケーションはwritedb.phpとし、受信したデータを表示するPHPアプリケーションをreaddb.phpとします。
Webサーバーは、最近利用者の増えている軽量Webサーバーであるnginxを使います。
以下に構成図を示します。
環境の準備
mbed用のアプリケーションは、前回までと同様にオンラインのIDEで開発します。サーバー側の開発環境のホストOSは、Linux(Ubuntu 14.04 LTS)を使うことにします。開発環境にはDockerおよびIBM Containers用Cloud Foundryプラグインを導入します。
サーバー側のアプリケーションとしては、開発環境でPHPアプリケーションと、それを実行するためのMySQL、nginx、PHP関連モジュールを導入したコンテナイメージを作成します。そして完成したコンテナイメージをIBM Containers用Cloud Foundryプラグインで、IBM Bluemix上のIBM Containersにデプロイするという流れになります。
なお、開発環境のホストOSで実行する場合のプロンプトを$、コンテナ上で実行する場合のプロンプトはContainer>とします。
この記事は参考になりましたか?
- この記事の著者
-
谷口 督(日本アイ・ビー・エム株式会社)(タニグチ ススム)
2000年問題対応の時期にIT業界に入り、それ以来UNIX系のインフラ構築を担当。最近の関心事は、そろそろ出てきそうな画期的なテクノロジー探しや世の中が良くなるためのもの作りです。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

