HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
@@ -108,6 +108,8 @@ public static final String DELETE_REQUEST = "/base/%s/thing/topo/delete/request"; //网关响应退网通知 public static final String DELETE_NOTIFY = "/base/%s/thing/topo/delete/notify"; public static final String DELETE_NOTIFY_REPLY = "/base/%s/thing/topo/delete/notify_reply"; //网关物理删除(退网)子设备后上报 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java
@@ -9,7 +9,6 @@ public class ListOidRequest implements Serializable { private String oid; private String mac; public String getOid() { return oid; @@ -17,13 +16,5 @@ public void setOid(String oid) { this.oid = oid; } public String getMac() { return mac; } public void setMac(String mac) { this.mac = mac; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java
New file @@ -0,0 +1,29 @@ package com.hdl.sdk.connect.bean.request; import java.io.Serializable; /** * Created by Tong on 2022/09/23. */ public class ListOidRequest2 implements Serializable { private String oid; private String mac; public String getOid() { return oid; } public void setOid(String oid) { this.oid = oid; } public String getMac() { return mac; } public void setMac(String mac) { this.mac = mac; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
New file @@ -0,0 +1,62 @@ package com.hdl.sdk.connect.bean.response; import java.io.Serializable; import java.util.List; /** * Created by jlchen on 11/12/21. * * @Description : DeviceDeleteResponse */ public class DeviceDeleteResponse extends BaseResponse { private List<GatewayObjects> objects; public List<GatewayObjects> getObjects() { return objects; } public void setObjects(List<GatewayObjects> objects) { this.objects = objects; } public class GatewayObjects implements Serializable { private String device_name; private String oid; private boolean isSaveOidInfo; private boolean isDeletOidInfo; public String getOID() { return oid; } public void setOID(String value) { this.oid = value; } public String getDevice_name() { return device_name; } public void setDevice_name(String device_name) { this.device_name = device_name; } public boolean isSaveOidInfo() { return isSaveOidInfo; } public void setSaveOidInfo(boolean saveOidInfo) { isSaveOidInfo = saveOidInfo; } public boolean isDeletOidInfo() { return isDeletOidInfo; } public void setDeletOidInfo(boolean deletOidInfo) { isDeletOidInfo = deletOidInfo; } } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -17,6 +17,7 @@ import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.AuthenticateRequest; import com.hdl.sdk.connect.bean.response.DeviceDeleteResponse; import com.hdl.sdk.connect.bean.response.DeviceInfoResponse; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.config.HDLLinkConfig; @@ -194,7 +195,11 @@ response.setData(bodyString); LogUtils.i("接收到数据:" + response.getTopic() + "\r\n" + response.getData()); String receivetopic = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId()); String updateLocalSecret = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId()); String deleteNetwork = ""; if (HDLLinkConfig.getInstance().getDeviceInfoBean() != null) { deleteNetwork = String.format(TopicConstant.DELETE_NOTIFY, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()); } if (response.getTopic().equals("/user/all/custom/gateway/search")) { HDLAuthSocket.getInstance().UploadGatewayInfo(new HDLLinkCallBack() { @@ -208,7 +213,7 @@ LogUtils.i("UploadGatewayInfo onError"); } }); } else if (response.getTopic().equals(receivetopic)) { } else if (response.getTopic().equals(updateLocalSecret)) { try { DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() { }.getType()); @@ -220,13 +225,30 @@ mackey = SPUtils.getString("auth_mackey_key", ""); byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16)); String localSecret = new String(bodyBytes, "utf-8"); Log.d("panlili", "LinkMessageDecoder.java:----->localSecret= " + localSecret); HDLLinkConfig.getInstance().setLocalSecret(localSecret); } } } catch (Exception e) { LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage()); } } else if (response.getTopic().equals(deleteNetwork)) { try { DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceDeleteResponse>() { }.getType()); HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() { @Override public void onSuccess(String msg) { LogUtils.i("deleteNetwork onSucceed"); } @Override public void onError(HDLLinkException e) { LogUtils.i("deleteNetwork onError"); } }); } catch (Exception e) { LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage()); } } //非正常数据,返回 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
@@ -26,6 +26,7 @@ import com.hdl.sdk.connect.bean.request.DeviceAuthRequest; import com.hdl.sdk.connect.bean.request.GatewayInfoRequest; import com.hdl.sdk.connect.bean.request.ListOidRequest; import com.hdl.sdk.connect.bean.request.ListOidRequest2; import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.response.AuthenticateResponse; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; @@ -765,13 +766,13 @@ final String msgId = IdUtils.getUUId(); String time = String.valueOf(System.currentTimeMillis()); final BaseLocalResponse<List<ListOidRequest>> data = new BaseLocalResponse<>(); final BaseLocalResponse<List<ListOidRequest2>> data = new BaseLocalResponse<>(); data.setId(msgId); data.setTime_stamp(time); final ListOidRequest request = new ListOidRequest(); final ListOidRequest2 request = new ListOidRequest2(); request.setOid(oid); List<ListOidRequest> list = new ArrayList<>(); List<ListOidRequest2> list = new ArrayList<>(); list.add(request); data.setObjects(list); @@ -814,6 +815,64 @@ } } /** * 通知删除并退网子设备拓扑关系 * * @param oid 从网关(设备)oid * @param callBack 结果回调 */ public void deleteNetwork(String oid, HDLLinkCallBack callBack) { if (TextUtils.isEmpty(oid)) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); } final String msgId = IdUtils.getUUId(); String time = String.valueOf(System.currentTimeMillis()); final BaseLocalResponse<List<ListOidRequest>> data = new BaseLocalResponse<>(); data.setId(msgId); data.setTime_stamp(time); final ListOidRequest request = new ListOidRequest(); request.setOid(oid); List<ListOidRequest> list = new ArrayList<>(); list.add(request); data.setObjects(list); String topic = String.format(TopicConstant.DELETE_NOTIFY_REPLY, HDLLinkConfig.getInstance().getGatewayId()); LinkRequest message = new LinkRequest(topic, GsonConvert.getGson().toJson(data)); // String replyTopic = topic + "_reply"; try { sendMsg(message.getSendBytes(), topic, callBack, new SendListener() { @Override public void onSucceed() { if (callBack == null) return; try { callBack.onSuccess("退网成功"); HDLLinkConfig.getInstance().clearConfig(); } catch (Exception e) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); } } @Override public void onError() { if (callBack != null) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); } catch (Exception e) { if (callBack != null) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } } // /** // * 清空缓存 // */