作者:粉雪琪的天涯 | 来源:互联网 | 2023-06-05 09:17
本文主要介绍关于大数据的知识点,对【jetlinks平台Mqtt设备接入认证问题】和【jetlinksmqtt功能开发】有兴趣的朋友可以看下由【gsls200808】投稿的技术文章,希望该技术和经验能
本文主要介绍关于大数据的知识点,对【jetlinks平台Mqtt设备接入认证问题】和【jetlinksmqtt功能开发】有兴趣的朋友可以看下由【gsls200808】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的分享学习相关技术问题。
jetlinksmqtt功能开发
参考官方接入教程:设备接入教程 | JetLinks 物联网基础平台
演示协议:GitHub - jetlinks/demo-protocol: Jetlinks 自定义消息协议解析: 演示协议
密码生成:JetLinks官方协议MQTT用户名密码生成工具
一套下来最烦人的时mqtt连不上。用生成的密码也不行。
关键在于文档没有说明生成器用的密码从哪里来。
正确的菜单在 设备管理-产品-选一个设备-查看,mqtt认证配置下的secureId和secureKey
如果没配置会怎么样呢,官方协议代码写的有坑,没有考虑不配置的情况。空串和空对象比较永远不成立。
简单改一下吧
官方认证器JetLinksAuthenticator类修改 ,判断的时候将secureId加上空串比较
将
if (requestSecureId.equals(secureId) && digest.equals(password)) {
return AuthenticationResponse.success(deviceOperation.getDeviceId());
} else {
return AuthenticationResponse.error(401, "密钥错误"+"secureId="+secureId+"secureKey="+secureKey+"digest="+digest+"username="+username+"password="+password);
}
改成
if (requestSecureId.equals(secureId+"") && digest.equals(password+"")) {
return AuthenticationResponse.success(deviceOperation.getDeviceId());
} else {
return AuthenticationResponse.error(401, "密钥错误"+"secureId="+secureId+"secureKey="+secureKey+"digest="+digest+"username="+username+"password="+password);
}
生成这里填上两个null字符串,这样就能连上mqtt了。
那么设置了secureId和secureKey是否就没有坑了呢,也是有的,保存一遍之后还需要点应用配置才能生效。
本文《jetlinks平台Mqtt设备接入认证问题》版权归gsls200808所有,引用jetlinks平台Mqtt设备接入认证问题需遵循CC 4.0 BY-SA版权协议。