Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

IoTをかじってみよう(3)
~センサーのデータをWebサーバーに送付するmbedアプリケーションを作成する

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 前回はIBM Internet of Things Foundation(IoTF)を利用してコードを書かずにIoTの世界を体験しましたが、今回と次回はアプリケーション開発にチャレンジしてみます。具体的には開発したPHPアプリケーションをDocker対応させて、IBM Bluemix上のDockerコンテナ(IBM Containers上)で稼働させてみます。

目次

 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を使います。

 以下に構成図を示します。

図1 アプリケーション概要

図1 アプリケーション概要

環境の準備

 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>とします。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:IoTをかじってみよう

おすすめ記事

All contents copyright © 2006-2016 Shoeisha Co., Ltd. All rights reserved. ver.1.5