mac
2024-03-13 4a2d7f9ac055d10ba7baf58df690e0ad62826f52
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -8,18 +8,13 @@
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.IBinder;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean;
import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
@@ -35,7 +30,6 @@
import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.listener.LinkCallBack;
import com.hdl.photovoltaic.ui.StartActivity;
import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
import com.hdl.photovoltaic.ui.bean.DeviceTimeBean;
import com.hdl.photovoltaic.ui.bean.Geolocation;
@@ -67,9 +61,9 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
import okhttp3.ResponseBody;
@@ -166,6 +160,11 @@
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: {
                        this.uniAddInverterDeviceToCloud(mode_type, data, callback);
                    }
                    //添加多个逆变器到云端
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD_All: {
                        this.uniAddAllInverterDeviceToCloud(mode_type, data, callback);
                    }
                    break;
                    //删除云端逆变器
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_DEL: {
@@ -1182,6 +1181,7 @@
    }
    /**
     * 逆变器添加到云端上
     *
@@ -1228,6 +1228,73 @@
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
    /**
     * 多个逆变器添加到云端上
     *
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniAddAllInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) {
//        com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data);
        String mac = getKeyValue("mac", getKeyValue("data", data));
        String homeId = UserConfigManage.getInstance().getHomeId();
        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac);
        if (gatewayBean == null) {
            uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
            return;
        }
        List<GatewayBean> list = new ArrayList<>();
        //记录条数
        AtomicInteger atomicInteger = new AtomicInteger(0);
        final boolean[] is_boolean = {false};
        for (int i = 0; i < list.size(); i++) {
            HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() {
                @Override
                public void onSuccess(Boolean obj) {
                    HdlDeviceLogic.getInstance().editGatewayParam(mac, new LinkCallBack<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            //最后一条才做添加逆变器逻辑处理
                            if (atomicInteger.get() == list.size()) {
                                HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, mac, list, new CloudCallBeak<Boolean>() {
                                    @Override
                                    public void onSuccess(Boolean obj) {
                                        uniCallbackData(type, null, callback);
                                    }
                                    @Override
                                    public void onFailure(HDLException e) {
                                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                                    }
                                });
                            }
                        }
                        @Override
                        public void onError(HDLLinkException e) {
                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                            is_boolean[0] = true;
                        }
                    });
                }
                @Override
                public void onError(HDLLinkException e) {
                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                    is_boolean[0] = true;
                }
            });
            if (is_boolean[0]) {
                //只有中间有一条指令设置失败,默认全部失败;
                break;
            }
        }
    }
    /**
@@ -1336,7 +1403,8 @@
    private void sendModBus(String type, Object data, DCUniMPJSCallback callback) {
        String tempData = getKeyValue("data", data);
        if (TextUtils.isEmpty(tempData)) {
            HdlLogLogic.print("data内容为空--->", false);
            uniCallbackData(type, null, -2, "data内容为空", callback);
            //HdlLogLogic.print("data内容为空--->", false);
            return;
        }
        ModBusBean modBusBean = new Gson().fromJson(tempData, ModBusBean.class);
@@ -1347,24 +1415,25 @@
//            modBusBean.setOid("0101050217BBC400");
//        }
        if (modBusBean.getMac() == null || modBusBean.getData() == null) {
            HdlLogLogic.print("uni--->发送--->ModBus--->发送失败,(mac或者oid)为空." + Arrays.toString(modBusBean.getData()), true);
            uniCallbackData(type, null, -2, "发送失败,(mac或者oid)为空", callback);
            //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);
            }
        });
    }