hxb
2024-02-22 d451118d4be05f180cfe1f99bc5904f74db8cc3f
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/HDLLinkLocalSdk.java
@@ -2,6 +2,7 @@
import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -10,9 +11,11 @@
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.hdl.sdk.link.bean.GatewayLocationBean;
import com.hdl.sdk.link.bean.LinkGroupControlCreateBean;
import com.hdl.sdk.link.bean.LinkIrDeviceBean;
import com.hdl.sdk.link.bean.LinkOtaBean;
import com.hdl.sdk.link.bean.LinkSidNameBean;
import com.hdl.sdk.link.bean.MMWAreaBean;
import com.hdl.sdk.link.common.config.TopicConstant;
import com.hdl.sdk.link.common.exception.HDLLinkCode;
import com.hdl.sdk.link.common.exception.HDLLinkException;
@@ -91,7 +94,7 @@
        return instance;
    }
    private Context context;
    private static Context context;
    public void init(Context context) {
@@ -118,6 +121,26 @@
            return true;
        else
            return false;
    }
    public static void showToast(String msg){
//        runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                try {
//                    if (toast == null) {
//                        toast = Toast.makeText(HDLGlobal.getInstance().getContext(), message, Toast.LENGTH_SHORT);
//                    } else {
//                        toast.setText(message);
//                    }
//                    toast.show();
//                } catch (Exception ignored) {
//
//                }
//            }
//
//        });
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }
    /**
@@ -233,6 +256,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -277,6 +301,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -321,6 +346,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -365,6 +391,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -407,6 +434,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -417,6 +445,39 @@
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    public void controlDevice(Object object, String gatewayId, String ipAddress, String mac, boolean encrypt, HDLLinkTCallBack<String> callBack) {
        if (null == callBack) {
            return;
        }
        String time = String.valueOf(System.currentTimeMillis());
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id", IdUtils.getUUId());
        jsonObject.put("time_stamp", time);
        List<Object> stringList = new ArrayList<>();
        stringList.add(object);
        jsonObject.put("objects", stringList);
        String topic = String.format(TopicConstant.PROPERTY_DOWN, gatewayId);
        LinkRequest request = new LinkRequest(topic, jsonObject.toString(), encrypt);
        new HDLConnectHelper(ipAddress, request, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (msg instanceof LinkResponse) {
                    LogUtils.i("controlDevice onSuccess");
                    callBack.onSuccess("");
                }
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true, mac).send();
    }
    /**
@@ -448,6 +509,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -489,6 +551,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -528,6 +591,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -538,6 +602,36 @@
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    public void sidNameChange(List<LinkSidNameBean> bean, String gatewayId, String ipaddress, boolean isLocalEncrypt, HDLLinkTCallBack<String> callBack) {
        if (null == callBack) {
            return;
        }
        String time = String.valueOf(System.currentTimeMillis());
        final BaseLocalResponse<List<LinkSidNameBean>> data = new BaseLocalResponse<>();
        data.setId(IdUtils.getUUId());
        data.setTime_stamp(time);
        data.setObjects(bean);
        String topic = String.format(TopicConstant.EDIT_FUNCTION, gatewayId);
        LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), isLocalEncrypt);
        new HDLConnectHelper(ipaddress, request, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (msg instanceof LinkResponse) {
                    LogUtils.i("sidNameChange onSuccess");
                    callBack.onSuccess("");
                }
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true).send();
    }
    /**
@@ -567,6 +661,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -577,6 +672,39 @@
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * sid绑定房间
     */
    public void sidBindUid(List<LinkSidUidBean> bean, String gatewayId, String ipaddress, boolean isLocalEncrypt, HDLLinkTCallBack<String> callBack) {
        if (null == callBack) {
            return;
        }
        String time = String.valueOf(System.currentTimeMillis());
        final BaseLocalResponse<List<LinkSidUidBean>> data = new BaseLocalResponse<>();
        data.setId(IdUtils.getUUId());
        data.setTime_stamp(time);
        data.setObjects(bean);
        String topic = String.format(TopicConstant.SID_BIND_ROOM, gatewayId);
        LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), isLocalEncrypt);
        new HDLConnectHelper(ipaddress, request, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (msg instanceof LinkResponse) {
                    LogUtils.i("sidBindUid onSuccess");
                    callBack.onSuccess("Success");
                }
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true).send();
    }
    /**
@@ -606,6 +734,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -645,6 +774,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -685,6 +815,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -725,6 +856,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -773,6 +905,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -813,6 +946,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -862,6 +996,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -913,6 +1048,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -953,6 +1089,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -993,6 +1130,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1033,6 +1171,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1076,6 +1215,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1120,6 +1260,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1164,6 +1305,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1208,6 +1350,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1262,6 +1405,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1315,6 +1459,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1368,6 +1513,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1409,6 +1555,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1450,6 +1597,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1491,6 +1639,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1543,6 +1692,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1595,6 +1745,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1636,6 +1787,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1697,6 +1849,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1741,6 +1894,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1754,6 +1908,230 @@
        }
    }
    /**
     * 服务调用
     *
     * @param topic    主题
     * @param callBack 回调
     */
    public void serviceDown(String topic, JSONArray jsonArray, String ipAddress, boolean encrypt, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String time = String.valueOf(System.currentTimeMillis());
        final BaseLocalResponse<JSONArray> data = new BaseLocalResponse<>();
        data.setId(IdUtils.getUUId());
        data.setTime_stamp(time);
        data.setObjects(jsonArray);
        LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), encrypt);
        new HDLConnectHelper(ipAddress, request, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (msg instanceof LinkResponse) {
                    LogUtils.i("propertyRead onSuccess");
                    callBack.onSuccess(msg.toString());
                }
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true).send();
    }
    /**
     * 服务调用
     *
     * @param topic    主题
     * @param callBack 回调
     */
    public void serviceDown(String topic, JSONArray jsonArray, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<JSONArray> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            data.setObjects(jsonArray);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("propertyRead onSuccess");
                        callBack.onSuccess(msg.toString());
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 服务状态获取
     *
     * @param topic    主题
     * @param callBack 回调
     */
    public void serviceRead(String topic, JSONArray jsonArray, String ipAddress, boolean encrypt, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String time = String.valueOf(System.currentTimeMillis());
        final BaseLocalResponse<JSONArray> data = new BaseLocalResponse<>();
        data.setId(IdUtils.getUUId());
        data.setTime_stamp(time);
        data.setObjects(jsonArray);
        LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), encrypt);
        new HDLConnectHelper(ipAddress, request, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (msg instanceof LinkResponse) {
                    LogUtils.i("propertyRead onSuccess");
                    callBack.onSuccess(msg.toString());
                }
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true).send();
    }
    /**
     * 服务状态获取
     *
     * @param topic    主题
     * @param callBack 回调
     */
    public void serviceRead(String topic, JSONArray jsonArray, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<JSONArray> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            data.setObjects(jsonArray);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("propertyRead onSuccess");
                        callBack.onSuccess(msg.toString());
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 获取毫米波区域
     *
     * @param sid      请求参数 指定读取的设备sid
     * @param callBack 回调
     */
    public void getMillimeterArea(String sid, HDLLinkTCallBack<List<MMWAreaBean>> callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            List<PropertyReadRequest> list = new ArrayList<>();
            list.add(new PropertyReadRequest(sid));
            data.setObjects(list);
            String topic = String.format(TopicConstant.MMW_AREA_GET, gatewayId);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("propertyRead onSuccess");
                        Type type = new TypeToken<BaseLocalResponse<List<MMWAreaBean>>>() {
                        }.getType();
                        List<MMWAreaBean> list = LinkResponseUtils.convertLinkResponse(msg, type);
                        if (list == null) {
                            callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_PARSING_ERROR));
                        } else {
                            callBack.onSuccess(list);
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 读取状态
@@ -1787,12 +2165,20 @@
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("propertyRead onSuccess");
                        callBack.onSuccess(msg.toString());
                        Type type = new TypeToken<BaseLocalResponse<String>>() {
                        }.getType();
                        String list = LinkResponseUtils.convertLinkResponse(msg, type);
                        if (list == null) {
                            callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_PARSING_ERROR));
                        } else {
                            callBack.onSuccess(list);
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1804,6 +2190,58 @@
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 读取状态
     *
     * @param sids     请求参数 指定读取的设备sid列表
     * @param callBack 回调
     */
    public void propertyRead(List<String> sids, String gatewayId, String ipAddress, String mac, boolean encrypt, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String time = String.valueOf(System.currentTimeMillis());
        final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>();
        data.setId(IdUtils.getUUId());
        data.setTime_stamp(time);
        List<PropertyReadRequest> list = new ArrayList<>();
        for (String s : sids) {
            list.add(new PropertyReadRequest(s));
        }
        data.setObjects(list);
        String topic = String.format(TopicConstant.PROPERTY_READ, gatewayId);
        LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), encrypt);
        new HDLConnectHelper(ipAddress, request, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (msg instanceof LinkResponse) {
                    LogUtils.i("propertyRead onSuccess");
                    Type type = new TypeToken<BaseLocalResponse<String>>() {
                    }.getType();
                    String list = LinkResponseUtils.convertLinkResponse(msg, type);
                    if (list == null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_PARSING_ERROR));
                    } else {
                        callBack.onSuccess(list);
                    }
                }
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true, mac).send();
    }
    /**
@@ -1845,6 +2283,105 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    public void getSceneListaa(HDLLinkTCallBack<List<LinkSceneBean>> callBack) {
        if (null == callBack) {
            return;
        }
        if (!TextUtils.isEmpty("18FE8588AC73E526")) {
            String time = String.valueOf(System.currentTimeMillis());
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("id", IdUtils.getUUId());
            jsonObject.addProperty("time_stamp", time);
            String topic = String.format(TopicConstant.SCENE_LIST_GET, "18FE8588AC73E526");
            LinkRequest request = new LinkRequest(topic, jsonObject.toString(), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper("192.168.1.100", request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("getSceneList onSuccess");
                        if (callBack != null) {
                            Type type = new TypeToken<BaseLocalResponse<List<LinkSceneBean>>>() {
                            }.getType();
                            List<LinkSceneBean> list = LinkResponseUtils.convertLinkResponse(msg, type);
                            if (list == null) {
                                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_PARSING_ERROR));
                            } else {
                                callBack.onSuccess(list);
                            }
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    public void getSceneListAiks(GatewayBean bean, HDLLinkTCallBack<List<LinkSceneBean>> callBack) {
        if (null == callBack) {
            return;
        }
        if (!TextUtils.isEmpty(bean.getDevice_mac())) {
            String time = String.valueOf(System.currentTimeMillis());
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("id", IdUtils.getUUId());
            jsonObject.addProperty("time_stamp", time);
            String topic = String.format(TopicConstant.SCENE_LIST_GET, bean.getDevice_mac());
            LinkRequest request = new LinkRequest(topic, jsonObject.toString(), false);
            new HDLConnectHelper(bean.getIp_address(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("getSceneList onSuccess");
                        if (callBack != null) {
                            Type type = new TypeToken<BaseLocalResponse<List<LinkSceneBean>>>() {
                            }.getType();
                            List<LinkSceneBean> list = LinkResponseUtils.convertLinkResponse(msg, type);
                            if (list == null) {
                                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_PARSING_ERROR));
                            } else {
                                callBack.onSuccess(list);
                            }
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1896,6 +2433,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1944,6 +2482,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -1956,6 +2495,244 @@
            }
        }
    }
    /**
     * 场景控制
     *
     * @param sids     场景sid列表
     * @param callBack 回调
     */
    public void controlAiksScene(GatewayBean bean, List<String> sids, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String device_mac = bean.getDevice_mac();
        if (!TextUtils.isEmpty(device_mac)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            List<PropertyReadRequest> list = new ArrayList<>();
            for (String s : sids) {
                list.add(new PropertyReadRequest(s));
            }
            data.setObjects(list);
            String topic = String.format(TopicConstant.SCENE_CONTROL, device_mac);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), false);
            new HDLConnectHelper(bean.getIp_address(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("controlScene onSuccess");
                        callBack.onSuccess(msg.toString());
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 群控增删
     */
    public void groupControlEdit(List<LinkGroupControlCreateBean> list, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<LinkGroupControlCreateBean>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            data.setObjects(list);
            String topic = String.format(TopicConstant.GROUPCONTROL_EDIT, gatewayId);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("getSceneDetail onSuccess");
                        if (callBack != null) {
                            callBack.onSuccess(msg.toString());
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 群控控制
     */
    public void groupControlControl(JSONObject object, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<JSONObject>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            List<JSONObject> objectList = new ArrayList<>();
            objectList.add(object);
            data.setObjects(objectList);
            String topic = String.format(TopicConstant.GROUPCONTROL_CONTROL, gatewayId);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("getSceneDetail onSuccess");
                        if (callBack != null) {
                            callBack.onSuccess(msg.toString());
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 群控删除
     */
    public void groupControlDelete(JSONObject object, HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<JSONObject>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            List<JSONObject> objectList = new ArrayList<>();
            objectList.add(object);
            data.setObjects(objectList);
            String topic = String.format(TopicConstant.GROUPCONTROL_DELETE, gatewayId);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("getSceneDetail onSuccess");
                        if (callBack != null) {
                            callBack.onSuccess(msg.toString());
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                        HDLLinkLocalSdk.showToast(hdlLinkCode.getMsg());
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 群控列表获取
     */
    public void getGroupControlList(List<JSONObject> list, HDLLinkTCallBack<List<LinkGroupControlCreateBean>> callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<JSONObject>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            data.setObjects(list);
            String topic = String.format(TopicConstant.GROUPCONTROL_LIST_GET, gatewayId);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(data), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        LogUtils.i("getSceneDetail onSuccess");
                        if (callBack != null) {
                            Type type = new TypeToken<BaseLocalResponse<List<LinkGroupControlCreateBean>>>() {
                            }.getType();
                            List<LinkGroupControlCreateBean> list = LinkResponseUtils.convertLinkResponse(msg, type);
                            if (list == null) {
                                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_PARSING_ERROR));
                            } else {
                                callBack.onSuccess(list);
                            }
                        }
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 通用UDP发送指令
@@ -2042,6 +2819,9 @@
        HDLLinkLocalGateway.getInstance().refreshGateway(callBack);
    }
    public void refreshGateway(GatewayCallBack callBack,List<String> spks) {
        HDLLinkLocalGateway.getInstance().refreshGateway(callBack,spks);
    }
    /**
     * 获取当前住宅缓存的所有网关,一般是调试软件使用,三方不用调试此方法
     * 如果之前还没有读取过网关,先调用方法refreshGatewayByHome读取一次
@@ -2090,6 +2870,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -2133,6 +2914,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -2145,6 +2927,51 @@
            }
        }
    }
    /**
     * 全量更新房间列表
     *
     * @param callBack
     */
    public void getGatewaylist(HDLLinkCallBack callBack) {
        if (null == callBack) {
            return;
        }
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        if (!TextUtils.isEmpty(gatewayId)) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<JSONObject> senData = new BaseLocalResponse<>();
            senData.setId(IdUtils.getUUId());
            senData.setTime_stamp(time);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("device_mac", "0C811A93EA13F1F5");
            senData.setObjects(jsonObject);
            String topic = String.format(TopicConstant.GATEWAY_INFO, gatewayId);
            LinkRequest request = new LinkRequest(topic, GsonConvert.getGson().toJson(senData), HDLLinkConfig.getInstance().isLocalEncrypt());
            new HDLConnectHelper(HDLLinkConfig.getInstance().getIpAddress(), request, new HDLConnectHelper.HdlSocketListener() {
                @Override
                public void onSucceed(Object msg) {
                    if (msg instanceof LinkResponse) {
                        callBack.onSuccess(msg.toString());
                    }
                }
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
                }
            }, true).send();
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_NOT_EXIST));
            }
        }
    }
    /**
     * 获取房间绑定关系
@@ -2185,6 +3012,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
@@ -2230,6 +3058,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -2272,6 +3101,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }
@@ -2287,7 +3117,7 @@
    /**
     * 刚刚绑定网关的时候设置网关经纬度  不需要加密
     */
    public void gatewayLocation(String mGatewayId, String longitude, String lat, boolean isEncrypt,HDLLinkTCallBack<String> callBack) {
    public void gatewayLocation(String mGatewayId, String longitude, String lat, boolean isEncrypt, HDLLinkTCallBack<String> callBack) {
        if (null == callBack) {
            return;
        }
@@ -2314,6 +3144,7 @@
                @Override
                public void onFailure(HDLLinkCode hdlLinkCode) {
                    //HDLExceptionSubmitUtils.submit(topic, request, HDLLinkCopyException.getErrorWithCode(hdlLinkCode.getCode(), hdlLinkCode.getMsg()));
                    if (callBack != null) {
                        callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                    }