panlili2024
2025-03-19 7c8ce9b9a7d3fc1aaa4a621e86415b25ad10a34f
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
@@ -28,6 +28,7 @@
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.request.LogicEnableRequest;
import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse;
import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
@@ -45,6 +46,7 @@
import com.hdl.sdk.socket.listener.ConnectStatusListener;
import com.hdl.sdk.socket.listener.SendListener;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
@@ -479,25 +481,30 @@
                @Override
                public void heartbeat() {
                    if (HDLLinkConfig.getInstance().getDeviceInfoBean() == null || HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) {
                        LogUtils.i("DeviceInfoBean为空,需要设置才能正常心跳");
                        return;
                    }
                    String time = String.valueOf(System.currentTimeMillis());
                    JsonObject jsonObject = new JsonObject();
                    jsonObject.addProperty("id", IdUtils.getUUId());
                    jsonObject.addProperty("time_stamp", time);
                    if (HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) {
                        //不走从机入网,通过gatewayId发送
                        if (HDLLinkConfig.getInstance().getGatewayId() == null) {
                            return;
                        }
                        String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getGatewayId());
                        LinkRequest message = new LinkRequest(topic,
                                jsonObject.toString());
                        sendMsg(message.getSendBytes(), null, null, null);
                    if (HDLLinkConfig.getInstance().getRequestBean() != null) {
                        jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC());
                    } else {
                        if (HDLLinkConfig.getInstance().getRequestBean() != null) {
                            jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC());
                        }
                        //走从机入网,通过oid发送
                        String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
                        LinkRequest message = new LinkRequest(topic,
                                jsonObject.toString());
                        sendMsg(message.getSendBytes(), null, null, null);
                    }
                    String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
                    LinkRequest message = new LinkRequest(topic,
                            jsonObject.toString());
                    sendMsg(message.getSendBytes(), null, null, null);
                }
            });
        }
@@ -547,7 +554,7 @@
    }
    /**
     * 获取场景列表
     * 获取场景详情
     */
    public void getScene(List<String> sids, HDLLinkCallBack callBack) {
        if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
@@ -1168,4 +1175,180 @@
        }
    }
    /**
     * 获取房间列表
     */
    public void getRoomList(HDLLinkCallBack callBack) {
        if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
            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.ROOM_LIST_GET, getGatewayId());
            LinkRequest message = new LinkRequest(topic,
                    jsonObject.toString());
            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_GET_FUNCTION_LIST_ERROR));
                        }
                    }
                });
            } catch (Exception e) {
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
                }
            }
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
            }
        }
    }
    /**
     * 房间绑定关系列表获取
     */
    public void getRoomBindList(List<String> uid, HDLLinkCallBack callBack) {
        if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<String>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            data.setObjects(uid);
            String topic = String.format(TopicConstant.ROOM_BIND_LIST_GET, 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_GET_FUNCTION_LIST_ERROR));
                        }
                    }
                });
            } catch (Exception e) {
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
                }
            }
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
            }
        }
    }
    /**
     * 获取自动化列表
     */
    public void getLogicList(HDLLinkCallBack callBack) {
        if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
            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.LOGIC_LIST_GET, getGatewayId());
            LinkRequest message = new LinkRequest(topic,
                    jsonObject.toString());
            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_GET_FUNCTION_LIST_ERROR));
                        }
                    }
                });
            } catch (Exception e) {
                if (callBack != null) {
                    callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
                }
            }
        } else {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
            }
        }
    }
    /**
     * ⾃动化启⽤禁⽤
     *
     * @param sid      自动化sid
     * @param enable   true=启⽤ false=禁⽤
     * @param callBack 回调
     */
    public void editEnableLogic(String sid, boolean enable, HDLLinkCallBack callBack) {
        if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
            String time = String.valueOf(System.currentTimeMillis());
            final BaseLocalResponse<List<LogicEnableRequest>> data = new BaseLocalResponse<>();
            data.setId(IdUtils.getUUId());
            data.setTime_stamp(time);
            List<LogicEnableRequest> list = new ArrayList<>();
            LogicEnableRequest request = new LogicEnableRequest(sid, enable);
            list.add(request);
            data.setObjects(list);
            String topic = String.format(TopicConstant.EDIT_LOGIC_ENABLE, 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));
            }
        }
    }
}