feat:新增mqtt指令反馈的处理功能,这样可以实时的在界面看到下发的效果

dev
kale 2023-06-03 06:47:14 +08:00
parent f9ac059632
commit 272e8006a7
7 changed files with 48 additions and 21 deletions

View File

@ -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;
}

View File

@ -19,10 +19,17 @@ public class XRxasnProtocolMqtt {
private List<XRsasnDev> 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 ;
}

View File

@ -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);
}

View File

@ -41,19 +41,35 @@ public class ProtocalXRxasn implements Iprotocal {
List<IotSensorInfoBO> list = new ArrayList<>();
XRxasnProtocolMqtt xRxasnProtocolMqtt = JSON.parseObject(msg, XRxasnProtocolMqtt.class);
List<XRsasnDev> xRsasnDevs = JSON.parseArray(xRxasnProtocolMqtt.getDevs().toString(), XRsasnDev.class);
xRsasnDevs.forEach(dev -> {
dev.getDev();
List<XRsasnTag> 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<XRsasnDev> xRsasnDevs = JSON.parseArray(xRxasnProtocolMqtt.getDevs().toString(), XRsasnDev.class);
xRsasnDevs.forEach(dev -> {
dev.getDev();
List<XRsasnTag> 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() );

View File

@ -1,5 +1,3 @@
mail.host=smtp.yeah.net
mail.port=465
mail.username=

View File

@ -1,2 +1 @@
baidu.map.api.key=f84xfiBjzaCFapazazcgWo6QTIGX0n9e

View File

@ -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/+
mqtt.service.topic=/dev/coo/+,/edge/#,/sys/update/+