すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:デバイスをIoT Platformに接続し、データを送信する

最終更新日:Mar 17, 2025

デバイス証明書 (ProductKey、DeviceName、およびDeviceSecret) を取得したら、MQTT (Message Queuing Telemetry Transport) を介してデバイスをEnterprise Editionインスタンスに接続できます。 このトピックでは、IoT PlatformのLink SDK for Cを使用してシミュレートされたデバイスを設定し、データを送信する方法について説明します。

前提条件

プロダクトとデバイスが作成されます。 詳細については、「プロダクトとデバイスの作成」をご参照ください。

始める前に

この例では、通常ユーザーの権限を使用してすべての操作を実行します。 管理者権限を必要とする特定の操作を実行する場合は、sudoコマンドを実行します。

開発環境の準備

  • この例では、Link SDK for CはLinuxオペレーティングシステムで使用されています。 SDKをコンパイルするには、64ビットUbuntu 20.04を使用することを推奨します。

    この例では、ECS (Elastic Compute Service) インスタンスが購入され、シミュレートされたデバイスとして使用されます。 シミュレートされたデバイスはIoT Platformに接続され、データの送信に使用されます。 ECSインスタンスの購入方法の詳細については、「作成方法」をご参照ください。

  • SDKの開発とコンパイルには、次のソフトウェアが必要です。

    make (バージョン4.1以降) およびgcc (バージョン5.4.0以降)

    次のコマンドを実行して、ソフトウェアをインストールします。

    sudo apt-get install -y build-essential make gcc

C用リンクSDKの取得

LinK SDK for C V4.x圧縮パッケージをダウンロードし、パッケージの名前をLinkSDK.zipに変更します。

デバイスのサンプルプログラムを開発する

説明

