このトピックでは、IoT Platformコンソールの [メッセージ転送] ページのデータ転送機能を使用して、マシンツーマシン (M2M) 通信を確立する方法について説明します。 このトピックでは、スマートランプとモバイルアプリ間の接続を確立します。
背景情報
次の図は、モバイルアプリを使用してスマートランプを制御する方法を示しています。

プロダクトとデバイスを作成する
IoT Platformコンソールで、モバイルアプリの製品とデバイスを管理および作成するインスタンスの詳細ページに移動します。 詳細については、「プロダクトの作成」および「デバイスの作成」をご参照ください。
この例では、MobileAppという名前のプロダクトが作成されます。 [ノードタイプ] パラメーターは [直接接続デバイス] に設定され、デフォルト値は他のパラメーターに使用されます。
DeviceNameがControlAppのデバイスが作成されます。
この例では、MobileApp製品のProductKeyはal987654321です。
モバイルアプリの製品とデバイスを作成した後、モバイルアプリをデバイスとしてIoT Platformに接続できます。
登録ユーザーがモバイルアプリにログオンすると、ビジネスサーバーはデバイス情報をモバイルアプリに送信します。 これにより、モバイルアプリをデバイスとしてIoT Platformに接続できます。
モバイルアプリに公開権限があるカスタムトピックを追加します。 モバイルアプリは、スマートランプにコマンドを送信するトピックを使用できます。
この例では、
/al987654321/ControlApp/user/commandトピックが追加されています。 詳細については、「通信にカスタムトピックを使用する」をご参照ください。モバイルアプリを設定します。
この例では、モバイルアプリとIoT Platform間の通信プロトコルとしてHTTPSが使用されています。
モバイルアプリがスマートランプに送信するコマンドの形式:
{ "TargetDevice": "light" 、 "スイッチ": 0、 "タイムスタンプ": 1557750407000 }リンクSDKの設定方法については、「リンクSDK」をご参照ください。
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コンソールにログインします。
[概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。
左側のナビゲーションウィンドウで、を選択します。 次に、次の手順を実行して、メッセージを転送するパーサーを設定します。
データソースの作成
次の手順で説明するパラメーターの詳細については、「データソースの作成」をご参照ください。
[データソース] タブで、次の手順を実行してデータソースを作成します。
重要以前のバージョンのデータ転送ページが表示されている場合は、ページの右上隅にある [新しいバージョンに移動] をクリックします。 新しいバージョンのデータ転送ページが表示されたら、[データソース] をクリックします。
[データソース] タブで、[データソースの作成] をクリックします。
[データソースの作成] ダイアログボックスで、データソースの名前を入力します。 例: AppData。
[OK] をクリックします。
[AppData] ページで、[トピックの追加] をクリックします。
[トピックの追加] ダイアログボックスで、メッセージを処理するトピックを選択し、[OK] をクリックします。
この例では、
ControlAppデバイスの /al987654321/ControlApp/user/commandトピックと、TargetDevice、Timestamp、およびSwitchフィールドの値をメッセージから取得する必要があります。
データ宛先の作成
次の手順で説明するパラメーターの詳細については、「データデスティネーションの作成」をご参照ください。
[データ転送] ページに移動し、[データの宛先] をクリックします。
[データ宛先] タブで、[データ宛先の作成] をクリックします。
[データ宛先の作成] ダイアログボックスで、データ宛先の名前を入力します。 例: その他のトピック 次に、ProductパラメーターをSmartLampに設定します。
[OK] をクリックします。
パーサーの設定と開始
次の手順で説明するパラメーターの詳細については、「パーサーの設定」をご参照ください。
[パーサー] をクリックします。 [パーサー] タブで、次の手順を実行してパーサーを作成します。
[パーサーの作成] をクリックします。
[パーサーの作成] ダイアログボックスで、パーサーの名前を入力します。 例: DataParser
[OK] をクリックします。
DataParserページで、データソースを関連付けます。
ウィザードの [データソース] ステップで、[データソースの関連付け] をクリックします。
[データソースの関連付け] ダイアログボックスで、[データソース] ドロップダウンリストから [AppData] を選択します。
[OK] をクリックします。
DataParserページで、ウィザードの [データの宛先] をクリックして、データの宛先を関連付けます。
[データ宛先] セクションの右上隅にある [データ宛先の関連付け] をクリックします。
[データ宛先の関連付け] ダイアログボックスで、[データ宛先] ドロップダウンリストから [その他のトピック] を選択します。
[OK] をクリックします。
[データの宛先] セクションで、データの宛先IDを表示して保存します。 この例では、IDは1000です。
パーサースクリプトを作成するときは、データ宛先IDが必要です。
[DataParser] ページで、ウィザードの [パーサースクリプト] をクリックしてパーサースクリプトを設定します。
パーサースクリプトステップの [スクリプトの編集] セクションで、スマートランプがモバイルアプリからコマンドを受信するためのサブスクライブ権限を持つ
/al123456789/light/user/setトピックを指定します。パーサースクリプトの設定方法の詳細については、「スクリプト構文」をご参照ください。 データ転送機能の詳細については、「functions」をご参照ください。
// payload() 関数を使用して、デバイスから送信されたデータを取得し、そのデータをJSON形式のデータに変換します。 var data = payload("json"); // DeviceNameを指定します。 この例では、TargetDeviceパラメーターはlightに設定されています。 var dn = data.TargetDevice; // モバイルアプリからコマンドを受信するためにスマートランプが使用するトピックを指定します。 var topic_set = "/al123456789/" + dn + "/user/set"; // スマートランプがモバイルアプリから受け取るデータを指定します。 writeIotTopic(1000, topic_set, data)スクリプトの編集セクションの下にある [保存] をクリックします。
[デバッグ] をクリックします。 [デバッグ] パネルで、製品とデバイスを選択し、トピックを指定し、ペイロードデータを入力して、スクリプトが期待どおりに実行されるかどうかを確認します。
次の结果は、スクリプトが実行されたことを示します。
アクション: transmit to republish[destinationId=1000], data:{"Switch":0,"Timestamp":1557750407000,"TargetDevice":"light"} 変数: データ: {"Switch":0,"Timestamp":1557750407000,"TargetDevice":"light"} topic_set : /al123456789/light/user/set dn: ライト閉じるをクリックします。
スクリプトの編集セクションの下にある [公開] をクリックします。
[データ転送] ページに移動し、[パーサー] をクリックします。 [パーサー] タブで、[DataParser] パーサーの [操作] 列の [開始] をクリックします。
表示されるメッセージで、[OK] をクリックしてパーサーを起動します。
デバイス間でデータを送信
QRコードをスキャンして、モバイルアプリをスマートランプにバインドします。
モバイルアプリがバインド要求を送信した後、サーバーはモバイルアプリをスマートランプにバインドし、スマートランプのDeviceNameを返します。 返されるDeviceNameは、deviceNameパラメーターで指定されます。 この例では、DeviceNameはライトです。
モバイルアプリからコマンドを送信します。
モバイルアプリはカスタムトピックにコマンドを送信します。 この例では、コマンドは
/al987654321/ControlApp/user/commandトピックに送信されます。次に、IoT Platformは、設定したメッセージ転送パーサーに基づいてコマンドを受信するためにスマートランプによって使用されるトピックにコマンドを送信します。 この例では、トピックは
/al123456789/light/user/setです。スマートランプはコマンドを受信し、必要な操作を実行します。
説明モバイルアプリは、スマートランプのバインドを解除するリクエストをサーバーに送信することもできます。 スマートランプがバインド解除されると、モバイルアプリを使用してスマートランプを管理することはできません。