mac
2023-11-14 54a8c79222bba0644b02fe1dbc5d75e26ea50b5d
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -6,7 +6,22 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.hdl.hdlhttp.HxHttp;
import com.hdl.linkpm.sdk.core.api.HDLCloudHomeApi;
import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack;
import com.hdl.linkpm.sdk.core.callback.IResponseCallBack;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.linkpm.sdk.core.response.HDLResponse;
import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean;
import com.hdl.linkpm.sdk.device.bean.GatewayCloudBean;
import com.hdl.linkpm.sdk.ota.HDLLinkPMOta;
import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean;
import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean;
import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean;
import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean;
import com.hdl.linkpm.sdk.project.HDLLinkPMProject;
import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.internet.HttpClient;
@@ -18,6 +33,7 @@
import com.hdl.photovoltaic.ui.bean.CloudInverterChildDeviceBean;
import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo;
import com.hdl.photovoltaic.ui.bean.DeviceTimeBean;
import com.hdl.photovoltaic.ui.bean.OidBean;
import com.hdl.sdk.link.common.exception.HDLLinkException;
import com.hdl.sdk.link.core.bean.gateway.GatewayBean;
@@ -28,10 +44,15 @@
import com.hdl.sdk.link.gateway.HDLLinkLocalGateway;
import com.hdl.sdk.link.gateway.type.GatewayMasterType;
import org.json.JSONException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
import io.reactivex.rxjava3.disposables.Disposable;
/**
@@ -69,14 +90,35 @@
                if (TextUtils.isEmpty(gatewayBean.getDevice_mac())) {
                    continue;
                }
                if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue)
                        && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
                if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
                    newList.add(gatewayBean);
                }
            }
        }
        return newList;
    }
    /**
     * 获取当前住宅的【主】逆变器列表
     */
    public GatewayBean getCurrentHomeMainGateway() {
        List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList();
        if (list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                GatewayBean gatewayBean = list.get(i);
                if (TextUtils.isEmpty(gatewayBean.getDevice_mac())) {
                    continue;
                }
                if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
                    //找到返回
                    return gatewayBean;
                }
            }
        }
        return null;
    }
    /**
     * 逆变器上传数据到云端(包括:sid,oid)
@@ -353,13 +395,25 @@
     * @param mac          设备mac
     * @param linkCallBack 回调update
     */
    public void getGatewayTime(String mac, LinkCallBack<Boolean> linkCallBack) {
    public void getGatewayTime(String mac, LinkCallBack<DeviceTimeBean> linkCallBack) {
        String requestUrl = TopicApi.GET_GATEWAY_TIME;
        TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, null, "", new HDLLinkCallBack() {
            @Override
            public void onSuccess(String msg) {
            public void onSuccess(String json) {
                if (TextUtils.isEmpty(json)) {
                    if (linkCallBack != null) {
                        linkCallBack.onSuccess(new DeviceTimeBean());
                    }
                    return;
                }
                Gson gson = new Gson();
                Type typeOfT = new TypeToken<BaseLocalResponse<DeviceTimeBean>>() {
                }.getType();
                BaseLocalResponse<DeviceTimeBean> baseLocalResponse = gson.fromJson(json, typeOfT);
                if (linkCallBack != null) {
                    linkCallBack.onSuccess(true);
                    linkCallBack.onSuccess(baseLocalResponse.getObjects());
                }
            }
@@ -377,17 +431,16 @@
     * 网关时间修改
     *
     * @param mac          设备mac
     * @param date         日期
     * @param time         时间
     * @param linkCallBack 回调update
     */
    public void editGatewayTime(String mac, JsonObject jsonObject, LinkCallBack<Boolean> linkCallBack) {
    public void editGatewayTime(String mac, String date, String time, LinkCallBack<Boolean> linkCallBack) {
        String requestUrl = TopicApi.SET_GATEWAY_TIME_EDIT;
//        JsonObject json = new JsonObject();
//        json.addProperty("master", "true");
//        "objects": {
//            "date": "2020-08-15",
//                    "time": "17:25:20"
//        }
        TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, jsonObject, "", new HDLLinkCallBack() {
        JsonObject json = new JsonObject();
        json.addProperty("date", date);// "2020-08-15"
        json.addProperty("time", time);//"17:25:20"
        TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, json, "", new HDLLinkCallBack() {
            @Override
            public void onSuccess(String msg) {
                if (linkCallBack != null) {
@@ -511,7 +564,7 @@
    /**
     * 获取逆变器列表
     * 注意:有外网以云端设备为准,本地存在,云端没有则删除;内网以本地为主,搜索多少个设备就显示多少个;
     * 注意:有外网以云端设备为准;本地存在,云端没有则删除;内网以本地为主,搜索多少个设备就显示多少个;
     *
     * @param cloudCallBeak 返回逆变器列表
     */
@@ -671,7 +724,6 @@
     * @param spk           spk
     * @param mac           设备mac
     * @param cloudCallBeak 回调
     * @return -
     */
    public void getDeviceRemoteInfo(String homeId, String spk, String mac, CloudCallBeak<DeviceRemoteInfo> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Device_RemoteInfo;
@@ -705,7 +757,7 @@
    }
    /**
     * 删除本地逆变器
     * 删除本地缓存逆变器
     *
     * @param sid 设备sid
     */
@@ -724,7 +776,7 @@
    public void clearInverterHomeId(String mac, LinkCallBack<Boolean> callBeak) {
        String requestUrl = TopicApi.SET_GATEWAY_REMOTE_EDIT;
        JsonObject json = new JsonObject();
        json.addProperty("homeId","");
        json.addProperty("homeId", "");
        json.addProperty("server_addr", "");
        TcpClient.getInstance().sendDataToLinkGateway(mac, true, requestUrl, json, "", new HDLLinkCallBack() {
            @Override
@@ -761,6 +813,7 @@
        HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(UserConfigManage.getInstance().getHomeId(), spks, true, gatewayCallBack);
    }
    /**
     * 刷新逆变器缓存信息(包括设置mqtt秘钥)
     * 注:
@@ -770,7 +823,7 @@
     * @param deviceRemoteInfo        设备远程通讯信息
     * @param cloudInverterDeviceBean 逆变器
     */
    private static void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) {
    private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) {
        //本地查找逆变器
        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(cloudInverterDeviceBean.getOsn());
        if (gatewayBean == null) {
@@ -782,7 +835,7 @@
        if (deviceRemoteInfo != null) {
            gatewayBean.setAesKey(deviceRemoteInfo.getSecret());//设置mqtt通讯秘钥
            gatewayBean.setGatewayId(deviceRemoteInfo.getGatewayId());//设置gatewayId
            //用之前的库,底层mqtt订阅,加解密会用到该参数;
            //todo 设置到【库】里面,底层mqtt订阅,加解密会用到该参数;
            HDLLinkConfig.getInstance().setAesKey(deviceRemoteInfo.getSecret());//设置mqtt通讯秘钥库
            HDLLinkConfig.getInstance().setGatewayId(deviceRemoteInfo.getGatewayId());//设置gatewayId
@@ -804,6 +857,7 @@
        gatewayBean.setPowerPvNow(cloudInverterDeviceBean.getPowerPvNow());//发电功率
        gatewayBean.setTotalElectricityPvToday(cloudInverterDeviceBean.getTotalElectricityPvToday());//今日发电量
        gatewayBean.setDevice_model(cloudInverterDeviceBean.getOmodel());//设备型号
        gatewayBean.setSpk(cloudInverterDeviceBean.getSpk());//设备spk
    }