全部產品
Search
文件中心

:使用樣本

更新時間:Jun 30, 2024

本文以C Link SDK中的Demo檔案./demos/mqtt_broadcast_demo.c為例,介紹如何調用Link SDK的API,展示裝置的廣播通訊功能。

背景資訊

  • 廣播訊息功能的更多資訊,請參見概述

  • 廣播訊息功能基於MQTT接入,開發過程中涉及MQTT接入的代碼說明,請參見MQTT接入

配置流程

  1. 初始化。

    詳細內容,請參見MQTT接入的初始化

  2. 配置功能。

    詳細內容,請參見MQTT接入的配置功能。

  3. 請求串連。

    詳細內容,請參見MQTT接入的請求串連。

  4. 可選:如果要向指定產品下所有裝置發送廣播訊息,裝置需調用aiot_mqtt_sub,訂閱指定Topic。

    • 範例程式碼:

          {
              char *sub_topic = "/broadcast/a18wP******/test";
      
              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

      /broadcast/a18wP******/test

      指定產品下的所有裝置接收廣播訊息的Topic。格式為:/broadcast/${productKey}/自訂欄位樣本中:

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

      • test為自訂欄位。

      關於Topic的更多資訊,請參見什麼是Topic

  5. 接收廣播訊息。

    1. 裝置與物聯網平台建立串連後,您可以調用物聯網平台雲端APIPubBroadcast),向裝置廣播訊息。

      重要

      廣播訊息發送頻率建議不超過1次/分鐘,以免被限流。

      具體操作,請參見廣播通訊

    2. 裝置端調用aiot_mqtt_recv,接收到資訊。廣播訊息觸發回呼函數,裝置執行對應處理。

      本文範例程式碼中,回呼函數為demo_mqtt_default_recv_handler

    3. 定義廣播訊息的回呼函數,編寫處理邏輯。

      通過收到訊息的Topic格式,辨別訊息是否為廣播訊息。

      • 如果需全量線上裝置接收廣播訊息,無需訂閱Topic。當裝置收到訊息後,您可通過訊息的Topic格式,確認訊息是否為廣播訊息。該類型訊息的Topic格式為/sys/${productKey}/${deviceName}/broadcast/request/${MessageId}

      • 如果需指定Topic的所有裝置接收廣播訊息,需訂閱該Topic。廣播通訊的Topic格式為:/broadcast/${productKey}/自訂欄位

      您可根據業務需要,編寫回呼函數的處理邏輯。範例程式碼對廣播訊息僅做列印處理。

      void demo_mqtt_default_recv_handler(void *handle, const aiot_mqtt_recv_t *packet, void *userdata)
      {
          switch (packet->type) {
              ……
              ……
              case AIOT_MQTTRECV_PUB: {
                  printf("pub, qos: %d, topic: %.*s\n", packet->data.pub.qos, packet->data.pub.topic_len, packet->data.pub.topic);
                  printf("pub, payload: %.*s\n", packet->data.pub.payload_len, packet->data.pub.payload);
                  /* TODO: 列印廣播的報文 */           
              }
              break;
      
              ……
              ……       
      
              default: {
      
              }
          }
      }
  6. 中斷連線。

    詳細內容,請參見MQTT的中斷連線

  7. 退出程式。

    詳細內容,請參見MQTT的退出程式

後續步驟

  • 常式檔案配置完成後,需進行編譯,產生可執行檔demos/mqtt-broadcast-demo

    更多資訊,請參見編譯與運行

  • 關於運行結果的詳細說明,請參見作業記錄