From c84efd301bac95180aa3507a8a9a1c53068c8bb9 Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期五, 15 九月 2023 09:45:03 +0800 Subject: [PATCH] Merge branch 'androidx' of ssh://172.16.1.23:29718/~cjl/HDLSDK_A_Android into androidx --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java | 10 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java | 19 + HDLSDK/.idea/gradle.xml | 3 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java | 13 + HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java | 121 +++++++++++ HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java | 3 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 99 +++++++++ HDLSDK/com.hdl.sdk/.DS_Store | 0 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java | 49 ++++ HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java | 107 +++++++++ HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java | 14 + HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java | 11 + HDLSDK/com.hdl.sdk/build.gradle | 4 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java | 37 +++ HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java | 38 ++- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java | 17 + HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java | 2 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java | 2 HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | 50 ++++ HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java | 19 + HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java | 30 ++ 21 files changed, 623 insertions(+), 25 deletions(-) diff --git a/HDLSDK/.idea/gradle.xml b/HDLSDK/.idea/gradle.xml index 92c877d..83ca1a0 100644 --- a/HDLSDK/.idea/gradle.xml +++ b/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> diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java index d650ead..e22e886 100644 --- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java +++ b/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缃戠粶璁惧锛屽垯濉嚜韬玱id锛涘鏋滄槸椹卞姩鍒欎笉闇�瑕佹瀛楁 + + 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鐗堟湰 * diff --git a/HDLSDK/com.hdl.sdk/.DS_Store b/HDLSDK/com.hdl.sdk/.DS_Store new file mode 100644 index 0000000..47c4fb9 --- /dev/null +++ b/HDLSDK/com.hdl.sdk/.DS_Store Binary files differ diff --git a/HDLSDK/com.hdl.sdk/build.gradle b/HDLSDK/com.hdl.sdk/build.gradle index 00a22db..ec71b05 100644 --- a/HDLSDK/com.hdl.sdk/build.gradle +++ b/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 { diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java index 1db547c..a60b0d7 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java +++ b/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); + } + }); } diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java index 4ad39ac..dd52c06 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java +++ b/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"; + + /* + * 缃戝叧缂栬緫鍛戒护 + * 鍐欒繙绋嬩俊鎭殑锛屼緥濡傛湇鍔″櫒鍦板潃銆丠omeId銆佸瘑閽ヤ箣绫� + * 涓庢湇鍔″櫒鐩稿叧鐨� + * */ + 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"; } diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java new file mode 100644 index 0000000..398429a --- /dev/null +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java @@ -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("涓嶆槸褰撳墠璁惧鐨勭綉鍏矷d锛孖d鏄�"+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){ + //杩欎釜浣嶇疆涓嶅尮閰嶏紝鏄綉鍏砳d + 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); + } +} diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java index 9ee990e..83f0ec7 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java +++ b/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娆� * diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java new file mode 100644 index 0000000..9dbf607 --- /dev/null +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java @@ -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; + } +} diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java new file mode 100644 index 0000000..5bebfcc --- /dev/null +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java @@ -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; + } +} diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java index c750cc2..aa64270 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java +++ b/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; + } } diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java new file mode 100644 index 0000000..54681ba --- /dev/null +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java @@ -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; + } + } + + +} \ No newline at end of file diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java new file mode 100644 index 0000000..dad2ac4 --- /dev/null +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java @@ -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; + /** + * 鐖秓id + */ + private String from; + /** + * 鏀寔鐨勫睘鎬у垪琛� + */ + private List<AttributesRequest> attributes; + /** + * sid + */ + private String sid; + /** + * spk + */ + private String spk; + /** + * 褰撳墠oid + */ + private String oid;//璁惧鐨凮id + /** + * 鍥炶矾澶囨敞 + */ + 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; + } +} diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java index 1efcb5d..3c8e3f3 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java +++ b/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; + } } diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java index 1e9d43c..53f5385 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java +++ b/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; diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java index a819363..00349bd 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java +++ b/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; diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java index 8478008..d2faf10 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java @@ -10,6 +10,11 @@ private String oid; private String homeId; + /** + * 闇�瑕佸叆缃戜粠鏈簃ac + */ + 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; + } } diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java index 5ccf25d..1b882f7 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java +++ b/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); + } } diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java index 4e2cbb0..71438aa 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java +++ b/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()); diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java index 595c20b..bd4045c 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java +++ b/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("鍏ョ綉楠岃瘉鐨刴ac鍜屾湰鏈轰笉涓�鏍凤紝璇锋眰鐨凪AC鏄�"+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()); //鍒ゆ柇缃戝叧鏄惁宸茬粡娉ㄥ唽鍒颁簯绔� diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java index 977fa55..14f9b6e 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java +++ b/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)); + } + } + } + } -- Gitblit v1.8.0