全部產品
Search
文件中心

:C Link SDK

更新時間:Jun 30, 2024

本文以夜燈開關為例,介紹如何快速使用C Link SDK,類比裝置採用MQTT協議接入物聯網平台,並通過自訂Topic上報資料至物聯網平台的完整操作。

前提條件

已開通物聯網平台服務。

建立產品和裝置

  1. 登入物聯網平台控制台,單擊目標執行個體卡片。

  2. 在左側導覽列,選擇裝置管理 > 產品,單擊建立產品

  3. 建立產品頁面,輸入產品名稱:夜燈開關,所屬品類選擇自訂品類,其他參數使用預設值,單擊確認

    建立產品

  4. 在完成建立產品的頁面,單擊添加裝置下的前往添加

  5. 裝置頁面,單擊添加裝置

  6. 添加裝置對話方塊中,輸入裝置名稱,例如:LightSwitch。然後,單擊確認

    添加裝置

  7. 添加完成對話方塊中,單擊一鍵複製裝置認證。將裝置認證資訊儲存至本地備用。關於裝置認證的更多資訊,請參見裝置認證

準備開發環境

本樣本的開發環境為Ubuntu 16.04,開發工具為GCC和Make。關於環境的更多說明,請參見環境說明

  1. 安裝Ubuntu 16.04。

    更多資訊,請參見Ubuntu

  2. 執行以下命令,安裝GCC和Make。

    sudo apt-get -y install gcc make

配置裝置端SDK

  1. 下載Demo檔案至開發環境並解壓。

    物聯網平台提供SDK定製功能,更多資訊,請參見擷取C Link SDK

  2. 開啟./LinkSDK/demos/mqtt_basic_demo.c檔案,配置如下參數:

    • 配置裝置接入資訊,使裝置接入物聯網平台。範例程式碼如下:

      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

      裝置的接入網域名稱。

      • 企業版執行個體和新版公用執行個體:在執行個體詳情頁面的開發配置面板,查看接入網域名稱。

      • 舊版公用執行個體:接入網域名稱格式為${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com

      新舊版公用執行個體和企業版執行個體、以及接入網域名稱的更多資訊,請參見查看執行個體終端節點

      product_key

      a18wP******

      裝置認證資訊。即完成添加裝置後,您儲存至本地的裝置認證。

      您也可以在物聯網平台的裝置詳情頁查看裝置的認證資訊。更多資訊,請參見擷取裝置認證資訊

      device_name

      LightSwitch

      device_secret

      uwMTmVAMnGGHaAkqmeDY6cHxxB******

    • 配置裝置訂閱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,可接收物聯網平台的訊息。

      您可以在物聯網平台的產品詳情頁的Topic類列表下的自訂Topic頁簽下,查看您的自訂Topic。更多資訊,請參見什麼是Topic

      本樣本為預設的自訂Topic。其中:

      • a18wP******為裝置的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向物聯網平台發送訊息。

      您可以在物聯網平台的產品詳情頁的Topic類列表下的自訂Topic頁簽下,查看您的自訂Topic。更多資訊,請參見什麼是Topic

      本樣本為預設的自訂Topic。其中:

      • a18wP******為裝置的ProductKey

      • LightSwitch為裝置的DeviceName

      pub_payload

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

      上報至物聯網平台的訊息內容。

      本樣本使用自訂Topic,您可自訂訊息的資料格式。

  3. 在Link SDK根目錄下,執行命令make

    產生的Demo可執行檔為./output/mqtt-basic-demo

運行結果

在Link SDK根目錄下,執行以下命令,運行Demo可執行檔。

./output/mqtt-basic-demo
  • 您可以在裝置端查看運行結果。

    • 以下日誌顯示裝置LightSwitch與物聯網平台串連成功。

      [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訂閱了Topic /a18wP******/LightSwitch/user/get

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

      Topic訂閱成功後,您可以返回物聯網平台,在裝置詳情頁面的Topic列表頁簽,單擊訂閱的Topic操作欄的發布訊息,然後在發布訊息對話方塊的訊息輸入欄中,輸入一條訊息,例如:This is a test message from Alibaba Iot Platform.,類比從物聯網平台向裝置發送訊息。發送訊息

    • 以下日誌顯示裝置LightSwitch通過Topic /a18wP******/LightSwitch/user/update,向物聯網平台上報了一條訊息。

      [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       
  • 您可以在物聯網平台控制台,查看裝置的狀態和作業記錄。

    • 左側導覽列,選擇裝置管理 > 裝置,找到裝置,查看裝置狀態。裝置狀態顯示為線上,則表示裝置與物聯網平台成功串連。

    • 在左側導覽列,選擇監控營運 > Log Service,選擇夜燈開關產品後,查看裝置上線、訂閱Topic和上報訊息的日誌。

如果在調試過程中出現錯誤,請參見裝置端接收的錯誤碼,根據提示解決問題。

後續步驟

  • 裝置接入物聯網平台後,您可以管理裝置並對其進行監控營運。關於物聯網平台的更多功能,請參見物聯網平台產品功能

  • 使用C Link SDK配置相關進階功能,請參見SDK功能概述