热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jetlinks平台Mqtt设备接入认证问题

本文主要介绍关于大数据的知识点,对【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版权协议。


推荐阅读
author-avatar
粉雪琪的天涯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有