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

IoT Platform:C Link SDK

最終更新日:Jun 22, 2026

このトピックでは、C Link SDK を使用して、シミュレートされたデバイス (この例ではナイトライトスイッチ) を MQTT 経由で IoT Platform に接続し、カスタム Topic にデータをパブリッシュする方法について説明します。

前提条件

IoT Platform が有効化されていること。

プロダクトとデバイスの作成

  1. IoT Platform コンソールにログインし、ターゲットインスタンスのカードをクリックします。

  2. 左側のナビゲーションウィンドウで、[デバイス] > [プロダクト] を選択し、[プロダクトの作成] をクリックします。

  3. [プロダクトの作成] ページで、[プロダクト名] パラメーターを NightLightSwitch に、[カテゴリ] パラメーターをカスタムカテゴリに設定します。他のパラメーターはデフォルト値を使用します。その後、[OK] をクリックします。

  4. [プロダクトの作成] ページで、[デバイスの追加] セクションの [追加] をクリックします。

  5. [デバイス] ページで、[デバイスの追加] をクリックします。

  6. [デバイスの追加] ダイアログボックスで、デバイス名を入力します。例:LightSwitch。その後、[OK] をクリックします。

    [ニックネーム] には、クイックスタート と入力します。

  7. [デバイスが追加されました。] ダイアログボックスで、[デバイス証明書のコピー] をクリックします。次に、デバイス証明書情報をオンプレミスサーバーに保存します。詳細については、「デバイス証明書」をご参照ください。

開発環境の準備

この例では、開発環境は Ubuntu 16.04、開発ツールは gcc と make です。詳細については、「プロジェクト設定」をご参照ください。

  1. Ubuntu 16.04 をインストールします。

    詳細については、「Ubuntu」をご参照ください。

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

    sudo apt-get -y install gcc make