この例では、TSL (Thing Specification Language) 固有のトピックを使用してデータを送信します。 カスタムトピックを使用して、デバイスにデータを送信することもできます。 詳細については、「カスタムトピックの使用」をご参照ください。

  1. ECS インスタンスにログインします。 ECSインスタンスへのログイン方法の詳細については、「接続方法の概要」をご参照ください。

  2. 次のコマンドを実行してGCCとMakeをインストールします。

    sudo apt-get install -y build-essential make gcc
  3. LinkSDK.zipファイルをアップロードして解凍します。

    1. オンプレミスファイルをECSインスタンスにアップロードします。

    2. 次のコマンドを実行してunzipをインストールします。

      apt更新
      apt install unzip 
    3. LinkSDK.zipファイルが存在するディレクトリに移動し、次のコマンドを実行してファイルを解凍します。

      unzip LinkSDK.zip
  4. /LinkSDK/demosディレクトリに移動し、data_model_basic_demo.cファイルを開き、デバイス検証パラメータを設定します。

    /* TODO: 次の変数をデバイス証明書に関する情報に置き換えます。 * /
    char * product_key = "a2 *******";
    char * device_name = "Device1";
    char * device_secret = "8c684ef ************";
    
    ......
    
    char * mqtt_host = "iot-cn-****** .mqtt.iothub.aliyuncs.com"; 

    パラメーター

    説明

    product_key

    a2 ******

    検証に使用されるデバイス証明書。 この証明書は、デバイスの追加後にオンプレミスサーバーに保存されます。

    IoT Platformコンソールの [デバイスの詳細] ページでデバイス証明書を表示することもできます。

    device_name

    デバイス1

    device_secret

    8c684ef *************

    mqtt_host

    iot-cn-****** .mqtt.iothub.aliyuncs.com

    MQTTエンドポイント。 [インスタンスの詳細] ページの右上隅にある [開発設定の表示] をクリックします。 [開発設定] パネルで、エンドポイントを表示します。

    インスタンスの詳細については、「インスタンスのエンドポイントの管理」をご参照ください。

  5. 次のサンプルコードを変更して、温度と湿度のデータを送信します。

    /* メインスレッドはスリープ状態になります。 */
        while (1) {
            /* TODO: 次のサンプルコードは、プロパティとイベントを送信する方法を示しています。 サンプルコードのコメントを解除して結果を表示できます。 */
            demo_send_property_post(dm_handle, "{\" temperature\": 30,\" humidity\": 42}");
            ......
    
            睡眠 (5);
        }
  6. カスタムトピックをサブスクライブするには、次のサンプルコードを変更します。 カスタムトピックは、IoT Platformからコマンドを受信するために使用されます。

    aiot_mqtt_sub(mqtt_handle、"/a2 ******/Device1/user/get" 、NULL、1、NULL);
  7. /LinkSDKのルートディレクトリで、次のコマンドを実行してサンプルプログラムをコンパイルします。

    はきれいにする
    作る 

    生成されたdata-model-basic-demoファイルはに保存されます。/出力ディレクトリ。

  8. 次のコマンドを実行して、サンプルプログラムを実行します。

    . /output/data-model-basic-demo

    サンプルプログラムが期待どおりに実行されると、次のログが生成されます。

    [1695199326.066][LK-0313] MQTTユーザーがaiot_mqtt_connect apiを呼び出し、connect
    [1695199326.066][LK-032A] mqttホスト: iot-cn-****** .mqtt.iothub.aliyuncs.com
    [1695199326.066][LK-0317] ユーザー名: Device1&a2 ******
    サーバーとのtcp接続を確立します (host='iot-cn-****** .mqtt.iothub.aliyuncs.com '、port=[443])
    tcp、fd=3を確立するための成功
    ローカルポート: 36030
    [1695199326.077][LK-1000] サーバーとのmbedtls接続を確立します (host='iot-cn-****** .mqtt.iothub.aliyuncs.com '、port=[443])
    [1695199326.122][LK-1000] mbedtls接続を確立する成功 (合計で45382バイト、最大使用48350バイト)
    [1695199326.166][LK-0313] MQTTは92 msで成功を接続します
    AIOT_MQTTEVT_CONNECT
    [1695199326.166][LK-0309] サブ: /a2 ******/Device1/user/get
    [1695199326.166][LK-0309] パブ: /sys/a2 ******/Device1/thing/event/property/post
    
    [LK-030A] > 7B 22 69 64 22 3A 22 31 22 2C 22 76 65 72 73 69 | {"id":"1","versi
    [LK-030A] > 6F 6E 22 3A 22 31 2E 30 22 2C 22 70 61 72 61 6D | on ":" 1.0 "、" param
    [LK-030A] > 73 22 3A 7B 22 74 65 6D 70 65 72 61 74 75 72 65 | s ":{" temperature
    [LK-030A] > 22 3A 20 33 30 2C 22 68 75 6D 69 64 69 69 69 74 79 22 | ": 30、" 湿度"
    [LK-030A] > 3A 20 34 32 7D 2C 22 73 79 73 22 3A 7B 22 61 63 | : 42} 、"sys":{"ac
    [LK-030A] > 6B 22 3A 31 7D 7D | k ":1}}
    
    [1695199326.244][LK-0309] pub: /sys/a2 ******/Device1/thing/event/property/post_reply
    
    [LK-030A] < 7B 22 63 6F 64 65 22 3A 32 30 30 2C 22 64 61 74 | {"code":200,"dat
    [LK-030A] < 61 22 3A 7B 7D 2C 22 69 64 22 3A 22 31 22 2C 22 | a ":{}," id ":" 1 ","
    [LK-030A] < 6D 65 73 73 61 67 65 22 3A 22 73 75 63 63 65 73 | message ":" succes
    [LK-030A] < 73 22 2C 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 | s "、" method ":" thi
    [LK-030A] < 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 | ng.event.propert
    [LK-030A] < 79 2E 70 6F 73 74 22 2C 22 76 65 72 73 69 6F 6E | y.post "," version
    [LK-030A] < 22 3A 22 31 2E 30 22 7D | ":" 1.0 "}
    
    [1695199326.244][LK-0A08] DM recvジェネリック返信
    demo_dm_recv_handler、type = 0
    demo_dm_recv_generic_reply msg_id = 1, code = 200, data = {}, message = success 
  9. IoT Platformコンソールにログインし、管理するEnterprise Editionインスタンスを見つけ、インスタンスの名前をクリックして [インスタンスの詳細] ページに移動します。 [インスタンスの詳細] ページで、デバイスのステータスを表示します。

    1. 左側のナビゲーションウィンドウで、[デバイス] > [デバイス] を選択します。 デバイスページで、Device1を見つけて、デバイスのステータスを表示します。 State/Enabled列の値Onlineは、デバイスがIoT Platformに接続されていることを示します。

      image.png

    2. [操作] 列の [表示] をクリックします。 デバイスの詳細ページで、[TSLデータ] をクリックします。 [TSLデータ] タブで、[ステータス] をクリックします。 [ステータス] タブで、デバイスのステータスを表示します。

      この例では、data_model_basic_demo.cファイルのサンプルコードを使用して、温度データと湿度データがIoT Platformに送信されます。

      image.png

次のステップ

データをOTSに転送