我正在为 Shelly 系列设备开发 openHAB2 绑定。http 接口运行良好,但我无法注册以获取 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 框架注册/注入自定义选项,以便观察者可以阅读它们。任何帮助表示赞赏。
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 注册自定义选项。似乎这些数据包被忽略了,所以应用程序没有得到任何数据。
任何想法?