HDLSDK/.idea/gradle.xml
@@ -7,7 +7,7 @@ <option name="testRunner" value="GRADLE" /> <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="gradleJvm" value="JDK" /> <option name="gradleJvm" value="Embedded JDK" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> @@ -15,7 +15,6 @@ <option value="$PROJECT_DIR$/hdl-connect" /> </set> </option> <option name="resolveModulePerSourceSet" value="false" /> </GradleProjectSettings> </option> </component> HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -5,7 +5,6 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -18,7 +17,6 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -31,13 +29,16 @@ import com.hdl.sdk.common.event.DeleteNetworkListener; import com.hdl.sdk.common.event.EventListener; import com.hdl.sdk.common.exception.HDLLinkException; import com.hdl.sdk.common.utils.AllTopicManagerUtils; import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.HDLLink; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.AttributesRequest; import com.hdl.sdk.connect.bean.request.AuthenticateRequest; import com.hdl.sdk.connect.bean.request.DeviceControlRequest; import com.hdl.sdk.connect.bean.request.ListSidRequest; import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; import com.hdl.sdk.connect.bean.response.GatewaySearchBean; @@ -49,13 +50,11 @@ import com.hdl.sdk.connect.cloud.HDLException; import com.hdl.sdk.connect.config.HDLLinkConfig; import com.hdl.sdk.connect.socket.HDLAuthSocket; import com.hdl.sdk.connect.utils.AesUtil; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.Map; @@ -186,6 +185,8 @@ LogUtils.i("setDeleteNetworkListener onFailure"); } }); UploadSidList(); ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() { @Override @@ -808,6 +809,47 @@ }); } private void UploadSidList() { tv.setText("上报Sid列表..."); responseTv.setText(""); //1.设置设备信息 AuthenticateRequest.AuthenticateDeviceInfoBean authenticateDeviceInfoBean = HDLLinkConfig.getInstance().getDeviceInfoBean(); ListSidRequest request = new ListSidRequest(); request.setOid(authenticateDeviceInfoBean.getOID()); request.setName("sid名称"); request.setOmodel(authenticateDeviceInfoBean.getDeviceModel()); request.setSid("12345678");//当前sid的 request.setSpk("light.switch");//当前spk名称,根据实际设备来定义 request.setFrom(authenticateDeviceInfoBean.getOID());//来自哪个网关,如果时Link网络设备,则填自身oid;如果是驱动则不需要此字段 AttributesRequest attributes = new AttributesRequest(); attributes.setKey("on_off"); attributes.setData_type("string"); List<Object> valueList=new ArrayList<>(); valueList.add("on"); valueList.add("off"); attributes.setValue(valueList); //添加支持的属性列表 List<AttributesRequest> attributesList = new ArrayList<>(); request.setAttributes(attributesList); List<ListSidRequest> sidRequestList = new ArrayList<>(); sidRequestList.add(request); HDLLink.getInstance().UploadSidList(sidRequestList, new HDLLinkCallBack() { @Override public void onError(HDLLinkException error) { tv.setText(error.getMsg()); } @Override public void onSuccess(String data) { tv.setText("上报sid列表成功"); responseTv.setText(data); } }); } /** * 获取APP版本 * HDLSDK/com.hdl.sdk/.DS_StoreBinary files differ
HDLSDK/com.hdl.sdk/build.gradle
@@ -8,8 +8,8 @@ defaultConfig { minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 6 versionName "1.1.4" versionCode 115 versionName "1.1.5" } buildTypes { debug { HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java
@@ -1,10 +1,13 @@ package com.hdl.sdk.common; import android.content.Context; import android.text.TextUtils; import android.util.Log; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.event.EventListener; import com.hdl.sdk.common.exception.HDLLinkException; import com.hdl.sdk.common.utils.AllTopicManagerUtils; import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; @@ -32,7 +35,7 @@ return version; } private String version = "1.1.0"; private String version = "1.1.5"; private HDLSdk() { } @@ -46,10 +49,24 @@ } public void init(Context context) { if (this.context != null) { return; } this.context = context.getApplicationContext(); HDLAuthSocket.getInstance().init(); HDLSocket.getInstance().broadcastRequest(); LogUtils.i("HDLSdk Version:" + version); //订阅所有的主题 HDLLink.getInstance().registerAllTopicsListener(new EventListener() { @Override public void onMessage(Object msg) { if (msg == null || !(msg instanceof LinkResponse)) { return; } AllTopicManagerUtils.manager((LinkResponse) msg); } }); } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
@@ -121,5 +121,22 @@ //驱动上报oid列表回复 public static final String LIST_UPLOAD_REPLY = "/user/%s/custom/device/list/upload_reply"; /** * sid列表上报 */ public static final String LIST_SID_UPLOAD="/base/%s/thing/topo/list/upload"; /** * sid列表上报回复 */ public static final String LIST_SID_UPLOAD_REPLY="/base/%s/thing/topo/list/upload_reply"; /* * 网关编辑命令 * 写远程信息的,例如服务器地址、HomeId、密钥之类 * 与服务器相关的 * */ public static final String GATEWAY_EDIT_REMOTE = "/user/%s/custom/gateway/remote/edit"; public static final String GATEWAY_EDIT_REMOTE_REPLY = "/user/%s/custom/gateway/remote/edit_reply"; } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
New file @@ -0,0 +1,121 @@ package com.hdl.sdk.common.utils; import android.text.TextUtils; import com.google.gson.reflect.TypeToken; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.GatewayRemoteEditRequest; import com.hdl.sdk.connect.bean.response.DeviceInfoResponse; import com.hdl.sdk.connect.config.HDLLinkConfig; import com.hdl.sdk.connect.socket.HDLSocket; import java.time.chrono.IsoChronology; /** * Created by hxb on 2023/9/14. */ public class AllTopicManagerUtils { /** * 全局主题处理方法,可以处理所有接收到的数据 * * @param linkResponse */ public static void manager(LinkResponse linkResponse) { try { String topic = linkResponse.getTopic(); if (TextUtils.isEmpty(topic)) { return; } String[] topics = topic.split("/"); //非当前住宅网关的数据返回 if (topics.length < 3) { return; } String mac_Oid_GatewayId = topics[2]; if(!isLocalDevice(mac_Oid_GatewayId)){ LogUtils.i("不是当前设备的网关Id,Id是"+mac_Oid_GatewayId); //非当前设备的数据 return; } if(isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE,topic)){ gatewayRemoteEditRequest(mac_Oid_GatewayId, linkResponse.getData()); } //TODO 通过增加if else 增加其它主题类似这样使用 } catch (Exception e) { LogUtils.e("全局处理模块异常:" + e.getMessage()); } } /** * 是否当前的设备 * @param mac_Oid_GatewayId * @return */ private static boolean isLocalDevice(String mac_Oid_GatewayId) { if (TextUtils.isEmpty(mac_Oid_GatewayId)) { return false; } String mac = HDLLinkConfig.getInstance().getDeviceInfoBean().getDeviceMAC(); String oid = "123";//HDLLinkConfig.getInstance().getDeviceInfoBean().getOID(); String gatewayId = HDLLinkConfig.getInstance().getGatewayId(); return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId); } /** * 是否相同主题 * @param targetTopic 目标的主题 * @param sourceTopic 接收的主题 * @return */ private static boolean isSameTopic(String targetTopic,String sourceTopic) { if (TextUtils.isEmpty(targetTopic) || TextUtils.isEmpty(sourceTopic)) { return false; } String[] targetTopics = targetTopic.split("/"); String[] sourceTopics = sourceTopic.split("/"); if (targetTopics.length != sourceTopics.length) { return false; } for (int i = 0; i < targetTopics.length; i++) { if(i==2){ //这个位置不匹配,是网关id continue; } if (!targetTopics[i] .equals( sourceTopics[i])) { return false; } } return true; } /** * 网关信息配置 * @param body */ private static void gatewayRemoteEditRequest(String mac_Oid_GatewayId,String body) { if (TextUtils.isEmpty(body)) { return; } GatewayRemoteEditRequest gatewayRemoteEditRequest = GsonConvert.getGson().fromJson(body, new TypeToken<GatewayRemoteEditRequest>() { }.getType()); if (gatewayRemoteEditRequest == null || gatewayRemoteEditRequest.getObjects() == null) { return; } String homeId = gatewayRemoteEditRequest.getObjects().getHomeId(); HDLLinkConfig.getInstance().setHomeId(homeId); HDLSocket.getInstance().gatewayRemoteEditReply(mac_Oid_GatewayId, gatewayRemoteEditRequest.getId(), null); } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
@@ -8,6 +8,7 @@ import com.hdl.sdk.common.utils.ThreadToolUtils; import com.hdl.sdk.connect.bean.request.DeviceAuthRequest; import com.hdl.sdk.connect.bean.request.DeviceControlRequest; import com.hdl.sdk.connect.bean.request.ListSidRequest; import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack; @@ -321,6 +322,16 @@ } /** * 上报sid列表 * * @param requestList sid列表 * @param callBack 回调 */ public void UploadSidList(List<ListSidRequest> requestList, HDLLinkCallBack callBack) { HDLSocket.getInstance().UploadSidList(requestList, callBack); } /** * 通用UDP发送指令 * 1秒没响应就让他重新发送,重试3次 * HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java
New file @@ -0,0 +1,37 @@ package com.hdl.sdk.connect.bean.request; import java.io.Serializable; import java.util.List; /** * Created by hxb on 2023/9/14. */ public class AttributesRequest implements Serializable { private String key;//key名称 private String data_type;//数据类型 private List<Object> value;//值 public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getData_type() { return data_type; } public void setData_type(String data_type) { this.data_type = data_type; } public List<Object> getValue() { return value; } public void setValue(List<Object> value) { this.value = value; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java
New file @@ -0,0 +1,30 @@ package com.hdl.sdk.connect.bean.request; import java.io.Serializable; /** * Created by jlchen on 11/15/21. * * @Description : BaseResponse */ public class BaseRequest implements Serializable { private String id; private String time_stamp; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTime_stamp() { return time_stamp; } public void setTime_stamp(String time_stamp) { this.time_stamp = time_stamp; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java
@@ -23,6 +23,8 @@ private String master; private boolean isLocalEncrypt; private String homeId; public String getOid() { return oid; } @@ -126,4 +128,12 @@ public void setLocalEncrypt(boolean localEncrypt) { isLocalEncrypt = localEncrypt; } public String getHomeId() { return homeId; } public void setHomeId(String homeId) { this.homeId = homeId; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java
New file @@ -0,0 +1,49 @@ package com.hdl.sdk.connect.bean.request; import java.io.Serializable; /** * Created by hxb on 2023/9/14. */ public class GatewayRemoteEditRequest extends BaseRequest { private GatewayObjects objects; public GatewayObjects getObjects() { return objects; } public void setObjects(GatewayObjects value) { this.objects = value; } public static class GatewayObjects implements Serializable { /** * 住宅Id */ private String homeId; /** * 服务器地址 */ private String server_addr; public String getHomeId() { return homeId; } public void setHomeId(String homeId) { this.homeId = homeId; } public String getServer_addr() { return server_addr; } public void setServer_addr(String server_addr) { this.server_addr = server_addr; } } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java
New file @@ -0,0 +1,107 @@ package com.hdl.sdk.connect.bean.request; import java.util.List; /** * Created by panlili on 2023/1/31 * description:获取sid列表 */ public class ListSidRequest { /** * 是否在线 */ private String online; /** * 父oid */ private String from; /** * 支持的属性列表 */ private List<AttributesRequest> attributes; /** * sid */ private String sid; /** * spk */ private String spk; /** * 当前oid */ private String oid;//设备的Oid /** * 回路备注 */ private String name; /** * 模块信息 */ private String omodel; public String getOid() { return oid; } public void setOid(String oid) { this.oid = oid; } public String getOnline() { return online; } public void setOnline(String online) { this.online = online; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public List<AttributesRequest> getAttributes() { return attributes; } public void setAttributes(List<AttributesRequest> attributes) { this.attributes = attributes; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getSpk() { return spk; } public void setSpk(String spk) { this.spk = spk; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getOmodel() { return omodel; } public void setOmodel(String omodel) { this.omodel = omodel; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java
@@ -32,7 +32,7 @@ this.ip_address = ip_address; } public class Auth implements Serializable { public static class Auth implements Serializable { private String localSecret; public String getLocalSecret() { return localSecret; } @@ -42,10 +42,12 @@ } public class GatewayObjects implements Serializable { public static class GatewayObjects implements Serializable { private String ip_address; private String gatewayId; private String oid; private String homeId; public String getIPAddress() { return ip_address; } public void setIPAddress(String value) { @@ -59,6 +61,14 @@ public String getOID() { return oid; } public void setOID(String value) { this.oid = value; } public String getHomeId() { return homeId; } public void setHomeId(String homeId) { this.homeId = homeId; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
@@ -19,7 +19,7 @@ this.objects = objects; } public class GatewayObjects implements Serializable { public static class GatewayObjects implements Serializable { private String device_name; private String oid; private boolean isSaveOidInfo; HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java
@@ -18,7 +18,7 @@ this.objects = value; } public class GatewayObjects implements Serializable { public static class GatewayObjects implements Serializable { private String ip_address; private String gatewayId; private String oid; HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java
@@ -10,6 +10,11 @@ private String oid; private String homeId; /** * 需要入网从机mac */ private String slave_mac; public String getIPAddress() { return ip_address; } public void setIPAddress(String value) { this.ip_address = value; } @@ -18,4 +23,12 @@ public String getHomeID() { return homeId; } public void setHomeID(String value) { this.homeId = value; } public String getSlave_mac() { return slave_mac; } public void setSlave_mac(String slave_mac) { this.slave_mac = slave_mac; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
@@ -21,11 +21,14 @@ private static final String AUTHENTICATE_IS_LS_KEY = "auth_isls_key"; public static final String AUTHENTICATE_IS_DEVICEINFO_KEY = "auth_deviceinfo_key"; public static final String GATEWAY_REMOTEINFO_KEY="gateway_remoteinfo_key"; private String localSecret;//本地加密密钥 private String gatewayId; private String ipAddress; private GatewaySearchBean currentGateway;//当前网关 private String networkName; private String homeId; private AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean;//当前设备基本信息 private AuthenticateRequest.RequestBean requestBean;//当前设备基本信息 @@ -64,10 +67,12 @@ this.gatewayId = ""; this.ipAddress = ""; this.localSecret = ""; this.homeId=""; SPUtils.remove(AUTHENTICATE_LS_KEY); SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY); SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY); SPUtils.remove(AUTHENTICATE_IS_LS_KEY); SPUtils.remove(GATEWAY_REMOTEINFO_KEY); } /** @@ -77,6 +82,7 @@ localSecret = SPUtils.getString(AUTHENTICATE_LS_KEY, ""); gatewayId = SPUtils.getString(AUTHENTICATE_GATEWAYID_KEY, ""); ipAddress = SPUtils.getString(AUTHENTICATE_IPADDRESS_KEY, ""); homeId = SPUtils.getString(GATEWAY_REMOTEINFO_KEY, ""); } /** @@ -93,6 +99,7 @@ SPUtils.put(AUTHENTICATE_LS_KEY, localSecret); SPUtils.put(AUTHENTICATE_GATEWAYID_KEY, gatewayId); SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress); } /** @@ -189,6 +196,9 @@ public AuthenticateRequest.AuthenticateDeviceInfoBean getDeviceInfoBean() { AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = (AuthenticateRequest.AuthenticateDeviceInfoBean) SPUtils.getSerializableEntity(AUTHENTICATE_IS_DEVICEINFO_KEY); if(infoBean==null){ infoBean= new AuthenticateRequest.AuthenticateDeviceInfoBean(); } return infoBean; } @@ -212,4 +222,13 @@ public void setAuthBean(AuthenticateRequest.AuthBean authBean) { this.authBean = authBean; } public String getHomeId() { return homeId; } public void setHomeId(String homeId) { this.homeId = homeId; SPUtils.put(GATEWAY_REMOTEINFO_KEY, homeId); } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -215,7 +215,8 @@ LogUtils.i("UploadGatewayInfo onError"); } }); } else if (response.getTopic().equals(updateLocalSecret) || response.getTopic().equals(TopicConstant.LINK_BROADCAST)) { } else if (response.getTopic().equals(updateLocalSecret) || response.getTopic().equals(TopicConstant.LINK_BROADCAST)) { try { DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() { }.getType()); HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -148,19 +148,29 @@ EventDispatcher.getInstance().register(TopicConstant.GATEWAY_AUTH_BROADCAST, new EventListener() { @Override public void onMessage(Object msg) { LogUtils.i("收到网关认证信息: "); NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg); if (bean != null) { //移除监听 EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST); LogUtils.i("网关入网广播IP: " + bean.getIPAddress()); HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress()); String ipStr = bean.getIPAddress(); if (!TextUtils.isEmpty(ipStr)) { sendAuthenticateRequest(ipStr, request, callBack); try { LogUtils.i("收到网关认证信息: "); NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg); if (bean != null) { LogUtils.i("网关入网广播IP: " + bean.getIPAddress()); if (!TextUtils.isEmpty(bean.getSlave_mac())) { if (!bean.getSlave_mac().equals(request.getObjects().getDeviceMAC())) { LogUtils.i("入网验证的mac和本机不一样,请求的MAC是"+bean.getSlave_mac()+" 本机的是"+request.getObjects().getDeviceMAC()); return; } } //移除监听 EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST); HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress()); String ipStr = bean.getIPAddress(); if (!TextUtils.isEmpty(ipStr)) { sendAuthenticateRequest(ipStr, request, callBack); } } } }catch (Exception e){ LogUtils.e("入网验证异常",e.getMessage()); } } }); } @@ -205,6 +215,7 @@ request.setIp_address(authenticateDeviceInfoBean.getIPAddress()); request.setMaster("false"); request.setLocalEncrypt(false); request.setHomeId(HDLLinkConfig.getInstance().getHomeId()); data.setObjects(request); @@ -258,16 +269,21 @@ String localSecret = ""; String gatewayId = ""; String ipAddress = ""; String homeId=""; if (bean.getAuth() != null) { localSecret = bean.getAuth().getLocalSecret(); } if (bean.getObjects() != null) { gatewayId = bean.getObjects().getGatewayID(); ipAddress = bean.getObjects().getIPAddress(); homeId=bean.getObjects().getHomeId(); } if (ipAddress == null) { ipAddress = bean.getIp_address(); } if(!TextUtils.isEmpty(homeId)){ HDLLinkConfig.getInstance().setHomeId(homeId); } HDLLinkConfig.getInstance().setAuthBean(request.getAuth()); //判断网关是否已经注册到云端 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
@@ -29,6 +29,7 @@ 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.ListSidRequest; import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.response.AuthenticateResponse; import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse; @@ -698,6 +699,52 @@ } /** * 上报Sid列表 * * @param requestList sid列表 * @param callBack 回调 */ public void UploadSidList(List<ListSidRequest> requestList, HDLLinkCallBack callBack) { if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { String time = String.valueOf(System.currentTimeMillis()); final BaseLocalResponse<List<ListSidRequest>> data = new BaseLocalResponse<>(); data.setId(IdUtils.getUUId()); data.setTime_stamp(time); data.setObjects(requestList); String topic = String.format(TopicConstant.LIST_SID_UPLOAD, getGatewayId()); LinkRequest message = new LinkRequest(topic, GsonConvert.getGson().toJson(data)); String replyTopic = topic + "_reply"; try { sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { } @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)); } } } else { if (callBack != null) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } } /** * 上报入网认证结果 * * @param mac mac @@ -1067,4 +1114,56 @@ } /** * 回复网关配置命令 * @param mac_Oid_GatewayId * @param msgId 消息Id * @param callBack */ public void gatewayRemoteEditReply(String mac_Oid_GatewayId, String msgId, HDLLinkCallBack callBack) { if (TextUtils.isEmpty(mac_Oid_GatewayId)) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); } String time = String.valueOf(System.currentTimeMillis()); final BaseLocalCodeResponse<List<String>> data = new BaseLocalCodeResponse<>(); data.setId(msgId); data.setTime_stamp(time); data.setCode("0"); String topic = String.format(TopicConstant.GATEWAY_EDIT_REMOTE_REPLY, mac_Oid_GatewayId); LinkRequest message = new LinkRequest(topic, GsonConvert.getGson().toJson(data)); 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)); } } } }