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

IoT Platform:C Link SDK

最終更新日:Mar 22, 2025

このトピックでは、C言語用 Link SDK を使用してデバイスを IoT Platform に接続し、通信を有効にする方法について説明します。

前提条件

IoT Platform がアクティブ化されていること。

背景情報

C言語用 Link SDK を構成して、MQTT(Message Queuing Telemetry Transport)経由でシミュレートされたデバイスを IoT Platform に接続できます。この例では、LightSwitch という名前のデバイスを使用します。デバイスは、カスタムトピックを使用して IoT Platform にデータを送信できます。

詳細については、「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 ホスト

      パラメーター

      説明

      mqtt_host

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

      デバイスを接続するエンドポイント。

      • 旧版のパブリックインスタンスを使用する場合、パブリックインスタンスのエンドポイントは ${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com 形式です。

      product_key

      a18wP******

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

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

      device_name

      LightSwitch

      device_secret

      uwMTmVAMnGGHaAkqmeDY6cHxxB******

    • デバイスが IoT Platform からメッセージを受信するためにサブスクライブするトピックを指定します。例: /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); // aiot_mqtt_sub 失敗
                  return -1;
              }
          }

      パラメーター

      説明

      sub_topic

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

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

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

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

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

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

    • デバイスがメッセージを送信するために使用できるトピックを指定します。例:/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); // aiot_mqtt_pub 失敗
                  return -1;
              }
          }

      パラメーター

      説明

      pub_topic

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

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

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

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

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

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

      pub_payload

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

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

      この例では、カスタムトピックが使用されています。カスタムメッセージ形式を使用できます。

  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 トピックをサブスクライブしていることを示しています。

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

      トピックをサブスクライブした後、IoT Platform コンソールに戻ることができます。 [デバイスの詳細] ページの [トピック] タブで、トピックを見つけて、[アクション] 列の [通知の発行] をクリックします。 [通知の発行] ダイアログボックスで、This is a test message from Alibaba IoT Platform. などのメッセージを入力します。次に、IoT Platform からデバイスにメッセージを送信します。发送消息

    • 次のログデータは、LightSwitch デバイスが /a18wP******/LightSwitch/user/update トピックを使用して 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 の機能の詳細については、「機能」をご参照ください。

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