From 073e5d5103870246fe33029e5f6d36536a1bb76c Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期五, 30 六月 2023 10:33:05 +0800 Subject: [PATCH] 2023年06月30日10:33:03 --- app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 93 insertions(+), 17 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 e49931a..0cc1d91 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -8,6 +8,7 @@ import com.google.gson.Gson; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.bean.BaseEventBus; +import com.hdl.photovoltaic.bean.ModBusBean; import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.listener.CloudCallBeak; @@ -16,10 +17,14 @@ import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; import com.hdl.photovoltaic.uni.UniToAndroidBean; import com.hdl.photovoltaic.utils.WifiUtils; +import com.hdl.sdk.link.common.exception.HDLLinkCode; import com.hdl.sdk.link.common.exception.HDLLinkException; +import com.hdl.sdk.link.common.utils.LogUtils; import com.hdl.sdk.link.core.bean.gateway.GatewayBean; import com.hdl.sdk.link.core.callback.GatewayCallBack; +import com.hdl.sdk.link.core.callback.ModbusCallBack; import com.hdl.sdk.link.core.connect.HDLModBusConnect; +import com.hdl.sdk.link.gateway.HDLLinkLocalGateway; import org.greenrobot.eventbus.EventBus; import org.json.JSONObject; @@ -87,13 +92,57 @@ } if (callback != null) { - uniCallbackData(null, "0", "", callback); + uniCallbackData(null, callback); } } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODEL.equals(event)) { //璁惧妯″潡 switch (type) { case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: { - //娣诲姞 + //娣诲姞璁惧鍒颁簯绔� + String mac = getKeyValue("mac", getKeyValue("data", data)); + HdlDeviceLogic.getInstance().editGatewayParam(mac, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + HdlDeviceLogic.getInstance().steGatewayParam(mac, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac); + if (gatewayBean == null) { + uniCallbackData(null, -100, "鏈湴鎵句笉鍒扮綉鍏�", callback); + return; + } + HdlDeviceLogic.getInstance().addInverterDevice(mac, + gatewayBean.getGateway_type(), + gatewayBean.getSid(), + gatewayBean.getOid(), + gatewayBean.getDevice_name(), + new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + uniCallbackData(null, callback); + } + + @Override + public void onFailure(Exception exception) { + uniCallbackData(null, -100, exception.getMessage(), callback); + } + }); + } + + @Override + public void onFailure(Exception exception) { + uniCallbackData(null, -100, exception.getMessage(), callback); + } + }); + } + + @Override + public void onFailure(Exception exception) { + uniCallbackData(null, -100, exception.getMessage(), callback); + } + }); + + } break; case HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST: { @@ -101,28 +150,19 @@ HdlDeviceLogic.getInstance().searchGateway(new GatewayCallBack() { @Override public void onSuccess(List<GatewayBean> gatewayBeanList) { -// HDLUniMP.UniCallBackBaseBean callBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); -// callBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_LIST); -// callBackBaseBean.setData(gatewayBeanList); -// uniCallbackData(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, "", "", callBackBaseBean); + uniCallbackData(gatewayBeanList, callback); } @Override public void onError(HDLLinkException e) { //鍙戦�佸け璐� - HDLUniMP.UniCallBackBaseBean callBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); - callBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_LIST); - callBackBaseBean.setCode(e.getCode() + ""); - callBackBaseBean.setCode(e.getMsg()); - sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, callBackBaseBean); + uniCallbackData(null, e.getCode(), "", callback); } }); } break; case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: { - - //鍙戦�乵odbus鍗忚 -// HDLModBusConnect.getInstance().Send(uniToAndroidBean.getGatewayOid(), null, ); + sendModBus(data, callback); } } @@ -133,14 +173,14 @@ case HDLUniMP.UNI_EVENT_REPLY_WIFI_LIST: { //鑾峰彇wifi鍒楄〃 if (callback != null) { - uniCallbackData(wifiUtils.getScanResult(), "0", "", callback); + uniCallbackData(wifiUtils.getScanResult(), callback); } } break; case HDLUniMP.UNI_EVENT_REPLY_WIFI_INFO: { //褰撳墠wifi璇︽儏 if (callback != null) { - uniCallbackData(wifiUtils.getCurrentConnectWifiInfo(), "0", "", callback); + uniCallbackData(wifiUtils.getCurrentConnectWifiInfo(), callback); } } break; @@ -156,6 +196,38 @@ HdlLogLogic.print("uni===鍘熺敓鎺ユ敹uni鍙戞潵鐨勬暟鎹�", e.getMessage()); } + } + + /** + * 鍙戦�乵odbus鍗忚鏁版嵁 + * + * @param data modbus鏁版嵁 + * @param callback 鍥炶皟 + */ + void sendModBus(Object data, DCUniMPJSCallback callback) { + String tempData = getKeyValue("data", data); + if (tempData == null) { + LogUtils.i("data鍐呭涓虹┖"); + return; + } + ModBusBean modBusBean = com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(tempData), ModBusBean.class); + if (modBusBean.getOid() == null || modBusBean.getData() == null) { + LogUtils.i("鍐呭涓虹┖,oid=" + modBusBean.getOid() + " data=" + modBusBean.getData()); + return; + } + + //鍙戦�乵odbus鍗忚 + HDLModBusConnect.getInstance().Send(modBusBean.getOid(), modBusBean.getData(), new ModbusCallBack() { + @Override + public void onSuccess(byte[] data) { + uniCallbackData(data, callback); + } + + @Override + public void onError(HDLLinkException e) { + uniCallbackData(null, e.getCode(), e.getMsg(), callback); + } + }); } /** @@ -232,7 +304,7 @@ * @param msg 缁撴灉鎻忚堪鐨勪俊鎭� * @param callback 鍥炶皟 */ - private void uniCallbackData(Object obj, String code, String msg, DCUniMPJSCallback callback) { + private void uniCallbackData(Object obj, int code, String msg, DCUniMPJSCallback callback) { HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); try { uniCallBackBaseBean.setCode(code); @@ -248,6 +320,10 @@ } + private void uniCallbackData(Object obj, DCUniMPJSCallback callback) { + uniCallbackData(obj, HDLLinkCode.HDL_SUCCESS.getCode(), HDLLinkCode.HDL_SUCCESS.getMsg(), callback); + } + /** * 褰撳墠瀵硅薄杞� JSONObject * -- Gitblit v1.8.0