| | |
| | | |
| | | /** |
| | | * 处理HVAC 控制回调 |
| | | * 2019-8-6 |
| | | * 2021-08-10 |
| | | * |
| | | * @param getDatas |
| | | */ |
| | |
| | | && infos.get(j).getDeviceType() == HDLApConfig.TYPE_AC_HVAC |
| | | && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) { |
| | | |
| | | // // |
| | | // devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes); |
| | | // AppliancesInfo mHvacAirInfo = devicesDataList.get(i).getAppliancesInfoList().get(j); |
| | | // AirHVACBackInfo info = new AirHVACBackInfo(mHvacAirInfo); |
| | | // setDeviceCtrlSuccessStateWithInfo(infos.get(j), true); |
| | | // EventBus.getDefault().post(new AirHVACFeedBackEvent(info, true)); |
| | | |
| | | |
| | | //2021-08-10 ,改回AirFeedBackEvent通知回调 |
| | | setDeviceCtrlSuccessStateWithInfo(infos.get(j), true); |
| | | devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes); |
| | | AppliancesInfo mHvacAirInfo = devicesDataList.get(i).getAppliancesInfoList().get(j); |
| | | AirHVACBackInfo info = new AirHVACBackInfo(mHvacAirInfo); |
| | | setDeviceCtrlSuccessStateWithInfo(infos.get(j), true); |
| | | EventBus.getDefault().post(new AirHVACFeedBackEvent(info, true)); |
| | | |
| | | if (getDatas.addBytes.length > 12) { |
| | | //解析最新的状态 |
| | | byte indoorTemp = getDatas.addBytes[2]; |
| | | byte refTemp = getDatas.addBytes[3];//制冷温度点 0-84 |
| | | byte heatTemp = getDatas.addBytes[4];//制热温度点 0-84 |
| | | byte autoTemp = getDatas.addBytes[5];//自动温度点 0-84 |
| | | byte wettedTemp = getDatas.addBytes[6];//抽湿温度点 0-84 |
| | | byte isOn = getDatas.addBytes[8]; |
| | | byte airMode = getDatas.addBytes[9]; |
| | | byte airSpeed = getDatas.addBytes[10]; |
| | | //目前接收到数据 都通知一次最新的状态 |
| | | //1.回调开关状态 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{AirCtrlParser.airSwich, isOn}); |
| | | //2.回调 室内温度状态 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte)AirCtrlParser.airIndoorTemp, indoorTemp}); |
| | | //3.回调 空调模式 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte)AirCtrlParser.airMode, airMode}); |
| | | //4.回调 当前模式对应的温度,也可以改为通知所有模式的温度 |
| | | byte[] curAirInfo = {0,0}; |
| | | switch (airMode) { |
| | | case 0: |
| | | curAirInfo = new byte[]{AirCtrlParser.refTem, refTemp}; |
| | | break; |
| | | case 1: |
| | | curAirInfo = new byte[]{AirCtrlParser.heatTem, heatTemp}; |
| | | break; |
| | | case 2: |
| | | //通风模式没有温度 |
| | | // curAirInfo = new byte[]{AirCtrlParser.airTemp, newAirTem}; |
| | | break; |
| | | case 3: |
| | | curAirInfo = new byte[]{AirCtrlParser.autoTem, autoTemp}; |
| | | break; |
| | | case 4: |
| | | curAirInfo = new byte[]{AirCtrlParser.dehumTem, wettedTemp}; |
| | | break; |
| | | } |
| | | sendAirFeedBackEvent(mHvacAirInfo, curAirInfo); |
| | | //5.回调 空调风速 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte)AirCtrlParser.airSpeed, airSpeed}); |
| | | } |
| | | |
| | | devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes); |
| | | break outter; |
| | | } |
| | | // else { |
| | | // HDLLog.E("控制HVAC状态反馈数据异常"); |
| | | // } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 2021-08-10 |
| | | * 发送通知 空调状态 |
| | | */ |
| | | private static void sendAirFeedBackEvent(AppliancesInfo mHvacAirInfo, byte[] curStateBytes){ |
| | | AirCtrlBackInfo backInfo1 = new AirCtrlBackInfo(); |
| | | backInfo1.setAppliancesInfo(mHvacAirInfo); |
| | | backInfo1.setCurState(curStateBytes); |
| | | EventBus.getDefault().post(new AirFeedBackEvent(backInfo1, true)); |
| | | } |
| | | |
| | | /** |
| | | * 读取HVAC状态反馈 |
| | | * |
| | | * 2021-08-10 |
| | | * 读取HVAC状态反馈也通过AirFeedBackEvent回调 |
| | | * @param getDatas |
| | | */ |
| | | private static void handleHVACStateData(UdpDataBean getDatas) { |
| | |
| | | && infos.get(j).getDeviceType() == HDLApConfig.TYPE_AC_HVAC |
| | | && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {//2019-8-6 |
| | | |
| | | // isGetDeviceStateSuccess = true; |
| | | // devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes); |
| | | // EventBus.getDefault().post(new DeviceStateEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), true)); |
| | | |
| | | //改回旧方案 所有状态分开通知 |
| | | isGetDeviceStateSuccess = true; |
| | | devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes); |
| | | EventBus.getDefault().post(new DeviceStateEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), true)); |
| | | |
| | | AppliancesInfo mHvacAirInfo = devicesDataList.get(i).getAppliancesInfoList().get(j); |
| | | byte[] curAirInfo = new byte[]{0}; |
| | | if (getDatas.addBytes.length > 12) { |
| | | //解析最新的状态 |
| | | byte indoorTemp = getDatas.addBytes[2]; |
| | | byte refTemp = getDatas.addBytes[3];//制冷温度点 0-84 |
| | | byte heatTemp = getDatas.addBytes[4];//制热温度点 0-84 |
| | | byte autoTemp = getDatas.addBytes[5];//自动温度点 0-84 |
| | | byte wettedTemp = getDatas.addBytes[6];//抽湿温度点 0-84 |
| | | byte isOn = getDatas.addBytes[8]; |
| | | byte airMode = getDatas.addBytes[9]; |
| | | byte airSpeed = getDatas.addBytes[10]; |
| | | //1.回调开关状态 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{AirCtrlParser.airSwich, isOn}); |
| | | //2.回调 室内温度状态 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte) AirCtrlParser.airIndoorTemp, indoorTemp}); |
| | | //3.回调 空调模式 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte) AirCtrlParser.airMode, airMode}); |
| | | //4.回调 当前模式对应的温度 |
| | | switch (airMode) { |
| | | case 0: |
| | | curAirInfo = new byte[]{AirCtrlParser.refTem, refTemp}; |
| | | break; |
| | | case 1: |
| | | curAirInfo = new byte[]{AirCtrlParser.heatTem, heatTemp}; |
| | | break; |
| | | case 2: |
| | | //通风模式没有温度 |
| | | // curAirInfo = new byte[]{AirCtrlParser.airTemp, newAirTem}; |
| | | break; |
| | | case 3: |
| | | curAirInfo = new byte[]{AirCtrlParser.autoTem, autoTemp}; |
| | | break; |
| | | case 4: |
| | | curAirInfo = new byte[]{AirCtrlParser.dehumTem, wettedTemp}; |
| | | break; |
| | | } |
| | | sendAirFeedBackEvent(mHvacAirInfo, curAirInfo); |
| | | //5.回调 空调风速 |
| | | sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte) AirCtrlParser.airSpeed, airSpeed}); |
| | | } |
| | | |
| | | |
| | | break outter; |
| | | } else { |
| | | HDLLog.info("handleHVACStateData 没有找到匹配类型"); |