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.

[参考译文] RTOS/SIMPLELINK-CC3220-SDK:MQTT 不适用于通过 C 中的 Azure IoT Hub 客户端 SDK 进行 cc3220通信

Guru**** 2536330 points
Other Parts Discussed in Thread: CC3220S, CC3220SF, CC3220SF-LAUNCHXL, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/802877/rtos-simplelink-cc3220-sdk-mqtt-not-working-for-cc3220-communication-via-the-azure-iot-hub-client-sdk-in-c

器件型号:SIMPLELINK-CC3220-SDK

工具/软件:TI-RTOS

您好、先生、

我正在尝试  使用 azure_cc32xx_2_20_00_05 SDK 中的"iothub_client_sample_mqtt "示例将 CC3220连接到 azure 云。

 

SDK 版本

1)      1) Code Composer Studio 9.0.0

2)      simplelink_cc32xx_sdk_3_10_00_04

3)      azure_cc32xx_2_20_00_05

 

执行示例时,不会调用“ReceiveMessageCallback”的回调函数。 消息不会传输到 azure 云。 控制台显示以下消息。

 

[Cortex_M4_0]启动 iiohub_client_sample_mqTT 示例

启动 iohub_client_sample_mqTT 示例

当前时间:Sun 2019年5月19日05:57:20

 

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

IP 地址:172.20.10.2

IoTHubClient_LL_SetMessageCallback...成功。

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

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

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

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

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

 

