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.

[参考译文] LP-EM-CC1354P10:Wi-SUN CoAP 获取节点请求

Guru**** 1807890 points
Other Parts Discussed in Thread: WI-SUN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1421036/lp-em-cc1354p10-wi-sun-coap-get-request-by-node

器件型号:LP-EM-CC1354P10
Thread 中讨论的其他器件:Wi-SUN

工具与软件:

您好!

如何执行从节点到边界路由器的 CoAP GET 请求并使用发送的值进行响应?

我已经看了关于将 POST 从节点发送到边界路由器的培训示例、我曾尝试进行一些更改、但我不知道如何从边界路由器的响应中获取负载。

提前感谢您、
Eduardo。

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

    Eduardo、您好!

    您是否通过 Wi-SUN CoAP Simple Link Academy 任务3实现了培训示例–从 CoAP 节点向边界路由器 https://dev.ti.com/tirex/explore/content/cc13xx_cc26xx_simplelink_academy_7_41_00_00/_build_cc13xx_cc26xx_simplelink_academy_7_41_00_00/source/ti_wisunfan/wisun_coap/wisun_coap.html#task-3-send-a-non-confirmable-request-from-the-coap-node-to-the-border-router 发送不可确认的请求

    如果您查看  WPAN_CALLBACK ()的修改,您会看到新包类型的定义为 IPv6.CoAP_MESSAGE_CODE_post。 如果您需要将其注册为 IPv6.CoAP_MESSAGE_CODE_GET、当然也需要在路由器节点应用中进行调整。

    此致、
    等等

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

    尊敬的 Theo:

    是的、我已经实施了培训示例、它确实有效。 我可以成功地将 POST 请求从节点发送到边界路由器。

    要实现 Get 功能、我在节点代码中进行了以下更改:

    有一个变量时间戳定义为 uint8_t *时间戳= 0;

    SPINEL 代码中所做的更改如下:

    作为一个测试、您可以看到我修改了设置 PAYLOAD=12345的做法、我想这是我应该在节点侧得到的值。 如果我错了、请更正我。

    我知道我收到了来自边界路由器的响应、因为红色 LED 按规定闪烁了两次、因此我知道我收到的是消息、但无法在有效载荷中获得响应。

    此致、
    Eduardo。

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

    Eduardo、您好!

    当您在收到消息后看到边界路由器上的照明切换时、这意味着从我可以看到的负载访问成功。

    如何进一步使用有效载荷? 有效载荷是哪个值? 您是否检查过"sn_coap_hdr_s->payload_len"?  

    此致、
    等等

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

    尊敬的 Theo:

    实际上、我面临一些问题、我说过可以看到该节点的 Launchpad 中的红色 LED 闪烁、但事实并非如此。 我可以看到边界路由器收到了请求:

    这是负责接收 GET 请求和发送响应的 SPINEL 代码:

    以下是我用于发送 GET 请求的代码:

    这是回调函数、当我收到响应时应该调用此函数:

    我添加了一个断点、因此我可以确认是否在调用回调函数、并且在我发送 GET 请求时不会停止程序、因此我认为在边界路由器发送响应时不会调用该函数。

    此致、
    Eduardo。

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

    Eduardo、您好!

    1.您能不能尝试发送带 PAYLOAD=None 的确认。
    2.是否在 CoAP 消息发送代码之前定义回调函数 CoAP_CLIENT_RESPONSE_TIMESTAMP?

    此致、
    等等

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

    尊敬的 Theo:

    1.发送使用 PAYLOAD=None 的确认有效、可以看到节点 Launchpad 中的 LED 闪烁。

    2.是的,回调函数之前已经定义。

    回答您的上一个问题时、我想使用 Get 功能将一些数据从边界路由器发送到 CoAP 节点、例如时间戳和其他一些参数是 JSON 格式、该节点必须能够正常工作。

    如何实现此功能? 是否预期具有某种负载的消息会出现此行为?

    此致、
    Eduardo。

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

    Eduardo、您好!

    完美、然后它就像预期的那样工作。 我们的栈不支持在确认消息中直接发送数据。 相反、接收器应在确认后通过发送单独的消息进行响应。 您只需再发送一条 CoAP 消息。

    此致、
    等等  

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

    尊敬的 Theo:

    嗯、根据您的响应、这看起来会很奇怪、但我已经设法在 ACK 消息中发送数据。 这是我在 spinel-cli.py 代码中进行的修改:

    我仍然没有像我之前提到的那样使用更高的有效负载数据作为 JSON 消息进行测试、但到目前为止似乎可以正常工作。

    此致、
    Eduardo。

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

    Eduardo、您好!

    我可以复制此行为、正如您在我们的另一个线程中看到的那样、我向您发送了我的实现: https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1423668/cc1352p7-is-there-maximum-coap-payload-size-in-wi-sun

    感谢您的介绍。 我正在跟踪研发部门对此功能的情况、并将再次向您通报最新情况。

    此致、
    等等