From 86116427931cc724ae1e3105738a34e0619ca287 Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期二, 04 四月 2023 16:12:47 +0800 Subject: [PATCH] 增加网关未上云密钥为空的问题处理 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 199 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 195 insertions(+), 4 deletions(-) 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 de555ec..47d5f92 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 @@ -1,10 +1,14 @@ package com.hdl.sdk.connect.socket; +import android.os.Build; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.RequiresApi; + import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.hdl.sdk.common.HDLSdk; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.event.EventDispatcher; import com.hdl.sdk.common.event.EventListener; @@ -17,7 +21,12 @@ import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.HDLLink; import com.hdl.sdk.connect.bean.LoginRequest; +import com.hdl.sdk.connect.bean.request.AuthenticateRequest; import com.hdl.sdk.connect.bean.request.BroadcastRequest; +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.ListUploadRequest; import com.hdl.sdk.connect.bean.response.AuthenticateResponse; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; import com.hdl.sdk.connect.bean.request.DeviceControlRequest; @@ -31,6 +40,7 @@ import com.hdl.sdk.connect.config.HDLLinkConfig; import com.hdl.sdk.connect.protocol.LinkMessageDecoder; import com.hdl.sdk.connect.protocol.LinkMessageEncoder; +import com.hdl.sdk.connect.utils.AesUtil; import com.hdl.sdk.socket.SocketBoot; import com.hdl.sdk.socket.SocketOptions; import com.hdl.sdk.socket.client.IHeartbeat; @@ -40,6 +50,7 @@ import com.hdl.sdk.socket.listener.SendListener; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -95,7 +106,7 @@ Thread.sleep(1000); // LogUtils.i("checkIfCertified=" + HDLLink.getInstance().checkIfCertified() + " getTcp().connected=" + getTcp().connected); try { - if (!HDLLink.getInstance().checkIfCertified() || getTcp().connected) { + if (!HDLLink.getInstance().checkIfCertified() || (!TextUtils.isEmpty(getTcpIp()) && getTcp().connected)) { continue; } } catch (Exception e) { @@ -109,24 +120,28 @@ } BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200"); HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() { + @RequiresApi(api = Build.VERSION_CODES.O) @Override public void onSuccess(LinkResponse msg) { - getTcp(); String data = msg.getData(); if (!TextUtils.isEmpty(data)) { DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() { }.getType()); HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress()); + LogUtils.i("---getIpAddress=" + HDLLinkConfig.getInstance().getIpAddress()); + HDLLinkConfig.getInstance().reSaveConfig(); } + isBroadcast = true; + getTcp(); LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�"); } @Override public void onError(HDLLinkException e) { isBroadcast = false; - LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�"); + LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�---onError=" + e.toString()); } }); // HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); @@ -470,6 +485,10 @@ jsonObject.addProperty("id", IdUtils.getUUId()); jsonObject.addProperty("time_stamp", time); + if (HDLLinkConfig.getInstance().getRequestBean() != null) { + jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC()); + } + String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()); LinkRequest message = new LinkRequest(topic, @@ -574,6 +593,114 @@ } /** + * 涓婃姤oid鍒楄〃 + * + * @param request 璁惧淇℃伅 + * @param callBack 鍥炶皟 + */ + public void UploadOidList(ListUploadRequest request, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListUploadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + List<ListUploadRequest> list = new ArrayList<>(); + list.add(request); + + data.setObjects(list); + + String topic = String.format(TopicConstant.LIST_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 + * @param result 缁撴灉0/-1 + * @param message 璁よ瘉淇℃伅 + * @param auth_code 浜戠璁よ瘉code + * @param callBack 缁撴灉鍥炶皟 + */ + public void UploadDeviceAuth(String mac, String result, String message, String auth_code, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<DeviceAuthRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + DeviceAuthRequest deviceAuthRequest = new DeviceAuthRequest(); + deviceAuthRequest.setMac(mac); + deviceAuthRequest.setResult(result); + deviceAuthRequest.setMessage(message); + deviceAuthRequest.setAuth_code(auth_code); + + List<DeviceAuthRequest> list = new ArrayList<>(); + list.add(deviceAuthRequest); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DEIVCE_AUTH_RESULT_NOTIFY, getGatewayId()); + LinkRequest linkRequest = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(linkRequest.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)); + } + } + } + + + /** * tcp鐧诲綍鏂逛究鑾峰彇鐘舵�� * * @param clientType 瀹㈡埛绔被鍨� @@ -607,6 +734,70 @@ @Override public void onSucceed() { LogUtils.i("tcpLogin 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)); + } + } + } + + + /** + * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧 + * + * @param oid 浠庣綉鍏筹紙璁惧锛塷id + * @param isForce 鏄惁寮哄埗閫�缃� + * @param callBack 缁撴灉鍥炶皟 + */ + public void deleteNetwork(String oid, boolean isForce, 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_REQUEST, HDLLinkConfig.getInstance().getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + + if (isForce) {//寮哄埗閫�缃戯紝涓嶇瓑缃戝叧鍥炲鐩存帴娓呴櫎鏁版嵁 + HDLLinkConfig.getInstance().clearConfig(); + } + + try { + sendMsg(message.getSendBytes(), replyTopic, 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 @@ -672,7 +863,7 @@ public void tcpSendMsg(String topic, String bodyStr) { try { if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) { - LogUtils.e("udpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); + LogUtils.e("tcpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); return; } LinkRequest message = new LinkRequest(topic, bodyStr); -- Gitblit v1.8.0