gpt4 book ai didi

java - 如何处理自定义 Coap 选项(非标准)

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:00 29 4
gpt4 key购买 nike

我正在为 Shelly 系列设备开发 openHAB2 绑定(bind)。 http接口(interface)运行良好,但无法注册获取COAP事件。

有人有使用 Californium 框架的经验吗? Shelly 使用非标准 Coap 选项(基于其 CoIoT 规范:https://shelly-api-docs.shelly.cloud/images/CoIoT%20for%20Shelly%20devices%20(rev%201.0)%20.pdf)。

我正在使用 Java Californium 框架。

当我注册观察者时,不会执行回调。如果我发送命令,我会在日志中看到 ACK,但它们会报告未知选项 3332,Shelly 在其文档中对此进行了描述。我没有找到一种方法来向 Californium 框架注册/注入(inject)自定义选项,以便观察者可以读取它们。如有任何帮助,我们将不胜感激。

    CoapClient           client;
CoapObserveRelation relation;

public void start() {
client = new CoapClient("coap://192.168.1.1:5683/cit/d");
client.get(new CoapHandler() {
@Override
public void onLoad(CoapResponse response) {
String content = response.getResponseText();
logger.debug("RESPONSE 3: " + content);
}

@Override
public void onError() {
logger.warn("FAILED");
}
});

relation = client.observe(
new CoapHandler() {
@Override
public void onLoad(CoapResponse response) {
String content = response.getResponseText();
logger.debug("NOTIFICATION: " + content);
}

@Override
public void onError() {
logger.warn("OBSERVING FAILED (press enter to exit)");
}
});

我在调试日志中看到的内容:

Aug 19, 2019 4:15:39 PM org.eclipse.californium.core.network.Matcher receiveResponse
INFORMATION: Ignoring unmatchable piggy-backed response from /192.168.6.81:5683: ACK-2.05 MID= 5718, Token=, OptionSet={"Unknown (3332)":0x534853572d3231233535394635352331}, "{"blk":[{"I":0,"D":"Rela".. 420 bytes
  • 显然设备正在响应(ip:port, uri)
  • 数据包被解码
  • 数据看起来总体不错(如规范中所述)
  • 但它显示“OptionSet={”Unknown (3332)”...”

我不知道如何向 Californium 注册自定义选项。似乎这些数据包被忽略,因此应用程序无法获取任何数据。

有什么想法吗?

最佳答案

如果您为客户端和服务器、请求和响应提供日志,那就太好了。但是,我看到 ACK 响应不包含 token (应该与请求中的 token 相同),显然这就是 Californium 无法将其与相应请求匹配的原因。

Californium 应该可以很好地与自定义选项配合使用。

解决响应数学问题后尝试联系他们。事情应该是这样的:

response.getOptions().getOthers()

“未知...”消息只是因为 Californium 消息格式化程序不知道如何正确记录它。无论如何,您应该能够从选项中获取它。

关于java - 如何处理自定义 Coap 选项(非标准),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57558648/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com