package com.hdl.photovoltaic.ui.test;
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.view.View;
|
|
|
import com.google.gson.Gson;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.photovoltaic.base.CustomBaseActivity;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.databinding.ActivityTestMainBinding;
|
import com.hdl.photovoltaic.enums.ShowErrorMode;
|
import com.hdl.photovoltaic.internet.TcpClient;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.listener.LinkCallBack;
|
import com.hdl.photovoltaic.other.HdlDeviceLogic;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.hdl.photovoltaic.ui.bean.CloudInverterChildDeviceBean;
|
import com.hdl.photovoltaic.ui.bean.OidBean;
|
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
|
import com.hdl.sdk.link.common.exception.HDLLinkException;
|
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 java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 测试网关数据主入口界面
|
*/
|
public class TestMainActivity extends CustomBaseActivity implements View.OnClickListener {
|
|
private ActivityTestMainBinding viewBinding;
|
private TestTitleAdapter testTitleAdapter;
|
|
private List<OidBean> mOidList;
|
private String s = "";
|
|
@Override
|
public Object getContentView() {
|
viewBinding = ActivityTestMainBinding.inflate(getLayoutInflater());
|
return viewBinding.getRoot();
|
}
|
|
@Override
|
public void onBindView(Bundle savedInstanceState) {
|
|
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
testTitleAdapter = new TestTitleAdapter(getTitleList());
|
viewBinding.listItemRl.setLayoutManager(linearLayoutManager);
|
viewBinding.listItemRl.setAdapter(testTitleAdapter);
|
initView();
|
initEvent();
|
|
}
|
|
/**
|
* 初始化
|
*/
|
private void initView() {
|
|
String homeId = "homeId=" + UserConfigManage.getInstance().getHomeId();
|
String homeName = "homeName=" + UserConfigManage.getInstance().getHomeName();
|
viewBinding.homeIdTv.setText(homeId);
|
viewBinding.homeNameTv.setText(homeName);
|
|
}
|
|
private void initEvent() {
|
viewBinding.topBackBtn.setOnClickListener(this);
|
viewBinding.topLogBtn.setOnClickListener(this);
|
viewBinding.clickCommandTv.setOnClickListener(this);
|
testTitleAdapter.setItemOnClickListener(new TestTitleAdapter.OnClickListener() {
|
@Override
|
public void OnClick(int position, String title) {
|
|
|
if (TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) {
|
// TODO: 10/30/23 请先选择住宅进行测试,否则无法进行逆变器指令测试;
|
TipDialog("请先选择住宅进行测试,否则无法进行逆变器指令测试.", null);
|
return;
|
}
|
List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId());
|
if (list == null && !title.equals("搜索【所有】逆变器列表(0)") && !title.equals("搜索【住宅】逆变器列表(1)")) {
|
// TODO: 10/30/23 找不到住宅的主逆变器,请先确认是否绑定逆变器,再进行逆变器指令测试
|
TipDialog("找不到住宅的【主逆变器】,请先确认是否绑定过逆变器,再进行逆变器指令测试.", null);
|
return;
|
}
|
if (list.size() == 0 && !title.equals("搜索【所有】逆变器列表(0)") && !title.equals("搜索【住宅】逆变器列表(1)")) {
|
// TODO: 10/30/23 找不到住宅的主逆变器,请先确认是否绑定逆变器,再进行逆变器指令测试
|
TipDialog("找不到住宅的【主逆变器】,请先确认是否绑定过逆变器,再进行逆变器指令测试.", null);
|
return;
|
}
|
|
showLoading();
|
startRequest(position, list.get(0));
|
}
|
});
|
}
|
|
|
@Override
|
public void onClick(View v) {
|
int id = v.getId();
|
if (id == viewBinding.topBackBtn.getId()) {
|
finish();
|
} else if (id == viewBinding.topLogBtn.getId()) {
|
startActivity(TestLogActivity.class);
|
|
} else if (id == viewBinding.clickCommandTv.getId()) {
|
|
} else if (id == viewBinding.clickSelectDeviceTv.getId()) {
|
// selectDevice();
|
|
}
|
}
|
|
/**
|
* 自定义的标题
|
*
|
* @return -
|
*/
|
private List<String> getTitleList() {
|
List<String> s = new ArrayList<>();
|
s.add("搜索【所有】逆变器列表(0)");
|
s.add("搜索【住宅】逆变器列表(1)");
|
s.add("获取逆变器oid列表(2)");
|
s.add("读取逆变器详情(3)");
|
s.add("解绑逆变器(4)");
|
s.add("上传oid列表给云端(5)");
|
s.add("获取逆变器下挂设备列表(6)");
|
s.add("获取逆变器的信息(7)");
|
s.add("恢复出厂设置(8)");
|
return s;
|
}
|
|
/**
|
* 请求指令
|
*
|
* @param position 索引值
|
*/
|
private void startRequest(int position, GatewayBean gatewayBean) {
|
String title = getTitleList().get(position);
|
switch (title) {
|
case "搜索【所有】逆变器列表(0)": {
|
HdlDeviceLogic.getInstance().searchAllNetworkGateway(new GatewayCallBack() {
|
@Override
|
public void onSuccess(List<GatewayBean> gatewayBeanList) {
|
List<GatewayBean> newGatewayBeanList = new ArrayList<>();
|
for (int i = 0; i < gatewayBeanList.size(); i++) {
|
if (HdlDeviceLogic.getInstance().isGatewaySpk(gatewayBeanList.get(i).getGatewayType())) {
|
newGatewayBeanList.add(gatewayBeanList.get(i));
|
}
|
}
|
gsonConvertJsonStr(newGatewayBeanList);
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
case "搜索【住宅】逆变器列表(1)": {
|
HdlDeviceLogic.getInstance().searchCurrentHomeGateway(new GatewayCallBack() {
|
@Override
|
public void onSuccess(List<GatewayBean> gatewayBeanList) {
|
gsonConvertJsonStr(gatewayBeanList);
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
|
case "获取逆变器oid列表(2)": {
|
HdlDeviceLogic.getInstance().getInverterOidList(gatewayBean.getDevice_mac(), new LinkCallBack<List<OidBean>>() {
|
@Override
|
public void onSuccess(List<OidBean> obj) {
|
mOidList = obj;
|
gsonConvertJsonStr(obj);
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
|
case "读取逆变器详情(3)": {
|
HdlDeviceLogic.getInstance().getGatewayInfo(gatewayBean.getDevice_mac(), new LinkCallBack<GatewayBean>() {
|
@Override
|
public void onSuccess(GatewayBean obj) {
|
gsonConvertJsonStr(obj);
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
case "解绑逆变器(4)": {
|
TipDialog("一旦清除掉逆变器住宅id,逆变器需要重新绑定住宅,否则无法测试逆变器指令;", new Listener() {
|
@Override
|
public void Confirmation() {
|
|
HdlDeviceLogic.getInstance().clearInverterHomeId(gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
s += "解绑【本地】成功--->";
|
HdlDeviceLogic.getInstance().delInverterDevice(UserConfigManage.getInstance().getHomeId(), gatewayBean.getDeviceId(), new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
s += "解绑【云端】成功";
|
gsonConvertJsonStr(s);
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
});
|
}
|
break;
|
case "上传oid列表给云端(5)": {
|
if (this.mOidList == null || this.mOidList.size() == 0) {
|
hideLoading();
|
HdlThreadLogic.toast(this, "没有oid列表数据,请先获取逆变器oid列表数据,再重新上传.");
|
return;
|
}
|
HdlDeviceLogic.getInstance().fullUpdateOid(UserConfigManage.getInstance().getHomeId(), this.mOidList, new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
gsonConvertJsonStr(obj);
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
case "获取逆变器下挂设备列表(6)": {
|
HdlDeviceLogic.getInstance().getInverterDeviceChildDeviceList(UserConfigManage.getInstance().getHomeId(), gatewayBean.getOid(), new CloudCallBeak<List<CloudInverterChildDeviceBean>>() {
|
@Override
|
public void onSuccess(List<CloudInverterChildDeviceBean> obj) {
|
gsonConvertJsonStr(obj);
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
case "获取逆变器的信息(7)": {
|
TcpClient.getInstance().sendModBusDataToLinkGateway(gatewayBean.getDevice_mac(), "0000001A", TcpClient.FunctionCode.ReadMultipleRegisters, 550, "8", new ModbusCallBack() {
|
@Override
|
public void onSuccess(int[] data) {
|
gsonConvertJsonStr(data);
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
case "恢复出厂设置(8)": {
|
HdlDeviceLogic.getInstance().initializeGateway("0B37BA09F722EEDF", new LinkCallBack<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
gsonConvertJsonStr(obj);
|
}
|
|
@Override
|
public void onError(HDLLinkException e) {
|
setError(e.getMsg(), e.getCode());
|
}
|
});
|
}
|
break;
|
default: {
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
hideLoading();
|
}
|
}, this, ShowErrorMode.YES);
|
break;
|
}
|
|
}
|
|
}
|
|
private void setError(String msg, int code) {
|
String error = msg + "(" + code + ")";
|
showText(error);
|
}
|
|
private void gsonConvertJsonStr(Object src) {
|
Gson gson = new Gson();
|
String json = gson.toJson(src);
|
showText(json);
|
}
|
|
/**
|
* 回复的数据
|
*
|
* @param s 数据
|
*/
|
private void showText(String s) {
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
hideLoading();
|
String s1 = "数据回复:\r\n" + s;
|
viewBinding.replyContentTv.setText(s1);
|
}
|
}, this, ShowErrorMode.YES);
|
}
|
|
|
/**
|
* @param s 错误信息
|
*/
|
private void TipDialog(String s, Listener listener) {
|
ConfirmationCancelDialog confirmationCancelDialog = new ConfirmationCancelDialog(this);
|
confirmationCancelDialog.setTitle("提示");
|
confirmationCancelDialog.setContent(s);
|
confirmationCancelDialog.setConfirmation("确认");
|
confirmationCancelDialog.setCancel("取消");
|
confirmationCancelDialog.show();
|
confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
|
@Override
|
public void Cancel() {
|
confirmationCancelDialog.dismiss();
|
hideLoading();
|
|
}
|
});
|
confirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
|
@Override
|
public void Confirm() {
|
hideLoading();
|
confirmationCancelDialog.dismiss();
|
if (listener != null) {
|
listener.Confirmation();
|
}
|
|
}
|
});
|
}
|
|
/**
|
* 选择逆变器调试
|
*/
|
public void selectDevice(String homeId) {
|
showLoading();
|
HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(homeId, new CloudCallBeak<List<GatewayBean>>() {
|
@Override
|
public void onSuccess(List<GatewayBean> obj) {
|
hideLoading();
|
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
hideLoading();
|
}
|
});
|
}
|
|
public interface Listener {
|
void Confirmation();
|
}
|
|
|
}
|