From 4598b51c90c695c9ccbe5350a84e4a46b9d8e587 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期三, 22 五月 2024 20:19:02 +0800
Subject: [PATCH] 2024年05月22日20:18:54

---
 app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java |  187 +++++++++++++++++++++++++++++-----------------
 1 files changed, 117 insertions(+), 70 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
index 6b3d883..e66c575 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -202,6 +202,11 @@
             } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODEL.equals(topic)) {
                 //璁惧妯″潡
                 switch (type) {
+                    //modBus鍗忚涓撶敤
+                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: {
+                        sendModBus(mode_type, data, callback);
+                    }
+                    break;
                     //娣诲姞閫嗗彉鍣ㄥ埌浜戠
                     case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: {
                         this.uniAddInverterDeviceToCloud(mode_type, data, callback);
@@ -225,11 +230,6 @@
                     //鑾峰彇閫嗗彉鍣ㄥ垪琛�
                     case HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST: {
                         this.uniGetCurrentHomeLocalAndCloudGatewayList(mode_type, data, callback);
-                    }
-                    break;
-                    //modBus鍗忚涓撶敤
-                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: {
-                        sendModBus(mode_type, data, callback);
                     }
                     break;
                     //鑾峰彇oid鍒楄〃
@@ -275,6 +275,11 @@
                     //鍒濆鍖栭�嗗彉鍣�
                     case HDLUniMP.UNI_EVENT_REPLY_DEVICE_INITIALIZEINVERTER: {
                         this.setInitializeGateway(mode_type, data, callback);
+                    }
+                    break;
+                    //璇诲彇璁惧杩滅▼淇℃伅
+                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_REMOTEINFO: {
+                        this.setInverterDeviceRemoteInfo(mode_type, data, callback);
                     }
                     break;
 
@@ -498,10 +503,7 @@
                     //uni涓婚〉鐐瑰嚮杩斿洖閫氱煡
                     case HDLUniMP.UNI_EVENT_REPLY_OTHER_BACK: {
                         //EventBus浜嬩欢鍒嗗彂
-                        BaseEventBus baseEventBus = new BaseEventBus();
-                        baseEventBus.setTopic(HDLUniMP.UNI_EVENT_REPLY_OTHER_MODEL);
-                        baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_OTHER_BACK);
-                        EventBus.getDefault().post(baseEventBus);
+                        HdlCommonLogic.getInstance().postEventBus(HDLUniMP.UNI_EVENT_REPLY_OTHER_MODEL, HDLUniMP.UNI_EVENT_REPLY_OTHER_BACK);
 
                     }
                     break;
@@ -1719,77 +1721,75 @@
      * @param callback uni鍥炶皟
      */
     public void startTcpThreadSendAccountAndPassword(String type, String ssid, String password, DCUniMPJSCallback callback) {
-        new Thread(
-                () -> {
-                    Socket socket = null;
-                    OutputStream outputStreamTcp = null;
-                    InputStream inputStreamTcp = null;
-                    try {
-                        socket = new Socket();
-                        socket.setTcpNoDelay(true);
-                        socket.setSoTimeout(10 * 1000);//10绉掕秴鏃�
-                        socket.connect(new InetSocketAddress("192.168.8.1", 8586));
-                        socket.setKeepAlive(true);
+        new Thread(() -> {
+            Socket socket = null;
+            OutputStream outputStreamTcp = null;
+            InputStream inputStreamTcp = null;
+            try {
+                socket = new Socket();
+                socket.setTcpNoDelay(true);
+                socket.setSoTimeout(10 * 1000);//10绉掕秴鏃�
+                socket.connect(new InetSocketAddress("192.168.8.1", 8586));
+                socket.setKeepAlive(true);
 //                        logMessage("tcp杩炴帴鐘舵�佹垚鍔�", 0, "");
-                        outputStreamTcp = socket.getOutputStream();
-                        JsonObject jsonObject = new JsonObject();
-                        jsonObject.addProperty("id", "102030");
-                        jsonObject.addProperty("ssid", ssid);
-                        jsonObject.addProperty("password", password);
-                        jsonObject.addProperty("server_addr", HDLLinkPMUser.getInstance().getHomeRegionUrl());
-                        jsonObject.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
-                        String sendData = "Topic:/user/id/custom/wifi/set\r\n";
-                        sendData += "Length:" + jsonObject.toString().getBytes().length + "\r\n\r\n";
-                        sendData += jsonObject.toString();
-                        outputStreamTcp.write(sendData.getBytes());
-                        outputStreamTcp.flush();
-                        Thread.sleep(200);
-                        inputStreamTcp = socket.getInputStream();
-                        byte[] bytes = new byte[1204 * 2];
-                        int len = inputStreamTcp.read(bytes);
-                        if (len != -1) {
-                            String str = new String(bytes, 0, bytes.length);
-                            String[] strings = str.split("\r\n\r\n");
-                            String[] topicAndLength = strings[0].split("\r\n");
-                            String topic = topicAndLength[0];
-                            JSONObject json = new JSONObject(strings[1]);
+                outputStreamTcp = socket.getOutputStream();
+                JsonObject jsonObject = new JsonObject();
+                jsonObject.addProperty("id", "102030");
+                jsonObject.addProperty("ssid", ssid);
+                jsonObject.addProperty("password", password);
+                jsonObject.addProperty("server_addr", HDLLinkPMUser.getInstance().getHomeRegionUrl());
+                jsonObject.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
+                String sendData = "Topic:/user/id/custom/wifi/set\r\n";
+                sendData += "Length:" + jsonObject.toString().getBytes().length + "\r\n\r\n";
+                sendData += jsonObject.toString();
+                outputStreamTcp.write(sendData.getBytes());
+                outputStreamTcp.flush();
+                Thread.sleep(200);
+                inputStreamTcp = socket.getInputStream();
+                byte[] bytes = new byte[1204 * 2];
+                int len = inputStreamTcp.read(bytes);
+                if (len != -1) {
+                    String str = new String(bytes, 0, bytes.length);
+                    String[] strings = str.split("\r\n\r\n");
+                    String[] topicAndLength = strings[0].split("\r\n");
+                    String topic = topicAndLength[0];
+                    JSONObject json = new JSONObject(strings[1]);
 //                            logMessage("tcp鍥炲鏁版嵁", 0, strings[0] + "\r\n" + json.toString());
-                            if (topic.endsWith("wifi/set_reply") || topic.endsWith("wifi/result/notify")) {
-                                if (callback != null) {
-                                    uniCallbackData(type, json, callback);
-                                }
-                                if (json.has("mac")) { //鍥炲鎴愬姛鍐嶆嬁璁惧mac
+                    if (topic.endsWith("wifi/set_reply") || topic.endsWith("wifi/result/notify")) {
+                        if (callback != null) {
+                            uniCallbackData(type, json, callback);
+                        }
+                        if (json.has("mac")) { //鍥炲鎴愬姛鍐嶆嬁璁惧mac
 //                                    this.device_mac = json.getString("mac");
 //                                    this.isSucceedTcp = true;//琛ㄧず鎴愬姛
-                                }
-                            }
-                        }
-
-                    } catch (Exception ignored) {
-                    } finally {
-                        try {
-                            if (outputStreamTcp != null) {
-                                outputStreamTcp.close();
-                                outputStreamTcp = null;
-                            }
-                            if (inputStreamTcp != null) {
-                                inputStreamTcp.close();
-                                inputStreamTcp = null;
-                            }
-                            if (socket != null) {
-                                socket.close();
-                                socket = null;
-                            }
-
-                        } catch (Exception ignored) {
                         }
                     }
                 }
-        ).start();
+
+            } catch (Exception ignored) {
+            } finally {
+                try {
+                    if (outputStreamTcp != null) {
+                        outputStreamTcp.close();
+                        outputStreamTcp = null;
+                    }
+                    if (inputStreamTcp != null) {
+                        inputStreamTcp.close();
+                        inputStreamTcp = null;
+                    }
+                    if (socket != null) {
+                        socket.close();
+                        socket = null;
+                    }
+
+                } catch (Exception ignored) {
+                }
+            }
+        }).start();
     }
 
     /**
-     * 鍒濆鍖栦綘閫嗗彉鍣�
+     * 鍒濆鍖栭�嗗彉鍣�
      *
      * @param type     璐﹀彿
      * @param data     uni璇锋眰鏁版嵁
@@ -1810,6 +1810,53 @@
         });
     }
 
+    /**
+     * 鍒濆鍖栭�嗗彉鍣�
+     *
+     * @param type     璐﹀彿
+     * @param data     uni璇锋眰鏁版嵁
+     * @param callback uni鍥炶皟
+     */
+    public void setInverterDeviceRemoteInfo(String type, Object data, DCUniMPJSCallback callback) {
+        String homeId = getKeyValue("homeId", getKeyValue("data", data));
+        String json = getKeyValue("list", getKeyValue("data", data));
+        List<CloudInverterDeviceBean> newList = new ArrayList<>();
+        try {
+            List<GatewayBean> list = new Gson().fromJson(json, new TypeToken<List<GatewayBean>>() {
+            }.getType());
+            if (list != null && list.size() > 0) {
+                for (int i = 0; i < list.size(); i++) {
+                    GatewayBean gatewayBean = list.get(i);
+                    CloudInverterDeviceBean inverterDeviceBean = new CloudInverterDeviceBean();
+                    inverterDeviceBean.setCategorySecondName(gatewayBean.getCategorySecondName());
+                    inverterDeviceBean.setOsn(gatewayBean.getDevice_mac());
+                    inverterDeviceBean.setOmodel(gatewayBean.getDevice_model());
+                    inverterDeviceBean.setOid(gatewayBean.getOid());
+                    inverterDeviceBean.setAddresses(gatewayBean.getAddresses());
+                    inverterDeviceBean.setSid(gatewayBean.getSid());
+                    inverterDeviceBean.setDeviceId(gatewayBean.getDeviceId());
+                    inverterDeviceBean.setName(gatewayBean.getDevice_name());
+                    inverterDeviceBean.setDeviceStatus(gatewayBean.getDeviceStatus());
+                    inverterDeviceBean.setSpk(gatewayBean.getSpk());
+                    inverterDeviceBean.setDeviceType(gatewayBean.getDeviceType());
+                    newList.add(inverterDeviceBean);
+                }
+            }
+        } catch (Exception ignored) {
+        }
+        HdlDeviceLogic.getInstance().setDeviceRemoteInfo(newList, homeId, new CloudCallBeak<List<GatewayBean>>() {
+            @Override
+            public void onSuccess(List<GatewayBean> obj) {
+                uniCallbackData(type, obj, callback);
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+            }
+        });
+    }
+
 
     /**
      * 鍙戦�乵odbus鍗忚鏁版嵁

--
Gitblit v1.8.0