This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:无法使用 CC3220SF 向物联网集线器发送 MQTT 消息。

Guru**** 2533180 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/982938/cc3220sf-launchxl-unable-to-send-mqtt-messages-to-iot-hub-using-cc3220sf

器件型号:CC3220SF-LAUNCHXL

您好!

使用   azure cc3220 SDK 的 iothub_client_sample_mqTT 示例向物联网集线器发送消息时遇到问题。 在示例中,使用 API IoTHubClient_LL_SendEventAsync 发送消息后,SendConfirmationCallback 未命中。 我使用 IAR 来编译代码。  以下是器件被卡住以供参考的日志:

启动 iohub_client_sample_mqTT 示例
startSNTP:当前时间:2021年3月3日11:35:05日


CC32XX 已连接到 AP 并获取 IP 地址。

IP 地址:192.168.0.102

IoTHubClient_LL_SetMessageCallback...成功。
IoTHubClient_LL_SendEventAsync 接受的消息[0]用于传输到物联网集线器。

IoTHubClient_LL_SendEventAsync 已接受消息[1]、用于传输到物联网集线器。
IoTHubClient_LL_SendEventAsync 已接受消息[2]、用于传输到物联网集线器。
IoTHubClient_LL_SendEventAsync 已接受消息[3]、用于传输到物联网集线器。
IoTHubClient_LL_SendEventAsync 已接受消息[4]、用于传输到物联网集线器。

请注意、我能够  成功运行 simplesample_http 示例、该示例使用 HTTP 协议、还可以监视消息、如下所示

[IoTHubMonitor] [1:32:49 PM] 从   [MyDevice ]接收到的消息:
  "DeviceID": "myFirstDevice"、
  "TS": "1614758551"、
  "温度": 29.578125
请在下面查找我使用的版本:
Azure CC32xx SDK:4.10.01..01
SimpleLink CC322xx SDK:4.10.00.07
服务包: SP_3.15.0.1_2.0.0.0_2.2.0.7
证书目录: certcatalog20190217.lst 和 certcatalog20190217.lst.signed_3220
FreeRTOS:v10.0.0
请在这方面帮助我。
谢谢、
Kishore。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MQTT 发布的 QoS 是什么?

    如果需要确认、请确保至少为 QOS1。

    BR、

    Kobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kobi、

    在此示例中、我找不到任何用于配置 QoS 的变量。

    此外、请注意、MQTT 连接本身未建立、无法进入发布阶段。

    根据此示例的自述文件、日志应如下所示、只需提供正确的接入点详细信息和连接字符串(在我的情况下、这与 HTTP 协议的工作方式相同)、但我不一样:

    Starting the iohub_client_sample_mqtt example
    Current time: Fri Jul 20 21:39:17 2018
    
    CC32XX has connected to AP and acquired an IP address.
    IP Address: 192.168.1.128
    IoTHubClient_LL_SetMessageCallback...successful.
    IoTHubClient_LL_SendEventAsync accepted message [0] for transmission to IoT Hub.
    IoTHubClient_LL_SendEventAsync accepted message [1] for transmission to IoT Hub.
    IoTHubClient_LL_SendEventAsync accepted message [2] for transmission to IoT Hub.
    IoTHubClient_LL_SendEventAsync accepted message [3] for transmission to IoT Hub.
    IoTHubClient_LL_SendEventAsync accepted message [4] for transmission to IoT Hub.
    Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK
    Confirmation[1] received for message tracking id = 1 with result = IOTHUB_CLIENT_CONFIRMATION_OK
    Confirmation[2] received for message tracking id = 2 with result = IOTHUB_CLIENT_CONFIRMATION_OK
    Confirmation[3] received for message tracking id = 3 with result = IOTHUB_CLIENT_CONFIRMATION_OK
    Confirmation[4] received for message tracking id = 4 with result = IOTHUB_CLIENT_CONFIRMATION_OK

    我进行了进一步调试、发现 slNetSock_startSec 函数在 tlsio_sl_open 内失败返回(-468)、这意味着 sl_error_bsd_ESECUNKNOWNROOTCA。
    但示例中使用的证书默认为 Baltimore Trust Root CA、这应该是可以的。

    请帮助我进一步解决此问题并建立正确的 MQTT 连接。

    谢谢、
    Kishore。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否可以启用应用程序和库日志记录? 请参阅 Azure SDK IoT 插件用户指南的调试部分。

    BR、

    Kobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kobi、

    我找到了问题并能够解决。 我忽略 了 SL_ERROR_BSD_ESECUNKNOWNROOTCA  错误、以启动安全 TLS 会话、从而使用运动场证书目录和虚拟根 CA 建立 MQTT 连接。 这样我就解决了这个问题。

    谢谢、

    Kishore。