| | |
| | | |
| | | |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | | import android.util.Log; |
| | | import android.view.View; |
| | | import android.widget.Button; |
| | | import android.widget.EditText; |
| | | import android.widget.RelativeLayout; |
| | | import android.widget.TextView; |
| | | import android.widget.Toast; |
| | | |
| | | import com.hdl.sdk.ttl.HDLAppliances.Config.HDLApConfig; |
| | | import com.hdl.sdk.ttl.HDLAppliances.HDLCurtain.Parser.CurtainCtrlParser; |
| | | import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo; |
| | | import com.hdl.sdk.ttl.HDLDeviceManger.Core.HDLCommand; |
| | | import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.CurtainDeviceStateEvent; |
| | | import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.CurtainFeedBackEvent; |
| | | import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DeviceStateEvent; |
| | | import com.hdl.sdk.ttl_sdk.R; |
| | |
| | | * 窗帘类模块控制页面 |
| | | */ |
| | | public class CtrlCurtainActivity extends BaseActivity { |
| | | /**Topbar*/ |
| | | /** |
| | | * Topbar |
| | | */ |
| | | private RelativeLayout topBarBack; |
| | | private TextView topBarTitle; |
| | | private Button curtainBtn, curtainBtn2, curtainBtn3, curtainBtn4, curtainBtn5; |
| | | private Button curtainBtn, curtainOpenBtn, curtainCloseBtn, curtainStopBtn, curtainPrecentBtn; |
| | | private Button curtainUp, curtainDown; |
| | | private TextView curText1, curText2; |
| | | private AppliancesInfo appliancesInfo; |
| | | private int curtainState; |
| | | private String showMessage; |
| | | private EditText etPrecent; |
| | | |
| | | /** |
| | | * 复写isRegisterEventBus() 要注册使用EventBus,这里要设置返回true |
| | |
| | | |
| | | private void initView() { |
| | | curtainBtn = findViewById(R.id.curtainbtn); |
| | | curtainBtn2 = findViewById(R.id.curtainbtn2); |
| | | curtainBtn3 = findViewById(R.id.curtainbtn3); |
| | | curtainBtn4 = findViewById(R.id.curtainbtn4); |
| | | curtainBtn5 = findViewById(R.id.curtainbtn5); |
| | | curtainOpenBtn = findViewById(R.id.curtain_openbtn); |
| | | curtainCloseBtn = findViewById(R.id.curtain_closebtn); |
| | | curtainStopBtn = findViewById(R.id.curtain_stopbtn); |
| | | curtainPrecentBtn = findViewById(R.id.curtain_precentbtn); |
| | | curText1 = findViewById(R.id.curtainText1); |
| | | curText2 = findViewById(R.id.curtainText2); |
| | | curtainUp = findViewById(R.id.curtain_upbtn); |
| | | curtainDown = findViewById(R.id.curtain_downbtn); |
| | | etPrecent = findViewById(R.id.et_curtain_precent); |
| | | } |
| | | |
| | | private void initOnClick() { |
| | | /*type: |
| | | 0= HDL 窗帘控制版本V1.0(窗帘号<17 0 = 停止, 1 = 打开, 2 = 关闭 |
| | | 窗帘号>=17 0-100%,表示打开百分比) |
| | | 1=窗帘控制V1.1开关停 |
| | | 2=窗帘控制V1.1百分比 |
| | | 3=窗帘控制V1.1角度向上 |
| | | 4=窗帘控制V1.1角度向下 |
| | | 5=点动*/ |
| | | curtainBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | |
| | | } else { |
| | | curtainState = CurtainCtrlParser.curtainOn; |
| | | } |
| | | HDLCommand.curtainCtrl(appliancesInfo, curtainState); |
| | | //窗帘模块用V1.0 |
| | | HDLCommand.curtainCtrl(appliancesInfo, curtainState, 0); |
| | | |
| | | } |
| | | }); |
| | | |
| | | curtainBtn2.setOnClickListener(new View.OnClickListener() { |
| | | curtainOpenBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | HDLCommand.curtainCtrl(appliancesInfo, CurtainCtrlParser.curtainOn); |
| | | HDLCommand.curtainCtrl(appliancesInfo, CurtainCtrlParser.curtainOn, 1); |
| | | } |
| | | }); |
| | | |
| | | curtainBtn3.setOnClickListener(new View.OnClickListener() { |
| | | curtainCloseBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | HDLCommand.curtainCtrl(appliancesInfo, CurtainCtrlParser.curtainOff); |
| | | HDLCommand.curtainCtrl(appliancesInfo, CurtainCtrlParser.curtainOff, 1); |
| | | } |
| | | }); |
| | | |
| | | curtainBtn4.setOnClickListener(new View.OnClickListener() { |
| | | curtainStopBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | HDLCommand.curtainCtrl(appliancesInfo, CurtainCtrlParser.curtainPause); |
| | | HDLCommand.curtainCtrl(appliancesInfo, CurtainCtrlParser.curtainPause, 1); |
| | | } |
| | | }); |
| | | |
| | | curtainBtn5.setOnClickListener(new View.OnClickListener() { |
| | | curtainPrecentBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | HDLCommand.curtainCtrl(appliancesInfo, 50); |
| | | if (TextUtils.isEmpty(etPrecent.getText().toString())) { |
| | | Toast.makeText(CtrlCurtainActivity.this, "请输入需要控制的窗帘百分比!", Toast.LENGTH_SHORT).show(); |
| | | return; |
| | | } |
| | | |
| | | HDLCommand.curtainCtrl(appliancesInfo, Integer.parseInt(etPrecent.getText().toString()), 2);//50为百分比 |
| | | } |
| | | }); |
| | | |
| | | curtainUp.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | HDLCommand.curtainCtrl(appliancesInfo, 0, 5);//上点动0x00,state固定为0 |
| | | } |
| | | }); |
| | | |
| | | curtainDown.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | HDLCommand.curtainCtrl(appliancesInfo, 128, 5);//上点动0x80,state固定为128 |
| | | } |
| | | }); |
| | | } |
| | |
| | | if (appliancesInfo.getDeviceType() == HDLApConfig.TYPE_CURTAIN_MODULE) { |
| | | //窗帘模块 |
| | | curText2.setVisibility(View.GONE); |
| | | curtainBtn2.setVisibility(View.GONE); |
| | | curtainBtn3.setVisibility(View.GONE); |
| | | curtainBtn4.setVisibility(View.GONE); |
| | | curtainBtn5.setVisibility(View.GONE); |
| | | curtainOpenBtn.setVisibility(View.GONE); |
| | | curtainCloseBtn.setVisibility(View.GONE); |
| | | curtainStopBtn.setVisibility(View.GONE); |
| | | curtainPrecentBtn.setVisibility(View.GONE); |
| | | curtainUp.setVisibility(View.GONE); |
| | | curtainDown.setVisibility(View.GONE); |
| | | |
| | | if (appliancesInfo.getCurState() != null) { |
| | | String stringCurtainState = ""; |
| | |
| | | //开合帘、卷帘 |
| | | curText1.setVisibility(View.GONE); |
| | | curtainBtn.setVisibility(View.GONE); |
| | | curtainUp.setVisibility(View.GONE); |
| | | curtainDown.setVisibility(View.GONE); |
| | | if (appliancesInfo.getCurState() != null) { |
| | | curText2.setText("当前窗帘状态:" + HDLUtlis.getIntegerByObject(appliancesInfo.getCurState())); |
| | | } else { |
| | | curText2.setText("未获取到窗帘模块状态"); |
| | | } |
| | | } else if (appliancesInfo.getDeviceType() == HDLApConfig.TYPE_CURTAIN_SHANGRILA) { |
| | | //香格里拉帘 |
| | | curText1.setVisibility(View.GONE); |
| | | curtainBtn.setVisibility(View.GONE); |
| | | if (appliancesInfo.getCurState() != null) { |
| | | curText2.setText("当前窗帘状态:" + HDLUtlis.getIntegerByObject(appliancesInfo.getCurState())); |
| | | } else { |
| | |
| | | @Subscribe(threadMode = ThreadMode.MAIN) |
| | | public void onCurtainFeedBackInfoEventMain(CurtainFeedBackEvent event) { |
| | | // 先判断是否超时 |
| | | HDLLog.Log("onCurtainFeedBackInfoEventMain in"); |
| | | if (event.getCurtainCtrlBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() |
| | | && event.getCurtainCtrlBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() |
| | | && event.getCurtainCtrlBackInfo().getNum() == appliancesInfo.getChannelNum() |
| | | ) { |
| | | && event.getCurtainCtrlBackInfo().getNum() == appliancesInfo.getChannelNum()) { |
| | | |
| | | if (!event.isSuccess()) { |
| | | showToast("窗帘控制超时,请重新再试"); |
| | |
| | | } |
| | | |
| | | int curState = event.getCurtainCtrlBackInfo().getState(); |
| | | int precent = event.getCurtainCtrlBackInfo().getPrecent(); |
| | | //窗帘模块:curState:0=停止,1=打开,2=关闭。 |
| | | //开合帘电机,卷帘电机:curState:1-100开合度。也会返回0,1,2的状态 |
| | | //开合帘电机,卷帘电机,香格里拉帘:curState:1-100开合度。也会返回0,1,2的状态 |
| | | // precent:1-100开合度 |
| | | //建议开合帘电机,卷帘电机按停止后再读取当前状态来获取当前状态值 |
| | | |
| | | String remarks = event.getCurtainCtrlBackInfo().getRemarks(); |
| | | String parentRemarks = event.getCurtainCtrlBackInfo().getParentRemarks(); |
| | | int num = event.getCurtainCtrlBackInfo().getNum(); |
| | | // showToast(parentRemarks+" 的 "+remarks+" 回路号:"+num+" 返回"+" 状态为:"+curState); |
| | | HDLLog.Log(parentRemarks + " 的 " + remarks + " 回路号:" + num + " 返回" + " 状态为:" + curState); |
| | | HDLLog.Log(remarks + " 回路号:" + num + " 返回" + " 状态为:" + curState); |
| | | if (event.getCurtainCtrlBackInfo().getAppliancesInfo().getDeviceType() == HDLApConfig.TYPE_CURTAIN_MODULE) { |
| | | showMessage = ""; |
| | | //判断是否为窗帘模块 |
| | |
| | | } |
| | | showToast(showMessage); |
| | | } else { |
| | | //开合帘或卷帘 显示百分比 |
| | | // curtainBtn5.setText("窗帘开到" + curState + "%"); |
| | | curText2.setText("窗帘开到" + curState + "%"); |
| | | curtainState = curState; |
| | | //新协议,type=2为百分比 |
| | | if (event.getCurtainCtrlBackInfo().getType() == 2) { |
| | | //开合帘或卷帘 显示百分比 |
| | | curText2.setText("窗帘开到" + precent + "%"); |
| | | curtainState = precent; |
| | | } else if (event.getCurtainCtrlBackInfo().getType() == 0) { |
| | | //开合帘或卷帘 显示百分比 |
| | | curText2.setText("窗帘开到" + curState + "%"); |
| | | curtainState = curState; |
| | | } else { |
| | | //开合帘或卷帘 显示百分比 |
| | | curText2.setText("窗帘开到" + curState + "%"); |
| | | curtainState = curState; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 窗帘新协议状态读取回调Event |
| | | * |
| | | * @param event |
| | | */ |
| | | @Subscribe(threadMode = ThreadMode.MAIN) |
| | | public void onCurtainDeviceStateEventMain(CurtainDeviceStateEvent event) { |
| | | if (event.getCurtainCtrlBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() |
| | | && event.getCurtainCtrlBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() |
| | | && event.getCurtainCtrlBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()) { |
| | | |
| | | if (!event.isSuccess()) { |
| | | showToast("获取窗帘状态失败,请重新再试"); |
| | | return; |
| | | } |
| | | |
| | | int curState = event.getCurtainCtrlBackInfo().getState(); |
| | | int curPrecent = event.getCurtainCtrlBackInfo().getPrecent(); |
| | | //窗帘模块:curState:0=停止,1=打开,2=关闭。 |
| | | //开合帘电机,卷帘电机,香格里拉帘:curState:1-100开合度。也会返回0,1,2的状态 |
| | | // precent:1-100开合度 |
| | | //建议开合帘电机,卷帘电机按停止后再读取当前状态来获取当前状态值 |
| | | |
| | | String remarks = event.getCurtainCtrlBackInfo().getRemarks(); |
| | | int num = event.getCurtainCtrlBackInfo().getNum(); |
| | | HDLLog.Log(remarks + " 回路号:" + num + " 返回" + " 状态为:" + curState); |
| | | |
| | | switch (event.getCurtainCtrlBackInfo().getAppliancesInfo().getDeviceType()) { |
| | | case HDLApConfig.TYPE_CURTAIN_GLYSTRO: |
| | | case HDLApConfig.TYPE_CURTAIN_ROLLER: |
| | | case HDLApConfig.TYPE_CURTAIN_SHANGRILA: |
| | | if (event.getCurtainCtrlBackInfo().getType() == 2) {//新协议,type=2为百分比 |
| | | //开合帘或卷帘 显示百分比 |
| | | int precent = event.getCurtainCtrlBackInfo().getPrecent(); |
| | | showMessage = "窗帘开到" + precent + "%"; |
| | | curText2.setText(showMessage); |
| | | showToast("获取成功:" + showMessage); |
| | | } else if (event.getCurtainCtrlBackInfo().getType() == 0) {//旧协议,type=0为百分比 |
| | | //开合帘或卷帘 显示百分比 |
| | | int state = event.getCurtainCtrlBackInfo().getState(); |
| | | showMessage = "窗帘开到" + state + "%"; |
| | | curText2.setText(showMessage); |
| | | showToast("获取成功:" + showMessage); |
| | | } |
| | | |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | case HDLApConfig.TYPE_CURTAIN_GLYSTRO: |
| | | case HDLApConfig.TYPE_CURTAIN_ROLLER: |
| | | case HDLApConfig.TYPE_CURTAIN_MODULE: |
| | | case HDLApConfig.TYPE_CURTAIN_SHANGRILA: |
| | | if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) { |
| | | if (!event.isSuccess()) { |
| | | showToast("获取窗帘状态失败,请重新再试"); |
| | |
| | | } |
| | | } else { |
| | | showMessage = "窗帘开到" + curState + "%"; |
| | | // curtainBtn5.setText(showMessage); |
| | | curText2.setText(showMessage); |
| | | curtainState = curState; |
| | | } |
| | | |
| | |
| | | } |
| | | break; |
| | | default: |
| | | //不处理 |
| | | break; |
| | | } |
| | | } |