diff --git a/src/main/java/com/lp/bean/XRsasnTag.java b/src/main/java/com/lp/bean/XRsasnTag.java index e11ad17..ed5f5d5 100644 --- a/src/main/java/com/lp/bean/XRsasnTag.java +++ b/src/main/java/com/lp/bean/XRsasnTag.java @@ -19,5 +19,12 @@ public class XRsasnTag { private Long ts ; private Float v ; - + + private String dev; + + private Integer valid; + + private String remark; + + private String sysid; } diff --git a/src/main/java/com/lp/bean/XRxasnProtocolMqtt.java b/src/main/java/com/lp/bean/XRxasnProtocolMqtt.java index a64a4c2..47ce010 100644 --- a/src/main/java/com/lp/bean/XRxasnProtocolMqtt.java +++ b/src/main/java/com/lp/bean/XRxasnProtocolMqtt.java @@ -19,10 +19,17 @@ public class XRxasnProtocolMqtt { private List devList = new ArrayList<>(); private Object devs; - + private Object data; + private String pKey ; private String sn ; private Long ts ; private String ver ; +// 下面字段用于接收下发控制 反馈消息 + +// type: info,status,history,timing,cmd/set + private String type ; + private String seq ; + } diff --git a/src/main/java/com/lp/mqtt/MessageHandler.java b/src/main/java/com/lp/mqtt/MessageHandler.java index 132e109..1c255e0 100644 --- a/src/main/java/com/lp/mqtt/MessageHandler.java +++ b/src/main/java/com/lp/mqtt/MessageHandler.java @@ -44,7 +44,7 @@ public class MessageHandler implements Runnable { // 小名智能协议 ProtocalFactory.getInstance("ProtocalMing").analysisData(topic, msg, message); } - else if( topic.startsWith("/edge") && topic.endsWith("/rtg") ){ + else if( topic.startsWith("/edge")){ // 小名智能协议 ProtocalFactory.getInstance("ProtocalXRxasn").analysisData(topic, msg, message); } diff --git a/src/main/java/com/lp/mqtt/protocol/ProtocalXRxasn.java b/src/main/java/com/lp/mqtt/protocol/ProtocalXRxasn.java index bb1e977..e76d71b 100644 --- a/src/main/java/com/lp/mqtt/protocol/ProtocalXRxasn.java +++ b/src/main/java/com/lp/mqtt/protocol/ProtocalXRxasn.java @@ -41,19 +41,35 @@ public class ProtocalXRxasn implements Iprotocal { List list = new ArrayList<>(); XRxasnProtocolMqtt xRxasnProtocolMqtt = JSON.parseObject(msg, XRxasnProtocolMqtt.class); - List xRsasnDevs = JSON.parseArray(xRxasnProtocolMqtt.getDevs().toString(), XRsasnDev.class); - xRsasnDevs.forEach(dev -> { - dev.getDev(); - List xRsasnTags = JSON.parseArray(dev.getD().toString(), XRsasnTag.class); - xRsasnTags.forEach(tag -> { - IotSensorInfoBO tp = new IotSensorInfoBO(); - tp.setSensor_device_id(dev.getDev() + "." + tag.getM()); -// tp.setPort_id(0); - tp.setSdata(tag.getV()); - list.add(tp); -// LogUtil4j.debugLogger.debug("get sensor {} from topic {}", dev.getDev() + "." + tag.getM(), topic); + if(ObjectUtil.isNotEmpty(xRxasnProtocolMqtt.getType()) && !topic.endsWith("/rtg")){ + if(topic.endsWith("cmd/set/cack")){ + XRsasnTag xRsasnTag = JSON.parseObject(xRxasnProtocolMqtt.getData().toString(), XRsasnTag.class); + if(xRsasnTag.getValid() == 1 && xRsasnTag.getRemark().equals("success")) { + IotSensorInfoBO tp = new IotSensorInfoBO(); + tp.setSensor_device_id(xRsasnTag.getDev() + "." + xRsasnTag.getM()); + tp.setSdata(xRsasnTag.getV()); + list.add(tp); + } + else return; + } + else return; + } else if (topic.endsWith("/rtg") && ObjectUtil.isEmpty(xRxasnProtocolMqtt.getType())) { + List xRsasnDevs = JSON.parseArray(xRxasnProtocolMqtt.getDevs().toString(), XRsasnDev.class); + xRsasnDevs.forEach(dev -> { + dev.getDev(); + List xRsasnTags = JSON.parseArray(dev.getD().toString(), XRsasnTag.class); + xRsasnTags.forEach(tag -> { + IotSensorInfoBO tp = new IotSensorInfoBO(); + tp.setSensor_device_id(dev.getDev() + "." + tag.getM()); + tp.setSdata(tag.getV()); + list.add(tp); + }); }); - }); + } + else { + LogUtil4j.LOGGER.info("msg from topic {} without sub", topic); + return; + } String deviceCode = xRxasnProtocolMqtt.getSn(); IotNodeInfoBO nodeInfo = ProCacheUtil.getCache(CacheName.NODEINFO_DEVICECODE, deviceCode ); @@ -87,7 +103,7 @@ public class ProtocalXRxasn implements Iprotocal { // 下发通知消息 IotNodeInfoBO iotNodeInfo = ProCacheUtil.getCache(CacheName.NODEINFO_DEVICECODE, deviceCode); - LogUtil4j.debugLogger.debug("sending update to web for {}", ObjectUtil.isNotEmpty(iotNodeInfo) ? iotNodeInfo.getScene_id() : null); +// LogUtil4j.debugLogger.debug("sending update to web for {}", ObjectUtil.isNotEmpty(iotNodeInfo) ? iotNodeInfo.getScene_id() : null); // websocket 发送消息 if(ObjectUtil.isNotEmpty(iotNodeInfo)){ String scene_id = ProCacheUtil.getCache(CacheName.SCENE_IPDATE_FLAG , "scene_" + iotNodeInfo.getScene_id() ); diff --git a/src/main/resources/config/mail.config.properties b/src/main/resources/config/mail.config.properties index 2787b9e..2193849 100644 --- a/src/main/resources/config/mail.config.properties +++ b/src/main/resources/config/mail.config.properties @@ -1,5 +1,3 @@ - - mail.host=smtp.yeah.net mail.port=465 mail.username= diff --git a/src/main/resources/config/map.config.properties b/src/main/resources/config/map.config.properties index 6283b28..ffc1d6a 100644 --- a/src/main/resources/config/map.config.properties +++ b/src/main/resources/config/map.config.properties @@ -1,2 +1 @@ - baidu.map.api.key=f84xfiBjzaCFapazazcgWo6QTIGX0n9e \ No newline at end of file diff --git a/src/main/resources/config/mqtt.config.properties b/src/main/resources/config/mqtt.config.properties index da257f2..cd8872d 100644 --- a/src/main/resources/config/mqtt.config.properties +++ b/src/main/resources/config/mqtt.config.properties @@ -1,4 +1,4 @@ -mqtt.clientId=aaaa +mqtt.clientId=seg_test mqtt.username=yinzy mqtt.password=yzy123456 mqtt.cleanSession=false @@ -7,4 +7,4 @@ mqtt.keepalive=3600 mqtt.timeout=30 mqtt.serverURI1=tcp://192.168.3.5:35883 mqtt.simpleURI=wss://iotadmin.segsvip.com/mqtt -mqtt.service.topic=/dev/coo/+,/edge/+/+/rtg,/sys/update/+ \ No newline at end of file +mqtt.service.topic=/dev/coo/+,/edge/#,/sys/update/+ \ No newline at end of file