package com.hdl.sdk.ttl_sdk.activity;
|
|
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.view.View;
|
import android.widget.Button;
|
import android.widget.EditText;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
|
import com.hdl.sdk.ttl.HDLAppliances.Config.HDLApConfig;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLFreshAir.FreshAirJinMaoBackInfo;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLFreshAir.Parser.FreshAirJinMaoParser;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Core.HDLCommand;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.FreshAirJinMaoFeedBackEvent;
|
import com.hdl.sdk.ttl_sdk.R;
|
import com.hdl.sdk.ttl_sdk.base.BaseActivity;
|
import com.hdl.sdk.ttl_sdk.utlis.HDLLog;
|
|
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.ThreadMode;
|
|
|
/**
|
* 金茂新风设备
|
* * 开关 0-关机,1-开机
|
* * 运行模式 1-通风,2-加湿
|
* * 节能舒适选择 1-舒适,2-节能
|
* * 风速档位 0-自动,1-低速,2-中速,3-高速
|
*/
|
public class FreshAirJinMaoActivity extends BaseActivity {
|
/**
|
* Topbar
|
*/
|
private RelativeLayout topBarBack;
|
private TextView topBarTitle;
|
|
private TextView tv_nowInTemp, tv_nowInHumidty, tv_filterRemaining, tv_timeout;
|
private Button btn_switch, btn_mode, btn_mode2, btn_speed, btn_setHumidty;
|
private TextView mesText;
|
private EditText et_Humidty;
|
private AppliancesInfo appliancesInfo;
|
|
|
private int switchState;//Demo仅以此作为演示,实际请根据需求开发设计
|
private int modeState;//运行模式状态
|
private int mode2State;//节能模式状态
|
private int speedState;
|
private int humidtyState;
|
|
|
/**
|
* 复写isRegisterEventBus() 要注册使用EventBus,这里要设置返回true
|
*
|
* @return true
|
*/
|
@Override
|
protected boolean isRegisterEventBus() {
|
return true;
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_ctrl_jinmao_freshair);
|
initToolbar();
|
initView();
|
initOnClick();
|
initcurState();
|
showStateView();
|
|
HDLCommand.getFreshAirDeviceStateFromNetwork(appliancesInfo);
|
|
// HDLCommand.getHVACDeviceStateFromNetwork(appliancesInfo);
|
}
|
|
|
/**
|
* 初始化Toolbar
|
*/
|
private void initToolbar() {
|
topBarBack = findViewById(R.id.ll_top_b_left);
|
setViewVisible(topBarBack);
|
topBarTitle = findViewById(R.id.tv_top_b_header_title);
|
topBarBack.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
finish();
|
}
|
});
|
}
|
|
private void initcurState() {
|
appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl");
|
String titleStr = appliancesInfo.getRemarks();
|
topBarTitle.setText(titleStr);
|
}
|
|
|
private void initView() {
|
tv_nowInTemp = findViewById(R.id.tv_nowInTemp);
|
tv_nowInHumidty = findViewById(R.id.tv_nowInHumidty);
|
tv_filterRemaining = findViewById(R.id.tv_filterRemaining);
|
tv_timeout = findViewById(R.id.tv_timeout);
|
mesText = findViewById(R.id.mesText);
|
|
|
btn_switch = findViewById(R.id.btn_switch);
|
btn_mode = findViewById(R.id.btn_mode);
|
btn_mode2 = findViewById(R.id.btn_mode2);
|
btn_speed = findViewById(R.id.btn_speed);
|
btn_setHumidty = findViewById(R.id.btn_setHumidty);
|
|
et_Humidty = findViewById(R.id.et_Humidty);
|
|
}
|
|
private void initOnClick() {
|
/**
|
* 开关状态控制
|
*/
|
btn_switch.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
//演示当前状态为关,设置为开。开,设置为关。
|
if (switchState == FreshAirJinMaoParser.freshAirOff) {
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSwich, FreshAirJinMaoParser.freshAirOn);//打开
|
} else {
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSwich, FreshAirJinMaoParser.freshAirOff);//关闭
|
}
|
}
|
});
|
|
/**
|
* 运行模式控制
|
*/
|
btn_mode.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
switch (modeState) {
|
case FreshAirJinMaoParser.freshAirModeVentilation:
|
//若当前新风运行模式为通风,则点击按钮设置为加湿
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetMode, FreshAirJinMaoParser.freshAirModeHumidify);
|
break;
|
case FreshAirJinMaoParser.freshAirModeHumidify:
|
//若当前新风运行模式为加湿,则点击按钮设置为通风
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetMode, FreshAirJinMaoParser.freshAirModeVentilation);
|
break;
|
default:
|
//设置为通风模式
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetMode, FreshAirJinMaoParser.freshAirModeVentilation);
|
break;
|
}
|
|
}
|
});
|
|
/**
|
* 节能舒适模式控制
|
*/
|
btn_mode2.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
switch (mode2State) {
|
case FreshAirJinMaoParser.energySavingModeComfortable:
|
//若当前新风为舒适,则点击按钮设置为节能
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetEnergySavingMode, FreshAirJinMaoParser.energySavingModeEs);
|
break;
|
case FreshAirJinMaoParser.energySavingModeEs:
|
//若当前新风为节能,则点击按钮设置为舒适
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetEnergySavingMode, FreshAirJinMaoParser.energySavingModeComfortable);
|
break;
|
default:
|
//设置为舒适模式
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetEnergySavingMode, FreshAirJinMaoParser.energySavingModeComfortable);
|
break;
|
}
|
|
}
|
});
|
|
|
/**
|
* 风速档位设置
|
*/
|
btn_speed.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
switch (speedState) {
|
case FreshAirJinMaoParser.freshAirSpeedAuto:
|
//若当前风速为自动,则点击按钮设置为低速
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSpeed, FreshAirJinMaoParser.freshAirSpeed1);
|
break;
|
case FreshAirJinMaoParser.freshAirSpeed1:
|
//若当前风速为低速,则点击按钮设置为中速
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSpeed, FreshAirJinMaoParser.freshAirSpeed2);
|
break;
|
case FreshAirJinMaoParser.freshAirSpeed2:
|
//若当前风速为中速,则点击按钮设置为高速
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSpeed, FreshAirJinMaoParser.freshAirSpeed3);
|
break;
|
case FreshAirJinMaoParser.freshAirSpeed3:
|
//若当前风速为高速,则点击按钮设置为自动
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSpeed, FreshAirJinMaoParser.freshAirSpeedAuto);
|
break;
|
default:
|
//设置为自动
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetSpeed, FreshAirJinMaoParser.freshAirSpeedAuto);
|
break;
|
|
}
|
}
|
});
|
|
/**
|
* 湿度设置
|
*/
|
btn_setHumidty.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
String mHumidtyStr = et_Humidty.getText().toString();
|
if (TextUtils.isEmpty(mHumidtyStr)) {
|
showToast("设置的湿度不能为空");
|
return;
|
}
|
int mHumidtyInt = Integer.parseInt(mHumidtyStr);
|
|
if (mHumidtyInt < 0 || mHumidtyInt > 100) {
|
showToast("湿度设置范围为:0~100%");
|
return;
|
}
|
|
HDLCommand.freshAirJinMaoCtrl(appliancesInfo, FreshAirJinMaoParser.SetHumidty, mHumidtyInt);
|
|
|
}
|
});
|
|
|
}
|
|
/**
|
*
|
*/
|
private void showStateView() {
|
if (appliancesInfo.getArrCurState() != null) {
|
FreshAirJinMaoBackInfo mFreshAirJinMaoBackInfo = new FreshAirJinMaoBackInfo(appliancesInfo);
|
showFreshAirJinMaoBackInfo(mFreshAirJinMaoBackInfo);
|
} else {
|
mesText.setText("未获取到新风状态");
|
}
|
}
|
|
/**
|
* 刷新设备状态
|
*/
|
private void refreshState(FreshAirJinMaoBackInfo mFreshAirJinMaoBackInfo) {
|
switchState = mFreshAirJinMaoBackInfo.getIsOn();
|
modeState = mFreshAirJinMaoBackInfo.getFreshAirMode();
|
mode2State = mFreshAirJinMaoBackInfo.getEnergySavingMode();
|
speedState = mFreshAirJinMaoBackInfo.getFreshAirSpeed();
|
humidtyState = mFreshAirJinMaoBackInfo.getSetHumidty();
|
|
|
tv_nowInTemp.setText(mFreshAirJinMaoBackInfo.getNowInTemp() + "℃");
|
tv_nowInHumidty.setText(mFreshAirJinMaoBackInfo.getNowInHumidty() + "%");
|
tv_filterRemaining.setText(mFreshAirJinMaoBackInfo.getFilterRemaining() + "%");
|
String timeoutStateStr = mFreshAirJinMaoBackInfo.getUseTimeoutState() > 0 ? "超时,请更换" : "正常";
|
tv_timeout.setText(timeoutStateStr);
|
if (mFreshAirJinMaoBackInfo.getUseTimeoutState() > 0) {
|
showToast("报警信息:滤网使用超时,需要更换!");
|
}
|
}
|
|
/**
|
* getModeStateString
|
*
|
* @param mState
|
* @return
|
*/
|
private String getModeStateString(int mState) {
|
String mStrState = "未知";
|
modeState = mState; //更新模式状态
|
switch (mState) {
|
case 1:
|
mStrState = "运行模式:通风";
|
break;
|
case 2:
|
mStrState = "运行模式:加湿";
|
break;
|
default:
|
mStrState = "未知运行模式";
|
break;
|
}
|
return mStrState;
|
}
|
|
/**
|
* @param mState
|
* @return
|
*/
|
private String getMode2StateString(int mState) {
|
String mStrState = "未知";
|
mode2State = mState; //更新节能模式状态
|
switch (mState) {
|
case 1:
|
mStrState = "节能模式:舒适";
|
break;
|
case 2:
|
mStrState = "节能模式:节能";
|
break;
|
default:
|
mStrState = "未知节能模式";
|
break;
|
}
|
return mStrState;
|
}
|
|
/**
|
* getSpeedStateString
|
*
|
* @param mState
|
* @return
|
*/
|
private String getSpeedStateString(int mState) {
|
String mStrState = "未知";
|
speedState = mState; //更新当前风速状态
|
switch (mState) {
|
case 0:
|
mStrState = "风速:自动";
|
break;
|
case 1:
|
mStrState = "风速:低速";
|
break;
|
case 2:
|
mStrState = "风速:中速";
|
break;
|
case 3:
|
mStrState = "风速:高速";
|
break;
|
|
default:
|
mStrState = "未知风速状态";
|
break;
|
}
|
return mStrState;
|
}
|
|
|
/**
|
* getSwichStateString
|
*
|
* @param mState
|
* @return
|
*/
|
private String getSwichStateString(int mState) {
|
String mStrState = "未知";
|
switchState = mState; //更新开关状态
|
switch (mState) {
|
case FreshAirJinMaoParser.freshAirOn:
|
mStrState = "新风:打开";
|
break;
|
case FreshAirJinMaoParser.freshAirOff:
|
mStrState = "新风:关闭";
|
break;
|
|
default:
|
mStrState = "未知状态";
|
break;
|
}
|
return mStrState;
|
}
|
|
|
/**
|
* 处理设备状态
|
*
|
* @param mFreshAirJinMaoBackInfo
|
*/
|
private void showFreshAirJinMaoBackInfo(FreshAirJinMaoBackInfo mFreshAirJinMaoBackInfo) {
|
if (mFreshAirJinMaoBackInfo != null) {
|
String message = "";
|
if (mFreshAirJinMaoBackInfo.getIsOn() == FreshAirJinMaoParser.freshAirOn) {
|
message = getSwichStateString(mFreshAirJinMaoBackInfo.getIsOn());
|
message += "\n" + getModeStateString(mFreshAirJinMaoBackInfo.getFreshAirMode());//运行模式
|
message += "\n" + getMode2StateString(mFreshAirJinMaoBackInfo.getEnergySavingMode());//节能模式
|
message += "\n" + getSpeedStateString(mFreshAirJinMaoBackInfo.getFreshAirSpeed());//风速
|
message += "\n当前设置湿度:" + mFreshAirJinMaoBackInfo.getSetHumidty();//当前湿度设置值
|
refreshState(mFreshAirJinMaoBackInfo);
|
} else {
|
message = getSwichStateString(mFreshAirJinMaoBackInfo.getIsOn());
|
}
|
mesText.setText(message);
|
showToast(message);
|
HDLLog.Log(message);
|
} else {
|
mesText.setText("未获取到新风状态");
|
}
|
}
|
|
|
/**
|
* 新风控制回调Event
|
*
|
* @param event
|
*/
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onFreshAirJinMaoFeedBackEventEventMain(FreshAirJinMaoFeedBackEvent event) {
|
if (event.getFreshAirJinMaoBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
&& event.getFreshAirJinMaoBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.getFreshAirJinMaoBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()) {
|
//先判断是否超时
|
if (!event.isSuccess()) {
|
showToast("新风控制超时,请重新再试");
|
return;
|
}
|
FreshAirJinMaoBackInfo mFreshAirJinMaoBackInfo = event.getFreshAirJinMaoBackInfo();
|
showFreshAirJinMaoBackInfo(mFreshAirJinMaoBackInfo);
|
|
}
|
}
|
|
/**
|
* 获取单一设备状态回调Event
|
*
|
* @param event
|
*/
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onDeviceStateEventMain(DeviceStateEvent event) {
|
if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
) {
|
//这个返回的信息是当前状态的
|
switch (event.getAppliancesInfo().getDeviceType()) {
|
case HDLApConfig.TYPE_FRESH_AIR_JINMAO:
|
if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) {
|
if (!event.isSuccess()) {
|
showToast("获取新风状态失败,请重新再试");
|
return;
|
}
|
FreshAirJinMaoBackInfo mFreshAirJinMaoBackInfo = new FreshAirJinMaoBackInfo(event.getAppliancesInfo());
|
|
if (mFreshAirJinMaoBackInfo == null) {
|
showToast("获取新风状态失败,请重新再试");
|
return;
|
}
|
showFreshAirJinMaoBackInfo(mFreshAirJinMaoBackInfo);
|
}
|
break;
|
default:
|
//不处理
|
break;
|
}
|
}
|
}
|
|
|
}
|