このトピックでは、IoT Platformのトピックベースのメッセージルーティングサービスを使用してM2M通信アーキテクチャを構築する方法について説明します。 このトピックでは、スマートランプとモバイルアプリ間の接続を例として使用します。
背景情報
次の図は、モバイルアプリを使用してスマートランプを制御する方法を示しています。

手順
IoT Platformコンソールで、管理するインスタンスの詳細ページに移動します。 スマートランプの製品とデバイスを作成し、製品の機能を定義します。 詳細については、「プロダクトの作成」、「一度に複数のデバイスを作成する」、および「TSL機能の追加」をご参照ください。
この例では、SmartLampという名前の製品が作成されています。 [ノードタイプ] パラメーターは [直接接続デバイス] に設定され、デフォルト値は他のパラメーターに使用されます。
DeviceNameがlightのデバイスが作成されました。
この例では、SmartLamp製品のProductKeyはal123456789です。
ビジネス要件に基づいて、Thing Specification Language (TSL) 機能を追加できます。 たとえば、Switchという名前のTSLプロパティを追加し、データ型をBooleanに設定して、スマートランプのスイッチを管理できます。 値0はオフを示し、値1はオンを示す。
スマートランプにサブスクライブ権限があるカスタムトピックを追加します。 スマートランプは、トピックを使用して、モバイルアプリによって送信されたコマンドを受信できます。
この例では、
/al123456789/light/user/setトピックが追加されています。 詳細については、「通信にカスタムトピックを使用する」をご参照ください。Link SDKを使用してスマートランプをIoT Platformに接続します。 このようにして、スマートランプはモバイルアプリによって送信されたコマンドを受信して実行できます。
この例では、MQTTはスマートランプとIoT Platform間の通信プロトコルとして使用されます。 コマンドを受信するには、スマートランプが
/al123456789/light/user/setトピックをサブスクライブする必要があります。 スマートランプがコマンドを受信したら、コマンドを実行する関数を開発します。リンクSDKの設定方法については、「リンクSDK」をご参照ください。
IoT Platformコンソールで、モバイルアプリの製品とデバイスを管理および作成するインスタンスの詳細ページに移動します。 詳細については、「プロダクトの作成」および「デバイスの作成」をご参照ください。
この例では、MobileAppという名前のプロダクトが作成されます。 [ノードタイプ] パラメーターは [直接接続デバイス] に設定され、デフォルト値は他のパラメーターに使用されます。
DeviceNameがControlAppのデバイスが作成されます。
この例では、MobileApp製品のProductKeyはal987654321です。
モバイルアプリの製品とデバイスを作成した後、モバイルアプリをデバイスとしてIoT Platformに接続できます。
登録ユーザーがモバイルアプリにログオンすると、ビジネスサーバーはデバイス情報をモバイルアプリに送信します。 これにより、モバイルアプリをデバイスとしてIoT Platformに接続できます。
- CreateTopicRouteTable操作を呼び出して、アプリのトピックとスマートランプの間にメッセージのルーティング関係を作成します。
- SrcTopicパラメーターをアプリのトピック
/al987654321/ControlApp/user/updateに設定します。 - DstTopicsパラメーターをスマートランプのトピック
/al123456789/light/user /Setに設定します。
- SrcTopicパラメーターをアプリのトピック
モバイルアプリを設定します。
この例では、モバイルアプリとIoT Platform間の通信プロトコルとしてHTTPSが使用されています。
モバイルアプリがスマートランプに送信するコマンドの形式:
{ "TargetDevice": "light" 、 "スイッチ": 0、 "タイムスタンプ": 1557750407000 }リンクSDKの設定方法については、「リンクSDK」をご参照ください。
- モバイルアプリのユーザーがQRコードをスキャンして、アプリをスマートランプにバインドします。 アプリがサーバーにデバイスをバインドする要求を送信すると、サーバーはスマートランプをバインドしてデバイス名を返します。 返された名前は、deviceNameパラメーターで示されます。 この例では、デバイス名はライトです。
- モバイルアプリのユーザーがアプリからコマンドを送信します。
- アプリはIoT Platformのトピックにコマンドを送信します。 この例では、トピックは
/al987654321/ControlApp/user/updateです。JSON形式のコマンドのみがサポートされています。
- IoT Platformは、定義されたメッセージルーティング関係に基づいて、コマンドをスマートランプデバイスのトピックにルーティングします。 トピックは
/al123456789/light/user/setです。 - スマートランプデバイスは、コマンドを受信し、必要な動作を実行する。
説明 バインド解除要求をサーバーに送信するようにモバイルアプリを設定できます。 この方法で、サーバーはIoT PlatformのDeleteTopicRouteTable操作を呼び出して、メッセージルーティング関係を削除します。 ルーティング関係が削除されると、アプリを使用してスマートランプを制御することはできません。 - アプリはIoT Platformのトピックにコマンドを送信します。 この例では、トピックは