哈尔滨网站建设云聚达,网站服务器服务商,企业网站设计调查问卷,程序开发环境目录
前言
1.下载官方协议包
2.解压
3.自定义主题
4.重写解码方法
5.以下是我解析后接收到的数据 前言 最近这段时间#xff0c;一直在用开源的Jetlinks物联网平台在学习#xff0c;偶尔有一次机会接触到物联网设备对接#xff0c;在协议对接的时候#xff0c;遇到了…目录
前言
1.下载官方协议包
2.解压
3.自定义主题
4.重写解码方法
5.以下是我解析后接收到的数据 前言 最近这段时间一直在用开源的Jetlinks物联网平台在学习偶尔有一次机会接触到物联网设备对接在协议对接的时候遇到了各种各样的问题最近遇到协议包解析的问题所以想总结一下。
1.下载官方协议包 官方协议包下载地址JetLinks物联网基础平台/jetlinks-official-protocol
2.解压 解压到指定目录并且用IDEA打开。 3.自定义主题 3.1 找到TopicMessageCodec,自定义主题如下图所示 3.2 自定义主题相关代码 jingkongtopicdata(xxx/xxx/*/**,ReportPropertyMessage.class,route - route.upstream(true).downstream(false).group(属性上报).description(上报xxx数据).example({\properties\:{\属性ID\:\属性值\}})), 3.3 改完之后需要添加到路由 找到JetLinksProtocolSupportProvider类按照下面的方式添加路由即可 4.重写解码方法 找到 JetLinksMqttDeviceMessageCodec类添加以下代码按照自己的方式进行数据解析这样就能拿到自己想要的mqtt数据了。 /*** * param context* return*/NonnullOverridepublic FluxDeviceMessage decode(Nonnull MessageDecodeContext context) {MqttMessage message (MqttMessage) context.getMessage();ReportPropertyMessage deviceMessage new ReportPropertyMessage();String topic message.getTopic();if (topic.contains(Login)){String replyTopic topic.replace(Post,PostRsp);}String topics[] topic.split(/);deviceMessage.setDeviceId(topics[2]);deviceMessage.setMessageId(String.valueOf(System.currentTimeMillis()));byte[] payload message.payloadAsBytes();String encoding UTF-8;String msg null;MapString,ObjectjingkongTmp null;try {msg new String(payload,encoding);MapString, Object map new HashMap();if (null!msg !msg.equals()){map.putAll(JSON.parseObject(msg, new TypeReferenceMapString, Object(){}));}JSONObject jsonObject JSONObject.parseObject(msg);JSONArray jsonArray jsonObject.getJSONArray(data);int len jsonArray.size();if (len 5){jingkongTmp new HashMap();Map mapString JSONObject.parseObject(msg,Map.class);jingkongTmp.put(dataReport1,mapString);deviceMessage.setProperties(jingkongTmp);System.out.println(json JSONObject.toJSONString(deviceMessage));}else {jingkongTmp new HashMap();Map mapString JSONObject.parseObject(msg,Map.class);jingkongTmp.put(dataReport2,mapString);deviceMessage.setProperties(jingkongTmp);System.out.println(json JSONObject.toJSONString(deviceMessage));}}catch (Exception e){e.getMessage();}return Flux.just(deviceMessage);}
5.以下是我解析后接收到的数据