mac
2024-01-02 d1ebb94e1a17b7c25d4fcf73d85345d92cc86b5c
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -63,7 +63,7 @@
    /**
     * 获取当前住宅的逆变器列表(包括从的逆变器)
     */
    public List<GatewayBean> getCurrentHomeGatewayList() {
    public List<GatewayBean> getCurrentHomeGatewayList(String homeId) {
        List<GatewayBean> newList = new ArrayList<>();
        List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList();
        if (list.size() > 0) {
@@ -73,7 +73,7 @@
                    continue;
                }
                //用homeId筛选当前住宅的逆变器列表
                if (gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
                if (gatewayBean.getHomeId().equals(homeId)) {
                    newList.add(gatewayBean);
                }
            }
@@ -84,21 +84,21 @@
    /**
     * 获取当前住宅的【主】逆变器
     */
    public GatewayBean getCurrentHomeMainGateway() {
        return queryCurrentHomeMainGateway(this.getCurrentHomeGatewayList());
    public GatewayBean getCurrentHomeMainGateway(String homeId) {
        return queryCurrentHomeMainGateway(this.getCurrentHomeGatewayList(homeId), homeId);
    }
    /**
     * 查询当前住宅的【主】逆变器
     */
    public GatewayBean queryCurrentHomeMainGateway(List<GatewayBean> list) {
    public GatewayBean queryCurrentHomeMainGateway(List<GatewayBean> list, String homeId) {
        if (list == null || list.size() == 0) {
            return null;
        }
        GatewayBean findGatewayBean = null;
        for (int i = 0; i < list.size(); i++) {
            GatewayBean gatewayBean = list.get(i);
            if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
            if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(homeId)) {
                //找到返回
                findGatewayBean = gatewayBean;
                break;
@@ -152,11 +152,11 @@
     * @param name          -
     * @param cloudCallBeak -
     */
    public void addInverterDeviceToCloud(String mac, String spk, String sid, String oid, String name, CloudCallBeak<Boolean> cloudCallBeak) {
    public void addInverterDeviceToCloud(String homeId, String mac, String spk, String sid, String oid, String name, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Device_Add;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
        json.addProperty("homeId", homeId);
        json.addProperty("mac", mac);
        json.addProperty("spk", spk);
        json.addProperty("sid", sid);
@@ -227,10 +227,10 @@
     * @param deviceId      设备id
     * @param cloudCallBeak 回调
     */
    public void delInverterDevice(String deviceId, CloudCallBeak<Boolean> cloudCallBeak) {
    public void delInverterDevice(String homeId, String deviceId, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Device_Remove;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
        json.addProperty("homeId", homeId);
        json.addProperty("deviceId", deviceId);
        // json.addProperty("zoneType", "password");//区域
@@ -257,10 +257,10 @@
     * @param parentOid     上级设备的Oid
     * @param cloudCallBeak 回调
     */
    public void getInverterDeviceChildDeviceList(String parentOid, CloudCallBeak<List<CloudInverterChildDeviceBean>> cloudCallBeak) {
    public void getInverterDeviceChildDeviceList(String homeId, String parentOid, CloudCallBeak<List<CloudInverterChildDeviceBean>> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Device_ChildDevices_List;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
        json.addProperty("homeId", homeId);
        json.addProperty("parentOid", parentOid);
        // json.addProperty("zoneType", "password");//区域
@@ -409,10 +409,10 @@
     * @param mac          设备mac
     * @param linkCallBack 回调update
     */
    public void setGatewayRemoteParam(String mac, LinkCallBack<Boolean> linkCallBack) {
    public void setGatewayRemoteParam(String homeId, String mac, LinkCallBack<Boolean> linkCallBack) {
        String requestUrl = TopicApi.SET_GATEWAY_REMOTE_EDIT;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
        json.addProperty("homeId", homeId);
        json.addProperty("server_addr", AppConfigManage.getUserRegionUrl());
        json.addProperty("local_secret", UserConfigManage.getInstance().getLocalSecret());
        //解密负载数据(写密钥给网关一定是明文,因为那时网关还没有密钥)
@@ -632,7 +632,7 @@
                        if (list == null || list.size() == 0) {
                            //云端没有绑定逆变器,默认返回本地逆变器列表;
                            if (cloudCallBeak != null) {
                                cloudCallBeak.onSuccess(getCurrentHomeGatewayList());
                                cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
                            }
                            return;
                        }
@@ -646,7 +646,7 @@
                                public void onSuccess(DeviceRemoteInfo deviceRemoteInfo) {
                                    atomicInteger.set(atomicInteger.get() + 1);
                                    //更新逆变器本地缓存信息
                                    refreshGatewayCacheData(true, cloudInverterDeviceBean, deviceRemoteInfo);
                                    refreshGatewayCacheData(true, cloudInverterDeviceBean, deviceRemoteInfo, homeId);
                                    //最后一条才做删除逆变器逻辑处理
                                    if (atomicInteger.get() == list.size()) {
                                        //收集删除逆变器sid
@@ -667,7 +667,7 @@
                                            removeLocalInverter(removeSidList.get(i));
                                        }
                                        if (cloudCallBeak != null) {
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList());
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
                                        }
                                    }
                                }
@@ -695,7 +695,7 @@
                                            removeLocalInverter(removeSidList.get(i));
                                        }
                                        if (cloudCallBeak != null) {
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList());
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
                                        }
                                    }
                                    HdlLogLogic.print("获取设备远程通讯信息失败->msg->" + e.getMsg() + "(" + e.getCode() + ")");
@@ -711,7 +711,7 @@
                        ///情况2:有局域网,没有外网;
                        //本地有逆变器列表,获取云端绑定逆变器失败,默认返回本地逆变器列表;
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList());
                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
                        }
                    }
                });
@@ -745,11 +745,11 @@
                                public void onSuccess(DeviceRemoteInfo deviceRemoteInfo) {
                                    atomicInteger.set(atomicInteger.get() + 1);
                                    //更新逆变器本地缓存信息
                                    refreshGatewayCacheData(false, cloudInverterDeviceBean, deviceRemoteInfo);
                                    refreshGatewayCacheData(false, cloudInverterDeviceBean, deviceRemoteInfo, homeId);
                                    //到最后一条,才有回调
                                    if (atomicInteger.get() == list.size()) {
                                        if (cloudCallBeak != null) {
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList());
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
                                        }
                                    }
                                }
@@ -760,7 +760,7 @@
                                    //当最后一条请求失败了,才有回调
                                    if (atomicInteger.get() == list.size()) {
                                        if (cloudCallBeak != null) {
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList());
                                            cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
                                        }
                                    }
                                    HdlLogLogic.print("获取设备远程通讯信息失败->msg->" + e.getMsg() + "(" + e.getCode() + ")");
@@ -954,8 +954,8 @@
     *
     * @param deviceMac 设备mac
     */
    public void checkInverterConnectedCloud(String deviceMac, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) {
        this.getCloudInverterDeviceList(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<List<CloudInverterDeviceBean>>() {
    public void checkInverterConnectedCloud(String homeId, String deviceMac, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) {
        this.getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
            @Override
            public void onSuccess(List<CloudInverterDeviceBean> list) {
                CloudInverterDeviceBean cloudInverterDeviceBean = null;
@@ -992,7 +992,7 @@
     * @param deviceRemoteInfo        设备远程通讯信息
     * @param cloudInverterDeviceBean 逆变器
     */
    private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) {
    private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo, String homeId) {
        //本地查找逆变器
        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(cloudInverterDeviceBean.getOsn());
        if (gatewayBean == null) {
@@ -1009,7 +1009,7 @@
            HDLLinkConfig.getInstance().setGatewayId(deviceRemoteInfo.getGatewayId());//设置gatewayId
        }
        gatewayBean.setHomeId(UserConfigManage.getInstance().getHomeId());//住宅id
        gatewayBean.setHomeId(homeId);//住宅id
        gatewayBean.setDeviceStatus(cloudInverterDeviceBean.getDeviceStatus());//设置网关状态
        gatewayBean.setDeviceId(cloudInverterDeviceBean.getDeviceId());//设置link设备id
        gatewayBean.setDevice_mac(cloudInverterDeviceBean.getOsn());//设置mac