| | |
| | | import com.hdl.photovoltaic.config.UserConfigManage; |
| | | import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; |
| | | import com.hdl.photovoltaic.internet.TcpClient; |
| | | import com.hdl.photovoltaic.internet.api.HttpApi; |
| | | import com.hdl.photovoltaic.internet.api.TopicApi; |
| | | import com.hdl.photovoltaic.listener.CloudCallBeak; |
| | | import com.hdl.photovoltaic.listener.LinkCallBack; |
| | |
| | | import com.hdl.photovoltaic.ui.bean.OidBean; |
| | | import com.hdl.photovoltaic.ui.bean.UnCountBean; |
| | | import com.hdl.photovoltaic.ui.me.AsRegardsActivity; |
| | | import com.hdl.photovoltaic.ui.me.PersonalDataActivity; |
| | | import com.hdl.photovoltaic.ui.me.CPersonalDataActivity; |
| | | import com.hdl.photovoltaic.ui.me.SetActivity; |
| | | import com.hdl.photovoltaic.ui.newC.MessageCenterList; |
| | | import com.hdl.photovoltaic.ui.newC.PowerStationsListEdit; |
| | |
| | | import com.hdl.sdk.link.core.connect.HDLModBusConnect; |
| | | import com.hdl.sdk.link.core.connect.HDLUdpConnect; |
| | | import com.hdl.sdk.link.gateway.HDLLinkLocalGateway; |
| | | import com.huawei.hms.api.Api; |
| | | |
| | | import org.greenrobot.eventbus.EventBus; |
| | | import org.json.JSONObject; |
| | |
| | | */ |
| | | public class HdlUniLogic implements HDLUniMPSDKManager.IOnOtherUniMPEventCallBack { |
| | | private static volatile HdlUniLogic sHdlUniLogic; |
| | | |
| | | public final static String separator = "---"; |
| | | |
| | | /** |
| | | * 获取当前对象 |
| | |
| | | } |
| | | String type = getKeyValue("type", data);//小类 |
| | | String logTag = getKeyValue("logTag", data);//标记uni指令 |
| | | String mode_type = "大类->" + topic + "--->" + "小类->" + type;//用来打印的 |
| | | HdlLogLogic.print(logTag + ":" + "uni--->发送--->" + mode_type + "\r\n" + data, true); |
| | | String mode_type = "大类-" + topic + "---" + "小类-" + type;//用来打印的 |
| | | HdlLogLogic.print(logTag + ":" + "uni---发送---" + mode_type + "\r\n" + data, true); |
| | | if (HDLUniMP.UNI_EVENT_REPLY_USER_MODEL.equals(topic)) { |
| | | //用户模块 |
| | | switch (type) { |
| | |
| | | } 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); |
| | |
| | | this.uniGetCurrentHomeLocalAndCloudGatewayList(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //modBus协议专用 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: { |
| | | sendModBus(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //获取oid列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_OID: { |
| | | this.uniGetInverterOidList(mode_type, data, callback); |
| | |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_TIME: { |
| | | this.uniGetInverterTime(mode_type, data, callback); |
| | | } |
| | | |
| | | break; |
| | | //逆变器时间编辑 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_TIME_EDIT: { |
| | |
| | | this.uniGetMessageNumber(mode_type, data, callback); |
| | | } |
| | | break; |
| | | |
| | | //初始化逆变器 |
| | | 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; |
| | | //设备名称修改(修改是云端oid名称,设备使用modbus协议修改) |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_EDIT_NAME: { |
| | | this.uniOidEditName(mode_type, data, callback); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } else if (HDLUniMP.UNI_EVENT_REPLY_WIFI_MODEL.equals(topic)) { |
| | | WifiUtils wifiUtils = WifiUtils.getInstance(); |
| | | //wifi模块 |
| | | switch (type) { |
| | | //获取wifi列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_WIFI_LIST: { |
| | | //获取手机wifi列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_PHONE_WIFI_LIST: { |
| | | if (callback != null) { |
| | | uniCallbackData(mode_type, wifiUtils.getScanResult(), callback); |
| | | } |
| | | } |
| | | break; |
| | | //当前wifi详情 |
| | | case HDLUniMP.UNI_EVENT_REPLY_WIFI_PHONE_INFO: { |
| | | //获取手机当前wifi详情 |
| | | case HDLUniMP.UNI_EVENT_REPLY_PHONE_WIFI_INFO: { |
| | | if (callback != null) { |
| | | uniCallbackData(mode_type, wifiUtils.getCurrentConnectWifiInfo(), callback); |
| | | } |
| | | } |
| | | break; |
| | | //配置WiFi信息给逆变器 |
| | | case HDLUniMP.UNI_EVENT_REPLY_WIFI_SET_DEVICE: { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data));// |
| | | String wif_type = getKeyValue("wif_type", getKeyValue("data", data));//1:热点,2:无线wifi,3:以太网 |
| | | String ssid = getKeyValue("ssid", getKeyValue("data", data));// |
| | | String password = getKeyValue("password", getKeyValue("data", data));// |
| | | startTcpThreadSendAccountAndPassword(mode_type, ssid, password, callback); |
| | | |
| | | } |
| | | break; |
| | | //打开手机Wifi设置界面 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OPEN_WIFI_SETTINGS: { |
| | | case HDLUniMP.UNI_EVENT_REPLY_PHONE_OPEN_WIFI_SETTINGS: { |
| | | Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | //逆变器WiFi信息配置 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_WIFI_SET: { |
| | | uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_WIFI_EDIT, callback); |
| | | } |
| | | break; |
| | | //逆变器WiFi信息获取 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_WIFI_GET: { |
| | | uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_WIFI_GET, callback); |
| | | } |
| | | break; |
| | | //逆变器热点配置 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_HOTSPOT_SET: { |
| | | uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_HOTSPOT_EDIT, callback); |
| | | } |
| | | break; |
| | | //逆变器热点获取 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_HOTSPOT_GET: { |
| | | uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_HOTSPOT_GET, callback); |
| | | } |
| | | break; |
| | | //逆变器以太网配置 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ETHERNET_SET: { |
| | | uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_ETHERNET_EDIT, callback); |
| | | } |
| | | break; |
| | | //逆变器以太网获取 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ETHERNET_GET: { |
| | | uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_ETHERNET_GET, callback); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } else if (HDLUniMP.UNI_EVENT_REPLY_OTA_MODEL.equals(topic)) { |
| | | //OTA升级模块 |
| | |
| | | case HDLUniMP.UNI_EVENT_REPLY_MINE_EDIT_USER_INFO: { |
| | | Intent intent = new Intent(); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), PersonalDataActivity.class); |
| | | intent.setClass(HDLApp.getInstance(), CPersonalDataActivity.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | break; |
| | |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), SetActivity.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | |
| | | } |
| | | break; |
| | | //成员列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_MEMBER_LIST: { |
| | | |
| | | } |
| | | break; |
| | | |
| | |
| | | //专门收集uni日志 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTHER_UNI_LOG: { |
| | | String customizeContentFormat = getKeyValue("customizeContentFormat", getKeyValue("data", data)); |
| | | HdlLogLogic.print("uni--->log--->" + customizeContentFormat, true); |
| | | HdlLogLogic.print("uni---log---" + customizeContentFormat, true); |
| | | |
| | | } |
| | | break; |
| | | //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; |
| | |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni--->发送--->" + e.getMessage(), true); |
| | | HdlLogLogic.print("uni---发送---" + e.getMessage(), true); |
| | | } |
| | | |
| | | } |
| | |
| | | public void openUniMP(String path, JSONObject jsonObject) { |
| | | JSONObject json = this.createdJSONObject(jsonObject, true); |
| | | HDLUniMPSDKManager.getInstance().openUniMP(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this); |
| | | HdlLogLogic.print("uni--->组装uni发送数据格式--->" + json, false); |
| | | HdlLogLogic.print("uni---组装uni发送数据格式---" + json, false); |
| | | } |
| | | |
| | | public void openUniMPDelay(String path, JSONObject jsonObject) { |
| | | JSONObject json = this.createdJSONObject(jsonObject, true); |
| | | HDLUniMPSDKManager.getInstance().openUniMPDelay(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this); |
| | | HdlLogLogic.print("uni---组装uni发送数据格式---" + json, false); |
| | | } |
| | | |
| | | /** |
| | |
| | | try { |
| | | HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, topic, getJSONObject(callBackBaseBean)); |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni--->原生主动向小程序发送通知事件--->" + e.getMessage(), false); |
| | | HdlLogLogic.print("uni---原生主动向小程序发送通知事件---" + e.getMessage(), false); |
| | | } |
| | | } |
| | | |
| | |
| | | //endregion |
| | | |
| | | //region ******uni接口方法****** |
| | | |
| | | |
| | | /** |
| | | * 获取或者配置逆变器网络(包括逆变器热点,wifi,以太网)信息 |
| | | */ |
| | | private void uniGetAndSetNetwork(String type, Object data, String TopicApi, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | JsonArray jsonArray = new JsonArray(); |
| | | JsonObject jObject = null; |
| | | String attribute_data = getKeyValue("attribute_data", getKeyValue("data", data)); |
| | | if (!TextUtils.isEmpty(attribute_data)) { |
| | | try { |
| | | jObject = new Gson().fromJson(attribute_data, JsonObject.class); |
| | | } catch (Exception ignored) { |
| | | jObject = new JsonObject(); |
| | | } |
| | | } |
| | | jsonArray.add(jObject); |
| | | //解密负载数据(写密钥给网关一定是明文,因为那时网关还没有密钥) |
| | | TcpClient.getInstance().sendDataToLinkGateway(mac, false, TopicApi, jsonArray, "", new HDLLinkCallBack() { |
| | | @Override |
| | | public void onSuccess(String msg) { |
| | | if (callback != null) { |
| | | uniCallbackData(type, msg, callback); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | if (callback != null) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取位置信息,包括经纬度 |
| | |
| | | String module = "FW#" + imageId;//模块信息(HW:硬件) |
| | | |
| | | //升级本地优先->云端升级 |
| | | HdlDeviceLogic.getInstance().isLocalConnect(deviceMac, new CloudCallBeak<Boolean>() { |
| | | HdlDeviceLogic.getInstance().isLocalConnect(homeId, deviceMac, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean b) { |
| | | if (b) { |
| | | HdlLogLogic.print("本地升级--->", true); |
| | | HdlLogLogic.print("本地升级---", true); |
| | | //本地 |
| | | //1,建立本地服务; |
| | | //2,告诉网关手机ip和端口; |
| | |
| | | } |
| | | }); |
| | | } else { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | HdlLogLogic.print("在线升级---", true); |
| | | //远程升级需要检测在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | HdlLogLogic.print("在线升级---", true); |
| | | //远程升级需要检测在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | |
| | | String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id |
| | | String module = driverCode + "#" + imageId; |
| | | //升级本地优先->云端升级 |
| | | HdlDeviceLogic.getInstance().isLocalConnect(deviceMac, new CloudCallBeak<Boolean>() { |
| | | HdlDeviceLogic.getInstance().isLocalConnect(homeId, deviceMac, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean b) { |
| | | if (b) { |
| | | HdlLogLogic.print("本地升级--->", true); |
| | | HdlLogLogic.print("本地升级---", true); |
| | | //本地 |
| | | //1,建立本地服务; |
| | | // 2,告诉网关手机ip和端口; |
| | |
| | | } |
| | | }); |
| | | } else { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | HdlLogLogic.print("在线升级---", true); |
| | | //远程升级需要【检测】在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | HdlLogLogic.print("在线升级---", true); |
| | | //远程升级需要【检测】在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | |
| | | // com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data); |
| | | try { |
| | | String devices = getKeyValue("devices", getKeyValue("data", data)); |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); //绑定成功之后通知 |
| | | String homeId = getKeyValue("homeId", getKeyValue("data", data)); |
| | | Gson gson = new Gson(); |
| | | Type typeOfT = new TypeToken<List<GatewayBean>>() { |
| | | }.getType(); |
| | |
| | | */ |
| | | private void uniDelInverterDevice(String type, Object data, DCUniMPJSCallback callback) { |
| | | String deviceId = getKeyValue("deviceId", getKeyValue("data", data)); |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); |
| | | String homeId = getKeyValue("homeId", getKeyValue("data", data)); |
| | | if (TextUtils.isEmpty(homeId)) { |
| | | homeId = UserConfigManage.getInstance().getHomeId(); |
| | | } |
| | | HdlDeviceLogic.getInstance().delInverterDevice(homeId, deviceId, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | |
| | | * @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请求数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | public void setInitializeGateway(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().initializeInverter(mac, new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 初始化逆变器 |
| | | * |
| | | * @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); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 修改设备名称逆变器BMS电池包 |
| | | * |
| | | * @param type 账号 |
| | | * @param data uni请求数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | public void uniOidEditName(String type, Object data, DCUniMPJSCallback callback) { |
| | | String homeId = getKeyValue("homeId", getKeyValue("data", data)); |
| | | String deviceType = getKeyValue("deviceType", getKeyValue("data", data)); |
| | | String deviceId = getKeyValue("deviceId", getKeyValue("data", data)); |
| | | String name = getKeyValue("name", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().setRename(homeId, deviceType, deviceId, name, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | |
| | | String tempData = getKeyValue("data", data); |
| | | if (TextUtils.isEmpty(tempData)) { |
| | | uniCallbackData(type, null, -2, "data内容为空", callback); |
| | | //HdlLogLogic.print("data内容为空--->", false); |
| | | //HdlLogLogic.print("data内容为空---", false); |
| | | return; |
| | | } |
| | | ModBusBean modBusBean = new Gson().fromJson(tempData, ModBusBean.class); |
| | |
| | | // } |
| | | if (modBusBean.getMac() == null || modBusBean.getData() == null) { |
| | | uniCallbackData(type, null, -2, "发送失败,(mac或者oid)为空", callback); |
| | | //HdlLogLogic.print("uni--->发送--->ModBus--->发送失败,(mac或者oid)为空." + Arrays.toString(modBusBean.getData()), true); |
| | | //HdlLogLogic.print("uni---发送---ModBus---发送失败,(mac或者oid)为空." + Arrays.toString(modBusBean.getData()), true); |
| | | return; |
| | | } |
| | | |
| | | //HdlLogLogic.print("uni--->发送--->ModBus--->" + Arrays.toString(modBusBean.getData()), true); |
| | | //HdlLogLogic.print("uni---发送---ModBus---" + Arrays.toString(modBusBean.getData()), true); |
| | | //发送modbus协议 |
| | | HDLModBusConnect.getInstance().Send(modBusBean.getMac(), modBusBean.getData(), new ModbusCallBack() { |
| | | @Override |
| | | public void onSuccess(int[] data) { |
| | | uniCallbackData(type, data, callback); |
| | | // HdlLogLogic.print("uni--->接收--->ModBus--->" + Arrays.toString(data), true); |
| | | // HdlLogLogic.print("uni---接收---ModBus---" + Arrays.toString(data), true); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | // HdlLogLogic.print("uni--->接收--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true); |
| | | // HdlLogLogic.print("uni---接收---ModBus---" + e.getMsg() + "(" + e.getCode() + ")", true); |
| | | } |
| | | }); |
| | | } |
| | |
| | | uniCallBackBaseBean.setData(data); |
| | | return getJSONObject(uniCallBackBaseBean); |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni--->组装发送给uni数据格式有异常--->" + e.getMessage(), false); |
| | | HdlLogLogic.print("uni---组装发送给uni数据格式有异常---" + e.getMessage(), false); |
| | | } |
| | | return new JSONObject(); |
| | | } |
| | |
| | | if (callback != null) { |
| | | callback.invoke(getJSONObject(uniCallBackBaseBean)); |
| | | // callback.invoke(uniCallBackBaseBean); |
| | | HdlLogLogic.print("uni--->回复--->" + type + "--->" + new Gson().toJson(uniCallBackBaseBean), true); |
| | | HdlLogLogic.print("uni---回复---" + type + "---" + new Gson().toJson(uniCallBackBaseBean), true); |
| | | } |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni--->回复--->" + type + "--->" + e.getMessage(), true); |
| | | HdlLogLogic.print("uni---回复---" + type + "---" + e.getMessage(), true); |
| | | } |
| | | |
| | | |