SDK の設定

  1. デモファイル からデモパッケージを開発環境にダウンロードし、パッケージを解凍します。

    IoT Platform では、Link SDK のカスタム機能を開発できます。詳細については、「C 言語用 Link SDK の取得」をご参照ください。

  2. ./LinkSDK/demos/mqtt_basic_demo.c ファイルを開き、関連するパラメーターを設定します。

    • デバイス接続情報を指定するパラメーターを設定して、デバイスを IoT Platform に接続します。パラメーターの説明を次の表に示します。サンプルコード:

      char *product_key       = "a18wP******";
      char *device_name       = "LightSwitch";
      char *device_secret     = "uwMTmVAMnGGHaAkqmeDY6cHxxB******";
      char  *mqtt_host = "a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com";

      パラメーター

      説明

      mqtt_host

      a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com

      デバイスの接続先となるエンドポイント。

      • Enterprise Edition インスタンスと新しいパブリックインスタンスの場合:[インスタンス詳細] ページの [開発設定] パネルでエンドポイントを確認します。

      • 以前のバージョンのパブリックインスタンスを使用する場合、パブリックインスタンスのエンドポイントは ${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com フォーマットです。

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

      product_key

      a18wP******

      デバイス証明書情報。デバイス証明書は、デバイスの作成後にオンプレミスサーバーに保存されます。

      デバイス証明書は、IoT Platform コンソールの [デバイス詳細] ページで表示できます。詳細については、「デバイス認証情報の取得」をご参照ください。

      device_name

      LightSwitch

      device_secret

      uwMTmVAMnGGHaAkqmeDY6cHxxB******

    • デバイスが IoT Platform からのメッセージを受信するためにサブスクライブする Topic を指定します。例:/a18wP******/LightSwitch/user/get。サンプルコード:

      説明

      この機能を使用するには、スラッシュとアスタリスクの組み合わせ (/**/) で囲まれたコードのコメントを解除してください。

          {
              char *sub_topic = "/a18wP******/LightSwitch/user/get";
              res = aiot_mqtt_sub(mqtt_handle, sub_topic, NULL, 1, NULL);
              if (res < 0) {
                  printf("aiot_mqtt_sub failed, res: -0x%04X\n", -res);
                  return -1;
              }
          }

      パラメーター

      説明

      sub_topic

      /a18wP******/LightSwitch/user/get

      デバイスがサブスクライブ権限を持つ Topic。デバイスはこの Topic を使用して IoT Platform からメッセージを受信できます。

      カスタム Topic は IoT Platform コンソールで表示できます。[プロダクト詳細] ページの [Topic カテゴリ] タブをクリックします。表示されたタブで、[Topic カテゴリ] をクリックします。詳細については、「Topic とは」をご参照ください。

      この例では、デフォルトのカスタム Topic が使用されます。パラメーターの説明:

      • a1oGs****** は、デバイスの [ProductKey] を示します。

      • LightSwitch はデバイスの [DeviceName] を示します。

    • デバイスがメッセージを送信するために使用できる Topic を指定します。例:/a18wP******/LightSwitch/user/update。次に、送信するメッセージのコンテンツを指定します。サンプルコード:

      説明

      この機能を使用するには、スラッシュとアスタリスクの組み合わせ (/**/) で囲まれたコードのコメントを解除してください。

           {
              char *pub_topic = "/a18wP******/LightSwitch/user/update";
              char *pub_payload = "{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}";
              res = aiot_mqtt_pub(mqtt_handle, pub_topic, (uint8_t *)pub_payload, (uint32_t)strlen(pub_payload), 0);
              if (res < 0) {
                  printf("aiot_mqtt_sub failed, res: -0x%04X\n", -res);
                  return -1;
              }
          }

      パラメーター

      説明

      pub_topic

      /a18wP******/LightSwitch/user/update

      デバイスがパブリッシュ権限を持つ Topic。デバイスはこの Topic を使用して IoT Platform にメッセージを送信できます。

      カスタム Topic は IoT Platform コンソールで表示できます。[プロダクト詳細] ページの [Topic カテゴリ] タブをクリックします。表示されたタブで、[Topic カテゴリ] をクリックします。詳細については、「Topic とは」をご参照ください。

      この例では、デフォルトのカスタム Topic が使用されます。パラメーターの説明:

      • a1oGs****** は、デバイスの [ProductKey] を示します。

      • LightSwitch は、デバイスの [DeviceName] を示します。

      pub_payload

      {\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}

      IoT Platform に送信されるメッセージ。

      この例では、カスタム Topic が使用されます。カスタムメッセージフォーマットを使用できます。

  3. SDK のルートディレクトリで、make コマンドを実行します。

    ./output/mqtt-basic-demo 実行可能サンプルコードファイルが生成されます。

実行結果

SDK のルートディレクトリで、次のコマンドを実行して実行可能ファイルを実行します。

./output/mqtt-basic-demo
  • デバイスで実行結果を表示できます。

    • 次のログデータは、LightSwitch デバイスが IoT Platform に接続されたことを示しています。

      [1619768570.433][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
      [1619768570.433][LK-0317] LightSwitch&a18wP******
      [1619768570.433][LK-0318] 933FE333F78F42E2AAD384F629C771277E06D459577942EA1F04ACFDFE******
      core_sysdep_network_establish host a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com port 8883, type 0
      establish tcp connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[8883])
      success to establish tcp, fd=3
      local port: 49122
      [1619768570.599][LK-1000] establish mbedtls connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[8883])
      [1619768570.600][LK-1000] success to establish mbedtls connection, (cost 45134 bytes in total, max used 47870 bytes)
      [1619768570.644][LK-0313] MQTT connect success in 212 ms
      AIOT_MQTTEVT_CONNECT
    • 次のログデータは、LightSwitch デバイスが /a18wP******/LightSwitch/user/get Topic をサブスクライブしたことを示しています。

      [1620373302.144][LK-0309] sub: /a18wP******/LightSwitch/user/get

      デバイスが Topic へのサブスクライブに成功したら、IoT Platform コンソールに戻ります。[デバイス詳細] ページの [トピック] タブで Topic を見つけ、「操作」列の [メッセージを公開] をクリックします。[メッセージを公開] ダイアログボックスで、たとえば これは Alibaba Iot Platform からのテストメッセージです。 のようなメッセージを入力して、IoT Platform からデバイスにメッセージを送信するシミュレーションをします。

    • 次のログデータは、LightSwitch デバイスが /a18wP******/LightSwitch/user/update Topic を使用して IoT Platform にメッセージを送信したことを示しています。

      [1619768570.644][LK-0309] pub: /a18wP******/LightSwitch/user/update
      [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 4C 69 67  68 74 53 77 69 74 63 68 | s":{"LightSwitch
      [LK-030A] > 22 3A 30 7D 7D       
  • IoT Platform コンソールにログインして、デバイスのステータスと操作ログを表示できます。

    • 左側のナビゲーションウィンドウで、[デバイス] > [デバイス] を選択します。次に、デバイスを探し、デバイスのステータスを確認します。状態/有効列の値が [オンライン] の場合、デバイスは IoT Platform に接続されています。

    • 左側のナビゲーションウィンドウで、[メンテナンス] > [デバイスログ] を選択します。[デバイスログ] ページで、NightLightSwitch プロダクトを選択します。そのプロダクトのデバイスがオンラインになったとき、トピックをサブスクライブしたとき、およびメッセージを送信したときのログを表示できます。

デバッグ中にエラーが発生した場合は、プロンプトに従ってエラーを修正してください。詳細については、「デバイスが受信するエラーコード」をご参照ください。

次のステップ

  • デバイスが IoT Platform に接続された後、デバイスを管理およびモニターできます。IoT Platform の機能の詳細については、「特徴」をご参照ください。

  • C 言語用 Link SDK を使用して高度な機能を設定する方法の詳細については、「概要」をご参照ください。