但是、我只按如下方式修改第135行的程序。

 

     //if (((iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString (connectionString、MQTT_Protocol))= NULL)

       if (((iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString (connectionString、HTTP_Protocol))= NULL)

 

可以使用 HTTP 协议将消息传输到 azure 云。

 

将显示控制台消息

 

[Cortex_M4_0]启动 iiohub_client_sample_mqTT 示例

当前时间:Sun 2019年5月19日05:55:03

 

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

IP 地址:172.20.10.2

IoTHubClient_LL_SetMessageCallback...成功。

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

已接收确认[0]、用于消息跟踪 ID = 0、结果= IOTHUB_CLIENT_CONFIRMATION_OK

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

已接收确认[1]、消息跟踪 ID = 1、结果= IOTHUB_CLIENT_CONFIRMATION_OK

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

已接收确认[2]、消息跟踪 ID = 2、结果= IOTHUB_CLIENT_CONFIRMATION_OK

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

已接收确认[3]、消息跟踪 ID = 3、结果= IOTHUB_CLIENT_CONFIRMATION_OK

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

已接收确认[4]、消息跟踪 ID = 4、结果= IOTHUB_CLIENT_CONFIRMATION_OK

 

CC3220的适配器层是否仅通过 C 中的 Azure IoT Hub 客户端 SDK 进行 HTTP 通信认证?

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

    您好!

    请告诉我您使用的是哪款3220器件? (是 CC3220S 还是 CC3220SF)

    此外、您的网络拓扑是什么样的? 您是否在防火墙后面? 您的网络和 WAN 之间是否有代理服务器?

    最后、您是否能够在 Azure IoT Hub 网站中查看设备的连接日志? 当您尝试运行示例(使用 MQTT)时、是否显示您的设备正在连接到集线器?

    Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Steve、
    我使用 TI 的 CC3220SF-LAUNCHXL 开发套件连接 Azure IoT。
    处于工作站模式的 CC3220SF 会连接到我的 iPhone 上的 WiFi 接入点。

    a)以下消息显示了使用 cmd shell 中的 MQTT 的连接日志。

    C:\Users\aetsl>IOTC-Explorer 登录"SharedAccessSignature SR=b32c3ed0-6188-42b3-89ec-ad9187f92a7c&SIG=7qsnm9I1j%2F8ED12Jao6ivwOf4g%susyn795ds=275cQ=24305cQ=12308230dcQ&dc20585"
    登录成功。 会话到期日 Sun 2020年5月24日08:50:24 GMT+0800 (GMT+08:00)

    C:\Users\aetsl>IOTC-Explorer 监视消息
    正在监控来自所有设备的消息...

    <<无……。>>

    b)以下消息显示了使用 cmd shell 中的 HTTP 的连接日志。

    C:\Users\aetsl>IOTC-Explorer 登录"SharedAccessSignature SR=b32c3ed0-6188-42b3-89ec-ad9187f92a7c&SIG=7qsnm9I1j%2F8ED12Jao6ivwOf4g%susyn795ds=275cQ=24305cQ=12308230dcQ&dc20585"
    登录成功。 会话到期日 Sun 2020年5月24日08:50:24 GMT+0800 (GMT+08:00)

    C:\Users\aetsl>IOTC-Explorer 监视消息
    正在监控来自所有设备的消息...

    ================================================================ 器件 cc3220sf、2019年5月24日星期五09:06:07 GMT ===========================================

    DeviceID:"myFirstDevice"、
    风速:13、
    温度:22、
    湿度:76


    ================================================================ 器件 cc3220sf、2019年5月24日星期五09:06:08 GMT ================================================================

    DeviceID:"myFirstDevice"、
    风速:13、
    温度:28、
    湿度:60.


    ================================================================ 器件 cc3220sf、2019年5月24日星期五09:06:08 GMT ================================================================

    DeviceID:"myFirstDevice"、
    风速:12、
    温度:23、
    湿度:72


    ================================================================ 器件 cc3220sf、2019年5月24日星期五09:06:09 GMT ========================================================

    DeviceID:"myFirstDevice"、
    风速:13、
    温度:22、
    湿度:63


    ================================================================ 器件 cc3220sf、2019年5月24日星期五09:06:09 GMT ========================================================

    DeviceID:"myFirstDevice"、
    风速:12、
    温度:25、
    湿度:63


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

    感谢您再次向我介绍这些信息、这些都是重要的细节。

    [报价用户="Steven Connell">最后、您是否能够在 Azure IoT Hub 网站中查看设备的连接日志? 当您尝试运行示例(使用 MQTT)时、是否显示您的设备正在连接到集线器?[/quot]

    但是、我没有看到对上述内容的任何响应、这是一个重要的细节、因为如果您看到设备实际上已连接到云服务器、它会让我知道它已超过安全连接阶段。

    您能否检查您设备的 Azure 网站连接日志并查看其是否显示您已连接?

    Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,我不知道如何从 Azure Web 获取物联网集线器的连接日志。 从 CC3220SF (使用 HTTP 协议)发送的遥测消息以及到达物联网集线器的距离可通过物联网集线器的 Metrics 功能进行验证。

    当我执行 IoTHubClient_LL_CreateFromConnectionString 调用以创建用于与物联网集线器通信的物联网集线器客户端时、返回值为非 NULL IOTHUB_CLIENT_LL_Handle。 指示 CC3220SF 已连接到 Azure IoT Hub。

    我使用 IoTHubClient_LL_SendEventAsync 调用发送遥测消息。 但不会触发回调以确认消息已成功发送或无法发送。

    我尝试使用 IoTHubClient_LL_GetSendStatus 调用并获取 IoTHubClient 的当前发送状态。 发送状态始终返回 IOTHUBCLIENT_SENDSTATUS_BUSY。 遥测消息无法发送。

    期待您的善意帮助。 谢谢。

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

    尊敬的 S.L.:

    我能够再现您看到的问题、并得到解决。

    我发现此问题是由于我的 CC3220板上的服务包版本过时造成的。 是否可以尝试将服务包更新为最新版本?

    让我们首先检查您的设备上有哪些服务包:

    1.打开 Uniflash 工具(如果没有、则需要下载 TI Uniflash 并安装它)

    2.连接到 CC3220SF 板

    3.单击左侧"Files"下的"Service Pack"链接。 您应该会看到服务包的当前版本。 这是对我来说的样子:

    4.假设您看到的是较旧的 Service Pack 版本,请单击浏览并导航到当前版本的位置。 它应包含在您的 SDK 中、例如在我的 PC 上、它位于:

    C:\ti\simplelink_cc32xx_sdk_3_10_00_04\tools\cc32xx_tools\servicepack-cc3x20

    5.单击"生成图像"按钮(见屏幕截图右下角)

    6.更新完成后,重新打开电路板的电源,然后尝试重新加载/重新运行示例

    希望这能解决您的问题、就像我所做的那样。

    Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Steve
    问题已得到解决。 感谢你的帮助。

    此致、
    S. L. Jeng