JSON
JSON(JavaScript Object Notation)は、HTMLやXMLと同じ、データ記述言語の一つです。JSONは、JavaScriptプログラミング言語(ECMA-262標準第3版 1999年12月)の一部として標準化されました(公式サイト json.org)。JSONはXMLよりも軽量で、作成やパース(構文解析)が行いやすいため、JavaScriptに限らず、あらゆるプログラミング言語で容易にJSONを扱うことができ、近年普及してきています。
IoTサービスにおいても、データをJSONの記法で作成することにより、組み込み機器とサーバ側アプリケーションとのデータ連携が簡単になります。
後述するIoTFでも、mbedから送信するデータの形式をJSONで作成することを推奨しています。
以下に、メッセージ・ペイロード(ペイロードとは通信パケットのうちヘッダを除いたデータそのものを指します)の例を紹介します。記事上、読みやすくするためにインデントしていますが、実際には改行コードや余分な空白がない状態で送受信されます。
単純なデータ
{
"d": {"msg": "Hello World"}
}
"d"要素には、メッセージに入れて送信されるイベントまたはコマンドのすべてのデータを格納します。この要素はIoTFメッセージ仕様上、必須の要素です。特にデータを送信しない場合は次の「データなし」の例のように、空オブジェクトとして作成します。
データなし
{
"d": {}
}
アプリケーションボードで拡張したmbedが送信するメッセージ・ペイロードの例
以下の例から、アプリケーションボードに搭載されたセンサおよびジョイスティックの状態が"d"要素のデータとして格納されていることが分かります。このように、キーと値の組み合わせで表現します。
{
"d": {
"myName": "IoT mbed",
"accelX": 0,
"accelY": 0,
"accelZ": 1.0314,
"temp": 32.625,
"joystick": "CENTRE",
"potentiometer1": 0.883,
"potentiometer2": 0.0156
}
}
IoTF
IoTFは、IBM社が提供するSaaS(Software as a Service)型のクラウドです。IoTFを利用することによって、IoTサービスを提供しようとするユーザは、手間をかけることなく迅速に、モノ(インターネットに接続する組み込み機器)からどんなサービスを提供できるかを試すことができます。
当記事の後半は、無料で利用することが可能なIoTFのQuickstartというモードを用います。mbedおよびアプリケーションボードからQuickstartのMQTTブローカーにデータを送信し、送信されたデータを確認します。
今回紹介するQuickstartは、認証不要な範囲で試すことができる、IoTFの限定的な機能を利用するのみですが、IoTFは、MQTTブローカー機能のほかにもIoT用途に最適化された機能や構成を提供しています。以下、参考までにIoTFの特徴を記載します。
MQTTサーバの構築作業が不要となる
MQTTクライアントのデバイスIDを登録すれば、IoTFとMQTT通信ができるようになります。デバイスIDはMQTTの自分の組織内で固有の値である必要がありますが、MACアドレスを用いることで簡便に実現できます。
通常MQTTアプリケーションを利用するには、MQTTサーバを用意して、ホスト名やポート番号、デバイスIDのフォーマット、トピックの構造、メッセージ・ペイロードの構造、認証の仕組みなどを検討して構成する必要があります。これらの検討・構成を行わなくても、すでに準備された環境を利用することで、アプリケーション開発に専念することができます。また前述したMQTTのサービス品質のQoS0~2のすべてを使用することができます。IoTFは迅速にMQTTアプリケーションを利用できる反面、MQTTの全機能を使えないなどの制約があります。
データの収集と蓄積ができる
モノから送信されたデータを収集し、IoTF内部の時系列データベースに保管することができます。これにより、アプリケーションでデータの集計や分析を行い、データを視覚化することができます。
拡張性がある
IBM Bluemix(IBM社が提供するPaaS(Platform as a Service)型クラウド。連載第3回以降で詳述します)と組み合わせて使用すると、より高度なIoTサービスを構築することもできます。
デバイスをIoTFから管理することができる
IoTFに登録したモノを管理することができます。
興味を持たれた方は、IoTFのドキュメントを参考にしてください。
