| | |
| | | if (list.size() > 0) { |
| | | for (int i = 0; i < list.size(); i++) { |
| | | GatewayBean gatewayBean = list.get(i); |
| | | if (!getGatewaySpk().contains(gatewayBean.getGatewayType())) { |
| | | continue; |
| | | } |
| | | if (TextUtils.isEmpty(gatewayBean.getDevice_mac()) |
| | | || TextUtils.isEmpty(gatewayBean.getSid()) |
| | | || TextUtils.isEmpty(gatewayBean.getOid())) { |
| | | continue; |
| | | if (gatewayBean.isActivate()) { |
| | | //已激活(getGatewayType,getDevice_mac,getSid,getOid)才有值 |
| | | if (!getGatewaySpk().contains(gatewayBean.getGatewayType())) { |
| | | continue; |
| | | } |
| | | if (TextUtils.isEmpty(gatewayBean.getDevice_mac()) |
| | | || TextUtils.isEmpty(gatewayBean.getSid()) |
| | | || TextUtils.isEmpty(gatewayBean.getOid())) { |
| | | continue; |
| | | } |
| | | } |
| | | //用homeId筛选当前住宅的逆变器列表 |
| | | if (gatewayBean.getHomeId().equals(homeId)) { |
| | |
| | | try { |
| | | List<GatewayBean> newList = new ArrayList<>(); |
| | | //云端有设备列表,本地没有,即HDLLinkLocalGateway.getInstance().getGatewayList()没有,里面会调用refreshGatewayCacheData()方法虚拟一个逆变器实体添加本地列表里面; |
| | | List<GatewayBean> list = getCurrentHomeGatewayList(homeId); |
| | | if (list != null && list.size() > 0) { |
| | | newList.addAll(list); |
| | | List<GatewayBean> localList = getCurrentHomeGatewayList(homeId); |
| | | if (localList != null && localList.size() > 0) { |
| | | newList.addAll(localList); |
| | | } |
| | | |
| | | //有外网,以云端设备列表为准;云端没有,本地存在,则删除本地;否则,没有外网只有局域网,以本地newList列表为主,搜索多少个设备就显示多少个 |
| | |
| | | CloudInverterDeviceBean cloudInverterDevice = cloudInverterDeviceList.get(i); |
| | | for (GatewayBean gatewayBean : newList) { |
| | | if (cloudInverterDevice.getOsn().equals(gatewayBean.getDevice_mac())) { |
| | | //获取更全逆变器详情字段 |
| | | checkNewList.add(gatewayBean); |
| | | break; |
| | | } |
| | |
| | | if (TextUtils.isEmpty(deviceId)) { |
| | | return; |
| | | } |
| | | List<GatewayBean> list = getCurrentHomeGatewayList(homeId); |
| | | List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList(); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | |
| | | break; |
| | | } |
| | | } |
| | | if (index > 0) { |
| | | if (index > -1) { |
| | | list.remove(index); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param cloudCallBeak 返回逆变器列表 |
| | | */ |
| | | public void getCurrentHomeLocalAndCloudGatewayList(String homeId, CloudCallBeak<List<GatewayBean>> cloudCallBeak) { |
| | | HDLLinkLocalGateway.getInstance().getGatewayList().clear();//先清空之前逆变器列表 |
| | | searchCurrentHomeGateway(homeId, new GatewayCallBack() { |
| | | @Override |
| | | public void onSuccess(List<GatewayBean> gatewayBeanList) { |
| | |
| | | AtomicInteger atomicInteger = new AtomicInteger(0); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | CloudInverterDeviceBean cloudInverterDeviceBean = list.get(i); |
| | | if (cloudInverterDeviceBean == null || !cloudInverterDeviceBean.isActivate()) { |
| | | //未激活设备 |
| | | atomicInteger.set(atomicInteger.get() + 1); |
| | | //注意:这个逆变器只能本地控制(因为拿不到mqtt通讯秘钥以及GatewayID,无法远程控制) |
| | | //更新逆变器本地缓存信息 |
| | | refreshGatewayCacheData(false, cloudInverterDeviceBean, null, homeId); |
| | | //到最后一条,才处理回调 |
| | | if (atomicInteger.get() == list.size()) { |
| | | if (cloudCallBeak != null) { |
| | | cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list, false)); |
| | | } |
| | | } |
| | | HdlLogLogic.print("设备未激活(mac:" + cloudInverterDeviceBean.getOsn() + "))", true); |
| | | continue; |
| | | } |
| | | //获取远程设备通讯信息(拿到网关ID,mqtt通讯秘钥) |
| | | getDeviceRemoteInfo(homeId, cloudInverterDeviceBean.getSpk(), cloudInverterDeviceBean.getOsn(), new CloudCallBeak<DeviceRemoteInfo>() { |
| | | @Override |
| | |
| | | gatewayBean.setDevice_model(cloudInverterDeviceBean.getOmodel());//设备型号 |
| | | } |
| | | gatewayBean.setSpk(cloudInverterDeviceBean.getSpk());//设备spk |
| | | gatewayBean.setActivate(cloudInverterDeviceBean.isActivate());//是否激活设备(true:激活;false:未激活) |
| | | gatewayBean.setPopUpgrade(cloudInverterDeviceBean.isPopUpgrade());//改设备是否有弹窗升级 |
| | | gatewayBean.setSubPopUpgrade(cloudInverterDeviceBean.isSubPopUpgrade());//下挂设备是否有弹窗升级 |
| | | |
| | | |
| | | } |